Author: shameera
Date: Wed Jun 25 18:41:42 2014
New Revision: 1605543

URL: http://svn.apache.org/r1605543
Log:
Fixed possible nul exceptions from latest JSON implementation and add logs

Modified:
    axis/axis2/java/core/trunk/modules/json/pom.xml
    
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/JsonBuilder.java

Modified: axis/axis2/java/core/trunk/modules/json/pom.xml
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/pom.xml?rev=1605543&r1=1605542&r2=1605543&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/json/pom.xml (original)
+++ axis/axis2/java/core/trunk/modules/json/pom.xml Wed Jun 25 18:41:42 2014
@@ -71,6 +71,10 @@
             <artifactId>gson</artifactId>
         </dependency>
         <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-adb-codegen</artifactId>
             <version>${project.version}</version>

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=1605543&r1=1605542&r2=1605543&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
 Wed Jun 25 18:41:42 2014
@@ -23,19 +23,23 @@ import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.engine.MessageReceiver;
 import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.json.gson.factory.JsonConstant;
 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;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.ws.commons.schema.XmlSchema;
 
 import javax.xml.namespace.QName;
 import java.util.List;
 
-
 public class JSONMessageHandler extends AbstractHandler {
+    Log log = LogFactory.getLog(JSONMessageHandler.class);
+
     /**
      * This method will be called on each registered handler when a message
      * needs to be processed.  If the message processing is paused by the
@@ -53,33 +57,44 @@ public class JSONMessageHandler extends 
      * @param msgContext the <code>MessageContext</code> to process with this
      *                   <code>Handler</code>.
      * @return An InvocationResponse that indicates what
-     *         the next step in the message processing should be.
+     * the next step in the message processing should be.
      * @throws org.apache.axis2.AxisFault if the handler encounters an error
      */
 
     public InvocationResponse invoke(MessageContext msgContext) throws 
AxisFault {
-        MessageReceiver messageReceiver = 
msgContext.getAxisOperation().getMessageReceiver();
-        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);
-            if (tempObj != null) {
-                boolean isJSON = Boolean.valueOf(tempObj.toString());
-                Object o = 
msgContext.getProperty(JsonConstant.GSON_XML_STREAM_READER);
-                if (o != null) {
-                    GsonXMLStreamReader gsonXMLStreamReader = 
(GsonXMLStreamReader) o;
-                    QName elementQname = 
msgContext.getAxisOperation().getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE).getElementQName();
-                    List<XmlSchema> schemas = 
msgContext.getAxisService().getSchema();
-                    gsonXMLStreamReader.initXmlStreamReader(elementQname, 
schemas, msgContext.getConfigurationContext());
-                    StAXOMBuilder stAXOMBuilder = new 
StAXOMBuilder(gsonXMLStreamReader);
-                    OMElement omElement = stAXOMBuilder.getDocumentElement();
-                    msgContext.getEnvelope().getBody().addChild(omElement);
+        AxisOperation axisOperation = msgContext.getAxisOperation();
+        if (axisOperation != null) {
+            MessageReceiver messageReceiver = 
axisOperation.getMessageReceiver();
+            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);
+                if (tempObj != null) {
+                    boolean isJSON = Boolean.valueOf(tempObj.toString());
+                    Object o = 
msgContext.getProperty(JsonConstant.GSON_XML_STREAM_READER);
+                    if (o != null) {
+                        GsonXMLStreamReader gsonXMLStreamReader = 
(GsonXMLStreamReader) o;
+                        QName elementQname = 
msgContext.getAxisOperation().getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE).getElementQName();
+                        List<XmlSchema> schemas = 
msgContext.getAxisService().getSchema();
+                        gsonXMLStreamReader.initXmlStreamReader(elementQname, 
schemas, msgContext.getConfigurationContext());
+                        StAXOMBuilder stAXOMBuilder = new 
StAXOMBuilder(gsonXMLStreamReader);
+                        OMElement omElement = 
stAXOMBuilder.getDocumentElement();
+                        msgContext.getEnvelope().getBody().addChild(omElement);
+                    } else {
+                        if (log.isDebugEnabled()) {
+                            log.debug("GsonXMLStreamReader is null");
+                        }
+                        throw new AxisFault("GsonXMLStreamReader should not be 
null");
+                    }
                 } else {
-                    throw new AxisFault("GsonXMLStreamReader should not be 
null");
+                    // request is not a JSON request so don't need to 
initialize GsonXMLStreamReader
                 }
-            } else {
-                // request is not a JSON request so don't need to initialize 
GsonXMLStreamReader
             }
+        } else {
+            if (log.isDebugEnabled()) {
+                log.debug("Axis operation is null");
+            }
+            // message hasn't been dispatched to operation, ignore it
         }
         return InvocationResponse.CONTINUE;
     }

Modified: 
axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java?rev=1605543&r1=1605542&r2=1605543&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java
 Wed Jun 25 18:41:42 2014
@@ -22,35 +22,42 @@ package org.apache.axis2.json.gson;
 import com.google.gson.stream.JsonReader;
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.builder.Builder;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.json.gson.factory.JsonConstant;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 
 public class JsonBuilder implements Builder {
+    Log log = LogFactory.getLog(JsonBuilder.class);
     public OMElement processDocument(InputStream inputStream, String s, 
MessageContext messageContext) throws AxisFault {
         messageContext.setProperty(JsonConstant.IS_JSON_STREAM , true);
         JsonReader jsonReader;
         String charSetEncoding=null;
-           try {
-               charSetEncoding = (String) 
messageContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
-               jsonReader = new JsonReader(new InputStreamReader(inputStream , 
charSetEncoding));
-               GsonXMLStreamReader gsonXMLStreamReader = new 
GsonXMLStreamReader(jsonReader);
-               messageContext.setProperty(JsonConstant.GSON_XML_STREAM_READER 
, gsonXMLStreamReader);
-               // dummy envelop
-               SOAPFactory soapFactory = OMAbstractFactory.getSOAP11Factory();
-               SOAPEnvelope soapEnvelope = soapFactory.getDefaultEnvelope();
-               return soapEnvelope;
-           } catch (UnsupportedEncodingException e) {
-               throw new AxisFault(charSetEncoding + " encoding is may not 
supported by json inputStream ", e);
-           }
+        if (inputStream != null) {
+            try {
+                charSetEncoding = (String) 
messageContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
+                jsonReader = new JsonReader(new InputStreamReader(inputStream, 
charSetEncoding));
+                GsonXMLStreamReader gsonXMLStreamReader = new 
GsonXMLStreamReader(jsonReader);
+                
messageContext.setProperty(JsonConstant.GSON_XML_STREAM_READER, 
gsonXMLStreamReader);
+            } catch (UnsupportedEncodingException e) {
+                throw new AxisFault(charSetEncoding + " encoding is may not 
supported by json inputStream ", e);
+            }
+        } else {
+            if (log.isDebugEnabled()) {
+                log.debug("Inputstream is null, This is possible with GET 
request");
+            }
+        }
+        // dummy envelop
+        SOAPFactory soapFactory = OMAbstractFactory.getSOAP11Factory();
+        return soapFactory.getDefaultEnvelope();
     }
 
 }


Reply via email to