diff --git a/wsexample/server/pom.xml b/wsexample/server/pom.xml deleted file mode 100644 index 2bdf8d0f..00000000 --- a/wsexample/server/pom.xml +++ /dev/null @@ -1,237 +0,0 @@ - - - - - 4.0.0 - com.google.code.gson - wsexampleserver - jar - 0.1 - Gson Web Service Example Client - An example for Writing Clients for JSON based Web-services - - - local.repo - file repository to svn - file://${basedir}/../../../mavenrepo - - - - - gson - http://google-gson.googlecode.com/svn/mavenrepo - - true - - - true - - - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - scm:svn:http://google-gson.googlecode.com/svn/trunk/wsexample/server - scm:svn:https://google-gson.googlecode.com/svn/trunk/wsexample/server - http://google-gson.codegoogle.com/svn/trunk/wsexample/server - - - Google Code Issue Tracking - http://code.google.com/p/google-gson/issues/list - - - - - - - com.google.code.gson - gson - 1.5 - compile - - - com.google.code.greaze - greaze-definition - 0.5 - compile - - - com.google.code.gson - wsf - 0.1 - compile - - - com.google.code.gson - wsexampledef - 0.1 - compile - - - - - javax.servlet - servlet-api - 2.4 - provided - - - - junit - junit - 3.8.2 - test - - - - - wsexampleserver - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.6 - 1.6 - - - - org.apache.maven.plugins - maven-eclipse-plugin - - true - true - ../../eclipse-ws - file:///${basedir}/../../lib/gson-formatting-styles.xml - 1.5 - - - - org.apache.maven.plugins - maven-install-plugin - - - - org.mortbay.jetty - maven-jetty-plugin - - 10 - - - - org.apache.maven.plugins - maven-jxr-plugin - - - - org.apache.maven.plugins - maven-source-plugin - - - attach-sources - verify - - jar - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - - src/main/resources/javadoc-descriptor.xml - - http://java.sun.com/j2se/1.5.0/docs/api/ - - true - true - public - - - - org.apache.maven.plugins - maven-pmd-plugin - - 1.5 - - /rulesets/basic.xml - /rulesets/imports.xml - /rulesets/unusedcode.xml - /rulesets/finalizers.xml - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - - - config/maven_checks.xml - - - - org.codehaus.mojo - taglist-maven-plugin - - - TODO - @todo - FIXME - XXX - - - - - org.codehaus.mojo - cobertura-maven-plugin - - - clean - - clean - - - - - - org.apache.maven.plugins - maven-release-plugin - - -DenableCiProfile=true - - - - maven-assembly-plugin - - src/main/resources/assembly-descriptor.xml - wsexampleserver-${version} - target/dist - target/assembly/work - - - - - - - Inderjeet Singh - Google Inc. - - - diff --git a/wsexample/server/src/main/java/com/google/gson/wsexample/server/MainServlet.java b/wsexample/server/src/main/java/com/google/gson/wsexample/server/MainServlet.java deleted file mode 100644 index ac6f9482..00000000 --- a/wsexample/server/src/main/java/com/google/gson/wsexample/server/MainServlet.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.google.gson.wsexample.server; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import com.google.greaze.definition.CallPath; - -/** - * An example servlet that receives JSON web-service requests - * - * @author inder - */ -@SuppressWarnings("serial") -public class MainServlet extends HttpServlet { - private final RestDispatcher restDispatcher; - private final ProcedureDispatcher procedureDispatcher; - - public MainServlet() { - this.restDispatcher = new RestDispatcher(); - this.procedureDispatcher = new ProcedureDispatcher(); - } - - @Override - public void service(HttpServletRequest req, HttpServletResponse res) { - String servletPath = req.getServletPath(); - int index = "/wsexampleserver".length(); - CallPath callPath = new CallPath(servletPath.substring(index)); - String path = callPath.get(); - if (path.startsWith("/rest")) { - restDispatcher.service(req, res, callPath); - } else if (path.startsWith("/procedure")) { - procedureDispatcher.service(req, res); - } - } -} diff --git a/wsexample/server/src/main/java/com/google/gson/wsexample/server/ProcedureDispatcher.java b/wsexample/server/src/main/java/com/google/gson/wsexample/server/ProcedureDispatcher.java deleted file mode 100644 index 01d25703..00000000 --- a/wsexample/server/src/main/java/com/google/gson/wsexample/server/ProcedureDispatcher.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.google.gson.wsexample.server; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import com.google.greaze.definition.HeaderMap; -import com.google.greaze.definition.webservice.RequestBody; -import com.google.greaze.definition.webservice.RequestBodyGsonConverter; -import com.google.greaze.definition.webservice.RequestSpec; -import com.google.greaze.definition.webservice.ResponseBody; -import com.google.greaze.definition.webservice.ResponseBodyGsonConverter; -import com.google.greaze.definition.webservice.ResponseSpec; -import com.google.greaze.definition.webservice.WebServiceCallSpec; -import com.google.greaze.definition.webservice.WebServiceRequest; -import com.google.greaze.definition.webservice.WebServiceResponse; -import com.google.greaze.example.definition.model.Cart; -import com.google.greaze.example.definition.model.Order; -import com.google.greaze.example.definition.model.TypedKeys; -import com.google.greaze.example.definition.service.SampleJsonService; -import com.google.greaze.webservice.server.RequestReceiver; -import com.google.greaze.webservice.server.ResponseSender; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -/** - * A dispatcher for all the procedural calls - * - * @author Inderjeet Singh - */ -public final class ProcedureDispatcher { - public void service(HttpServletRequest req, HttpServletResponse res) { - WebServiceCallSpec spec = SampleJsonService.PLACE_ORDER; - RequestSpec requestSpec = spec.getRequestSpec(); - ResponseSpec responseSpec = spec.getResponseSpec(); - Gson gson = new GsonBuilder() - .registerTypeAdapter(RequestBody.class, - new RequestBodyGsonConverter(requestSpec.getBodySpec())) - .registerTypeAdapter(ResponseBody.class, - new ResponseBodyGsonConverter(responseSpec.getBodySpec())) - .create(); - RequestReceiver requestReceiver = new RequestReceiver(gson, requestSpec); - WebServiceRequest webServiceRequest = requestReceiver.receive(req); - - Cart cart = webServiceRequest.getBody().get(TypedKeys.RequestBody.CART); - String authToken = webServiceRequest.getHeader(TypedKeys.Request.AUTH_TOKEN); - - Order order = placeOrder(cart, authToken); - - // Empty headers per the spec - HeaderMap responseHeaders = new HeaderMap.Builder(responseSpec.getHeadersSpec()).build(); - ResponseBody responseBody = new ResponseBody.Builder(responseSpec.getBodySpec()) - .put(TypedKeys.ResponseBody.ORDER, order) - .build(); - WebServiceResponse response = new WebServiceResponse(responseHeaders, responseBody); - ResponseSender responseSender = new ResponseSender(gson); - responseSender.send(res, response); - } - - private Order placeOrder(Cart cart, String authToken) { - // Create an order, in this case a dummy one. - return new Order(cart, "Order123"); - } -} diff --git a/wsexample/server/src/main/java/com/google/gson/wsexample/server/RestDispatcher.java b/wsexample/server/src/main/java/com/google/gson/wsexample/server/RestDispatcher.java deleted file mode 100644 index 2b426e99..00000000 --- a/wsexample/server/src/main/java/com/google/gson/wsexample/server/RestDispatcher.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.google.gson.wsexample.server; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import com.google.greaze.definition.CallPath; -import com.google.greaze.definition.rest.IDFactory; -import com.google.greaze.definition.rest.MetaData; -import com.google.greaze.definition.rest.ResourceMap; -import com.google.greaze.definition.rest.RestCallSpec; -import com.google.greaze.definition.rest.RestRequest; -import com.google.greaze.definition.rest.RestResponse; -import com.google.greaze.definition.rest.ValueBasedId; -import com.google.greaze.example.definition.model.Cart; -import com.google.greaze.example.definition.model.Order; -import com.google.greaze.example.definition.service.ServicePaths; -import com.google.greaze.rest.server.Repository; -import com.google.greaze.rest.server.RepositoryInMemory; -import com.google.greaze.rest.server.ResponseBuilderMap; -import com.google.greaze.rest.server.RestRequestReceiver; -import com.google.greaze.rest.server.RestResponseBuilder; -import com.google.greaze.rest.server.RestResponseSender; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -/** - * A dispatcher for all the REST requests - * - * @author Inderjeet Singh - */ -public final class RestDispatcher { - private static final double CURRENT_VERSION = 1D; - private final ResourceMap resourceMap; - private final ResponseBuilderMap responseBuilders; - private final RestCallSpec cartSpec; - private final RestCallSpec orderSpec; - private final Gson gson; - - public RestDispatcher() { - this.cartSpec = new RestCallSpec.Builder(ServicePaths.CART.getCallPath(), Cart.class) - .setVersion(CURRENT_VERSION) - .build(); - this.orderSpec = new RestCallSpec.Builder(ServicePaths.CART.getCallPath(), Cart.class) - .setVersion(CURRENT_VERSION) - .build(); - this.resourceMap = new ResourceMap.Builder() - .set(ServicePaths.CART.getCallPath(), cartSpec) - .set(ServicePaths.ORDER.getCallPath(), orderSpec) - .build(); - gson = new GsonBuilder() - .setVersion(CURRENT_VERSION) - .registerTypeAdapter(ValueBasedId.class, new ValueBasedId.GsonTypeAdapter()) - .registerTypeAdapter(MetaData.class, new MetaData.GsonTypeAdapter()) - .create(); - Repository, Cart> carts = - new RepositoryInMemory, Cart>(ValueBasedId.class, Cart.class); - Repository, Order> orders = - new RepositoryInMemory, Order>(ValueBasedId.class, Order.class); - responseBuilders = new ResponseBuilderMap.Builder() - .set(cartSpec.getResourceType(), new RestResponseBuilder, Cart>(carts)) - .set(orderSpec.getResourceType(), new RestResponseBuilder, Order>(orders)) - .build(); - } - - public IDFactory> getIDFactory(RestCallSpec callSpec) { - return new IDFactory>(ValueBasedId.class, callSpec.getResourceType()); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - public RestRequest getRestRequest(Gson gson, RestCallSpec callSpec, CallPath callPath, - HttpServletRequest request, IDFactory> idFactory) { - RestRequestReceiver requestReceiver = new RestRequestReceiver(gson, callSpec.getRequestSpec()); - return requestReceiver.receive(request, idFactory.createId(callPath.getResourceId())); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - public void service(HttpServletRequest req, HttpServletResponse res, CallPath callPath) { - RestCallSpec callSpec = resourceMap.get(callPath).createCopy(callPath); - @SuppressWarnings("rawtypes") - RestRequestReceiver requestReceiver = new RestRequestReceiver(gson, callSpec.getRequestSpec()); - IDFactory> idFactory = getIDFactory(callSpec); - RestRequest restRequest = getRestRequest(gson, callSpec, callPath, req, idFactory); - RestResponse.Builder response = new RestResponse.Builder(callSpec.getResponseSpec()); - RestResponseBuilder responseBuilder = responseBuilders.get(callSpec.getResourceType()); - responseBuilder.buildResponse(callSpec, restRequest, response); - RestResponse restResponse = response.build(); - RestResponseSender responseSender = new RestResponseSender(gson); - responseSender.send(res, restResponse); - } -}