Author: amilas Date: Tue Apr 2 10:45:25 2013 New Revision: 1463475 URL: http://svn.apache.org/r1463475 Log: appliying patch for AXIS2-5417
Added: axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java axis/axis2/java/core/trunk/modules/json/test-repository/services/JSONPOJOService.aar/ axis/axis2/java/core/trunk/modules/json/test-repository/services/JSONPOJOService.aar/META-INF/ axis/axis2/java/core/trunk/modules/json/test-repository/services/JSONPOJOService.aar/META-INF/services.xml axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/UtilTest.java axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/ axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/JSONPOJOService.java axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/JSONRPCIntegrationTest.java axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/Person.java Removed: axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/factory/JsonUtils.java Modified: axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/JSONXMLStreamAPITest.java Modified: axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java?rev=1463475&r1=1463474&r2=1463475&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java (original) +++ axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java Tue Apr 2 10:45:25 2013 @@ -25,6 +25,7 @@ import org.apache.axis2.AxisFault; import org.apache.axis2.context.MessageContext; import org.apache.axis2.engine.MessageReceiver; import org.apache.axis2.handlers.AbstractHandler; +import org.apache.axis2.json.gson.rpc.JsonInOnlyRPCMessageReceiver; import org.apache.axis2.json.gson.rpc.JsonRpcMessageReceiver; import org.apache.axis2.json.gson.factory.JsonConstant; import org.apache.axis2.wsdl.WSDLConstants; @@ -58,7 +59,7 @@ public class JSONMessageHandler extends public InvocationResponse invoke(MessageContext msgContext) throws AxisFault { MessageReceiver messageReceiver = msgContext.getAxisOperation().getMessageReceiver(); - if (messageReceiver instanceof JsonRpcMessageReceiver) { + if (messageReceiver instanceof JsonRpcMessageReceiver || messageReceiver instanceof JsonInOnlyRPCMessageReceiver) { // do not need to parse XMLSchema list, as this message receiver will not use GsonXMLStreamReader to read the inputStream. } else { Object tempObj = msgContext.getProperty(JsonConstant.IS_JSON_STREAM); Modified: axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java?rev=1463475&r1=1463474&r2=1463475&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java (original) +++ axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java Tue Apr 2 10:45:25 2013 @@ -25,7 +25,6 @@ import org.apache.axis2.context.MessageC import org.apache.axis2.description.AxisOperation; import org.apache.axis2.json.gson.GsonXMLStreamReader; import org.apache.axis2.json.gson.factory.JsonConstant; -import org.apache.axis2.json.gson.factory.JsonUtils; import org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -39,17 +38,14 @@ public class JsonInOnlyRPCMessageReceive private static Log log = LogFactory.getLog(JsonInOnlyRPCMessageReceiver.class); @Override public void invokeBusinessLogic(MessageContext inMessage) throws AxisFault { - Object tempObj = inMessage.getProperty(JsonConstant.IS_JSON_STREAM); boolean isJsonStream; - if (tempObj != null) { isJsonStream = Boolean.valueOf(tempObj.toString()); } else { // if IS_JSON_STREAM property is not set then it is not a JSON request isJsonStream = false; } - if (isJsonStream) { Object o = inMessage.getProperty(JsonConstant.GSON_XML_STREAM_READER); if (o != null) { @@ -58,77 +54,45 @@ public class JsonInOnlyRPCMessageReceive if (jsonReader == null) { throw new AxisFault("JsonReader should not be null"); } - Method method = null; - String msg; Object serviceObj = getTheImplementationObject(inMessage); - Class implClass = serviceObj.getClass(); - Method[] allMethods = implClass.getDeclaredMethods(); AxisOperation op = inMessage.getOperationContext().getAxisOperation(); String operation = op.getName().getLocalPart(); - method = JsonUtils.getOpMethod(operation, allMethods); - Class[] paramClasses = method.getParameterTypes(); - try { - int paramCount = paramClasses.length; - JsonUtils.invokeServiceClass(jsonReader, serviceObj, method, paramClasses, paramCount); - } catch (IllegalAccessException e) { - msg = "Does not have access to " + - "the definition of the specified class, field, method or constructor"; - log.error(msg, e); - throw AxisFault.makeFault(e); - - } catch (InvocationTargetException e) { - msg = "Exception occurred while trying to invoke service method " + - (method != null ? method.getName() : "null"); - log.error(msg, e); - throw AxisFault.makeFault(e); - } catch (IOException e) { - msg = "Exception occur while encording or " + - "access to the input string at the JsonRpcMessageReceiver"; - log.error(msg, e); - throw AxisFault.makeFault(e); - } + invokeService(jsonReader, serviceObj, operation); } else { throw new AxisFault("GsonXMLStreamReader should have put as a property of messageContext " + "to evaluate JSON message"); } -/* InputStream inputStream = (InputStream)inMessage.getProperty(JsonConstant.INPUT_STREAM); - if (inputStream != null) { - Method method = null; - String msg; - - Object serviceObj = getTheImplementationObject(inMessage); - Class implClass = serviceObj.getClass(); - Method[] allmethods = implClass.getDeclaredMethods(); - AxisOperation op = inMessage.getOperationContext().getAxisOperation(); - String operation = op.getName().getLocalPart(); - method = JsonUtils.getOpMethod(operation, allmethods); - Class [] paramClasses = method.getParameterTypes(); - String charSetEncoding = (String) inMessage.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING); - try { - int paramCount=paramClasses.length; - - JsonUtils.invokeServiceClass(inputStream, - serviceObj, method, paramClasses, paramCount, charSetEncoding); - - } catch (IllegalAccessException e) { - msg = "Does not have access to " + - "the definition of the specified class, field, method or constructor"; - log.error(msg, e); - throw AxisFault.makeFault(e); - - } catch (InvocationTargetException e) { - msg = "Exception occurred while trying to invoke service method " + - (method != null ? method.getName() : "null"); - log.error(msg, e); - throw AxisFault.makeFault(e); - } catch (IOException e) { - msg = "Exception occur while encording or " + - "access to the input string at the JsonRpcMessageReceiver"; - log.error(msg, e); - throw AxisFault.makeFault(e); - }*/ } else{ super.invokeBusinessLogic(inMessage); // call RPCMessageReceiver if inputstream is null } } + + public void invokeService(JsonReader jsonReader, Object serviceObj, String operation_name) throws AxisFault { + Method method = null; + String msg; + Class implClass = serviceObj.getClass(); + Method[] allMethods = implClass.getDeclaredMethods(); + method = JsonUtils.getOpMethod(operation_name, allMethods); + Class[] paramClasses = method.getParameterTypes(); + try { + int paramCount = paramClasses.length; + JsonUtils.invokeServiceClass(jsonReader, serviceObj, method, paramClasses, paramCount); + } catch (IllegalAccessException e) { + msg = "Does not have access to " + + "the definition of the specified class, field, method or constructor"; + log.error(msg, e); + throw AxisFault.makeFault(e); + + } catch (InvocationTargetException e) { + msg = "Exception occurred while trying to invoke service method " + + (method != null ? method.getName() : "null"); + log.error(msg, e); + throw AxisFault.makeFault(e); + } catch (IOException e) { + msg = "Exception occur while encording or " + + "access to the input string at the JsonRpcMessageReceiver"; + log.error(msg, e); + throw AxisFault.makeFault(e); + } + } } Modified: axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java?rev=1463475&r1=1463474&r2=1463475&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java (original) +++ axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java Tue Apr 2 10:45:25 2013 @@ -24,7 +24,6 @@ import org.apache.axis2.context.MessageC import org.apache.axis2.description.AxisOperation; import org.apache.axis2.json.gson.GsonXMLStreamReader; import org.apache.axis2.json.gson.factory.JsonConstant; -import org.apache.axis2.json.gson.factory.JsonUtils; import org.apache.axis2.rpc.receivers.RPCMessageReceiver; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -41,14 +40,12 @@ public class JsonRpcMessageReceiver exte public void invokeBusinessLogic(MessageContext inMessage, MessageContext outMessage) throws AxisFault { Object tempObj = inMessage.getProperty(JsonConstant.IS_JSON_STREAM); boolean isJsonStream; - if (tempObj != null) { isJsonStream = Boolean.valueOf(tempObj.toString()); } else { // if IS_JSON_STREAM property is not set then it is not a JSON request isJsonStream = false; } - if (isJsonStream) { Object o = inMessage.getProperty(JsonConstant.GSON_XML_STREAM_READER); if (o != null) { @@ -57,40 +54,10 @@ public class JsonRpcMessageReceiver exte if (jsonReader == null) { throw new AxisFault("JsonReader should not be null"); } - Method method = null; - String msg; Object serviceObj = getTheImplementationObject(inMessage); - Class implClass = serviceObj.getClass(); - Method[] allMethods = implClass.getDeclaredMethods(); AxisOperation op = inMessage.getOperationContext().getAxisOperation(); String operation = op.getName().getLocalPart(); - method = JsonUtils.getOpMethod(operation, allMethods); - Class[] paramClasses = method.getParameterTypes(); - try { - int paramCount = paramClasses.length; - Object retObj = JsonUtils.invokeServiceClass(jsonReader, serviceObj, method, paramClasses, paramCount); - - // handle response - outMessage.setProperty(JsonConstant.RETURN_OBJECT, retObj); - outMessage.setProperty(JsonConstant.RETURN_TYPE, method.getReturnType()); - - } catch (IllegalAccessException e) { - msg = "Does not have access to " + - "the definition of the specified class, field, method or constructor"; - log.error(msg, e); - throw AxisFault.makeFault(e); - - } catch (InvocationTargetException e) { - msg = "Exception occurred while trying to invoke service method " + - (method != null ? method.getName() : "null"); - log.error(msg, e); - throw AxisFault.makeFault(e); - } catch (IOException e) { - msg = "Exception occur while encording or " + - "access to the input string at the JsonRpcMessageReceiver"; - log.error(msg, e); - throw AxisFault.makeFault(e); - } + invokeService(jsonReader, serviceObj, operation , outMessage); } else { throw new AxisFault("GsonXMLStreamReader should be put as a property of messageContext " + "to evaluate JSON message"); @@ -99,4 +66,38 @@ public class JsonRpcMessageReceiver exte super.invokeBusinessLogic(inMessage, outMessage); // call RPCMessageReceiver if inputstream is null } } + + public void invokeService(JsonReader jsonReader, Object serviceObj, String operation_name, + MessageContext outMes) throws AxisFault { + String msg; + Class implClass = serviceObj.getClass(); + Method[] allMethods = implClass.getDeclaredMethods(); + Method method = JsonUtils.getOpMethod(operation_name, allMethods); + Class[] paramClasses = method.getParameterTypes(); + try { + int paramCount = paramClasses.length; + Object retObj = JsonUtils.invokeServiceClass(jsonReader, serviceObj, method, paramClasses, paramCount); + + // handle response + outMes.setProperty(JsonConstant.RETURN_OBJECT, retObj); + outMes.setProperty(JsonConstant.RETURN_TYPE, method.getReturnType()); + + } catch (IllegalAccessException e) { + msg = "Does not have access to " + + "the definition of the specified class, field, method or constructor"; + log.error(msg, e); + throw AxisFault.makeFault(e); + + } catch (InvocationTargetException e) { + msg = "Exception occurred while trying to invoke service method " + + (method != null ? method.getName() : "null"); + log.error(msg, e); + throw AxisFault.makeFault(e); + } catch (IOException e) { + msg = "Exception occur while encording or " + + "access to the input string at the JsonRpcMessageReceiver"; + log.error(msg, e); + throw AxisFault.makeFault(e); + } + } } Added: axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java?rev=1463475&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java (added) +++ axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java Tue Apr 2 10:45:25 2013 @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.axis2.json.gson.rpc; + +import com.google.gson.Gson; +import com.google.gson.stream.JsonReader; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + + +public class JsonUtils { + + public static Object invokeServiceClass(JsonReader jsonReader, + Object service, + Method operation , + Class[] paramClasses , + int paramCount ) throws InvocationTargetException, + IllegalAccessException, IOException { + + Object[] methodParam = new Object[paramCount]; + Gson gson = new Gson(); + String[] argNames = new String[paramCount]; + + if( ! jsonReader.isLenient()){ + jsonReader.setLenient(true); + } + jsonReader.beginObject(); + String messageName=jsonReader.nextName(); // get message name from input json stream + jsonReader.beginArray(); + + int i = 0; + for (Class paramType : paramClasses) { + jsonReader.beginObject(); + argNames[i] = jsonReader.nextName(); + methodParam[i] = gson.fromJson(jsonReader, paramType); // gson handle all types well and return an object from it + jsonReader.endObject(); + i++; + } + + jsonReader.endArray(); + jsonReader.endObject(); + + return operation.invoke(service, methodParam); + + } + + public static Method getOpMethod(String methodName, Method[] methodSet) { + for (Method method : methodSet) { + String mName = method.getName(); + if (mName.equals(methodName)) { + return method; + } + } + return null; + } + +} Added: axis/axis2/java/core/trunk/modules/json/test-repository/services/JSONPOJOService.aar/META-INF/services.xml URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/test-repository/services/JSONPOJOService.aar/META-INF/services.xml?rev=1463475&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/json/test-repository/services/JSONPOJOService.aar/META-INF/services.xml (added) +++ axis/axis2/java/core/trunk/modules/json/test-repository/services/JSONPOJOService.aar/META-INF/services.xml Tue Apr 2 10:45:25 2013 @@ -0,0 +1,27 @@ +<?xml version="1.0"?> +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you 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. + --> +<service name="JSONPOJOService" scope="application" > + <description>POJO Service which expose to process under JSON requests</description> + <messageReceivers> + <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.json.gson.rpc.JsonInOnlyRPCMessageReceiver"/> + <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.apache.axis2.json.gson.rpc.JsonRpcMessageReceiver"/> + </messageReceivers> + <parameter name="ServiceClass">org.apache.axis2.json.gson.rpc.JSONPOJOService</parameter> +</service> Modified: axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/JSONXMLStreamAPITest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/JSONXMLStreamAPITest.java?rev=1463475&r1=1463474&r2=1463475&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/JSONXMLStreamAPITest.java (original) +++ axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/JSONXMLStreamAPITest.java Tue Apr 2 10:45:25 2013 @@ -87,29 +87,17 @@ public class JSONXMLStreamAPITest { "{\"author\":\"Jhon_4\",\"numOfPages\":175,\"publisher\":\"Foxier\",\"reviewers\":[\"rev1\",\"rev2\"," + "\"rev3\"]}],\"staff\":50}}}"; - String actualResponse = post(echoLibrary, echoLibURL, contentType, charSet); + String actualResponse = UtilTest.post(echoLibrary, echoLibURL, contentType, charSet); Assert.assertNotNull(actualResponse); Assert.assertEquals(echoLibraryResponse , actualResponse); - String actualRespose_2 = post(getLibrary, getLibURL, contentType, charSet); + String actualRespose_2 = UtilTest.post(getLibrary, getLibURL, contentType, charSet); Assert.assertNotNull(actualRespose_2); Assert.assertEquals(getLibraryResponse, actualRespose_2); } - public String post(String jsonString, String strURL, String contentType, String charSet) - throws IOException { - PostMethod post = new PostMethod(strURL); - RequestEntity entity = new StringRequestEntity(jsonString, contentType, charSet); - post.setRequestEntity(entity); - HttpClient httpclient = new HttpClient(); - try { - int result = httpclient.executeMethod(post); - return post.getResponseBodyAsString(); - }finally { - post.releaseConnection(); - } - } + } Added: axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/UtilTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/UtilTest.java?rev=1463475&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/UtilTest.java (added) +++ axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/UtilTest.java Tue Apr 2 10:45:25 2013 @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.axis2.json.gson; + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.RequestEntity; +import org.apache.commons.httpclient.methods.StringRequestEntity; + +import java.io.IOException; + +public class UtilTest { + + public static String post(String jsonString, String strURL, String contentType, String charSet) + throws IOException { + PostMethod post = new PostMethod(strURL); + RequestEntity entity = new StringRequestEntity(jsonString, contentType, charSet); + post.setRequestEntity(entity); + HttpClient httpclient = new HttpClient(); + try { + int result = httpclient.executeMethod(post); + return post.getResponseBodyAsString(); + }finally { + post.releaseConnection(); + } + } +} Added: axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/JSONPOJOService.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/JSONPOJOService.java?rev=1463475&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/JSONPOJOService.java (added) +++ axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/JSONPOJOService.java Tue Apr 2 10:45:25 2013 @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.axis2.json.gson.rpc; + +public class JSONPOJOService { + + public Person echoPerson(Person person) { + return person; + } + + public void ping(Person person){ + // nothing to do + } +} Added: axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/JSONRPCIntegrationTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/JSONRPCIntegrationTest.java?rev=1463475&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/JSONRPCIntegrationTest.java (added) +++ axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/JSONRPCIntegrationTest.java Tue Apr 2 10:45:25 2013 @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.axis2.json.gson.rpc; + +import junit.framework.Assert; +import org.apache.axis2.json.gson.UtilTest; +import org.apache.axis2.testutils.UtilServer; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JSONRPCIntegrationTest { + String contentType = "application/json"; + String charSet = "UTF-8"; + + @BeforeClass + public static void startTestServer() throws Exception { + UtilServer.start("test-repository", "test-conf/axis2_json.xml"); + } + + @AfterClass + public static void stopTestServer() throws Exception { + UtilServer.stop(); + } + + @Test + public void testJsonRpcMessageReceiver() throws Exception { + String jsonRequest = "{\"echoPerson\":[{\"arg0\":{\"name\":\"Simon\",\"age\":\"35\",\"gender\":\"male\"}}]}"; + String echoPersonUrl = "http://localhost:" + UtilServer.TESTING_PORT +"/axis2/services/JSONPOJOService/echoPerson"; + String expectedResponse = "{\"response\":{\"name\":\"Simon\",\"age\":\"35\",\"gender\":\"male\"}}"; + String response = UtilTest.post(jsonRequest, echoPersonUrl, contentType, charSet); + Assert.assertNotNull(response); + Assert.assertEquals(expectedResponse , response); + } + + @Test + public void testJsonInOnlyRPCMessageReceiver() throws Exception { + String jsonRequest = "{\"ping\":[{\"arg0\":{\"name\":\"Simon\",\"age\":\"35\",\"gender\":\"male\"}}]}"; + String echoPersonUrl = "http://localhost:" + UtilServer.TESTING_PORT +"/axis2/services/JSONPOJOService/ping"; + String response = UtilTest.post(jsonRequest, echoPersonUrl, contentType, charSet); + Assert.assertEquals("", response); + } +} Added: axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/Person.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/Person.java?rev=1463475&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/Person.java (added) +++ axis/axis2/java/core/trunk/modules/json/test/org/apache/axis2/json/gson/rpc/Person.java Tue Apr 2 10:45:25 2013 @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.axis2.json.gson.rpc; + +public class Person { + + private String name; + private String age; + private String gender; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getAge() { + return age; + } + + public void setAge(String age) { + this.age = age; + } +} +