JSON, make sure the messageName that starts the JSON String passed in via the client matches the Axis2 server operation name defined in the service class
diff --git a/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamReader.java b/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamReader.java
index 3823546..9184ce6 100644
--- a/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamReader.java
+++ b/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamReader.java
@@ -133,6 +133,7 @@
newNodeMap.put(elementQname, mainXmlNode);
configContext.setProperty(JsonConstant.XMLNODES, newNodeMap);
}
+ log.debug("GsonXMLStreamReader.process() completed");
isProcessed = true;
}
diff --git a/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamWriter.java b/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamWriter.java
index 95646b1..2890a90 100644
--- a/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamWriter.java
+++ b/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamWriter.java
@@ -26,6 +26,8 @@
import org.apache.axis2.json.factory.JsonObject;
import org.apache.axis2.json.factory.XmlNode;
import org.apache.axis2.json.factory.XmlNodeGenerator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.ws.commons.schema.XmlSchema;
import javax.xml.namespace.NamespaceContext;
@@ -43,6 +45,8 @@
public class GsonXMLStreamWriter implements XMLStreamWriter {
+ private static final Log log = LogFactory.getLog(GsonXMLStreamWriter.class);
+
private JsonWriter jsonWriter;
/**
@@ -125,6 +129,7 @@
}
isProcessed = true;
this.jsonWriter.beginObject();
+ log.debug("GsonXMLStreamWriter.process() completed");
}
diff --git a/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java b/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java
index 4a75d95..7cee12a 100644
--- a/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java
+++ b/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java
@@ -65,12 +65,15 @@
public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
AxisOperation axisOperation = msgContext.getAxisOperation();
if (axisOperation != null) {
+ log.debug("Axis operation has been found from the MessageContext, proceeding with the JSON request");
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 {
+ log.debug("JSON MessageReceiver found, proceeding with the JSON request");
Object tempObj = msgContext.getProperty(JsonConstant.IS_JSON_STREAM);
if (tempObj != null) {
+ log.debug("JSON MessageReceiver found JSON stream, proceeding with the JSON request");
boolean isJSON = Boolean.valueOf(tempObj.toString());
Object o = msgContext.getProperty(JsonConstant.GSON_XML_STREAM_READER);
if (o != null) {
@@ -80,11 +83,10 @@
gsonXMLStreamReader.initXmlStreamReader(elementQname, schemas, msgContext.getConfigurationContext());
OMXMLParserWrapper stAXOMBuilder = OMXMLBuilderFactory.createStAXOMBuilder(gsonXMLStreamReader);
OMElement omElement = stAXOMBuilder.getDocumentElement();
+ log.debug("GsonXMLStreamReader found elementQname: " + elementQname);
msgContext.getEnvelope().getBody().addChild(omElement);
} else {
- if (log.isDebugEnabled()) {
- log.debug("GsonXMLStreamReader is null");
- }
+ log.error("GsonXMLStreamReader is null");
throw new AxisFault("GsonXMLStreamReader should not be null");
}
} else {
@@ -92,10 +94,7 @@
}
}
} else {
- if (log.isDebugEnabled()) {
- log.debug("Axis operation is null");
- }
- // message hasn't been dispatched to operation, ignore it
+ log.debug("Axis operation is null, message hasn't been dispatched to operation, ignore it");
}
return InvocationResponse.CONTINUE;
}
diff --git a/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java b/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java
index b65ecb7..022f5be 100644
--- a/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java
+++ b/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java
@@ -55,6 +55,7 @@
log.debug("Inputstream is null, This is possible with GET request");
}
}
+ log.debug("JsonBuilder.processDocument() has completed, returning default envelope");
// dummy envelop
SOAPFactory soapFactory = OMAbstractFactory.getSOAP11Factory();
return soapFactory.getDefaultEnvelope();
diff --git a/modules/json/src/org/apache/axis2/json/gson/JsonFormatter.java b/modules/json/src/org/apache/axis2/json/gson/JsonFormatter.java
index cbd3033..776674f 100644
--- a/modules/json/src/org/apache/axis2/json/gson/JsonFormatter.java
+++ b/modules/json/src/org/apache/axis2/json/gson/JsonFormatter.java
@@ -116,6 +116,7 @@
throw AxisFault.makeFault(e);
}
}
+ log.debug("JsonFormatter.writeTo() has completed");
} catch (UnsupportedEncodingException e) {
msg = "Exception occur when try to encode output stream usig " +
Constants.Configuration.CHARACTER_SET_ENCODING + " charset";
diff --git a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java
index 6a2c591..a77c617 100644
--- a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java
+++ b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java
@@ -57,6 +57,7 @@
Object serviceObj = getTheImplementationObject(inMessage);
AxisOperation op = inMessage.getOperationContext().getAxisOperation();
String operation = op.getName().getLocalPart();
+ log.debug("JsonInOnlyRPCMessageReceiver.invokeBusinessLogic() executing invokeService() with operation: " + operation);
invokeService(jsonReader, serviceObj, operation);
} else {
throw new AxisFault("GsonXMLStreamReader should have put as a property of messageContext " +
diff --git a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java
index c893407..b0cfcf7 100644
--- a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java
+++ b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java
@@ -51,12 +51,17 @@
}
jsonReader.beginObject();
String messageName=jsonReader.nextName(); // get message name from input json stream
+ if (messageName == null || !messageName.equals(operation.getName())) {
+ log.error("JsonUtils.invokeServiceClass() throwing IOException, messageName: " +messageName+ " is unknown, it does not match the axis2 operation, the method name: " + operation.getName());
+ throw new IOException("Bad Request");
+ }
jsonReader.beginArray();
int i = 0;
for (Class paramType : paramClasses) {
jsonReader.beginObject();
argNames[i] = jsonReader.nextName();
+ log.debug("JsonUtils.invokeServiceClass() on messageName: " +messageName+ " , is currently processing argName: " + argNames[i]);
methodParam[i] = gson.fromJson(jsonReader, paramType); // gson handle all types well and return an object from it
jsonReader.endObject();
i++;
@@ -77,9 +82,11 @@
for (Method method : methodSet) {
String mName = method.getName();
if (mName.equals(methodName)) {
+ log.debug("JsonUtils.getOpMethod() returning methodName: " +methodName);
return method;
}
}
+ log.debug("JsonUtils.getOpMethod() returning null");
return null;
}
diff --git a/modules/json/src/org/apache/axis2/json/moshi/JSONMessageHandler.java b/modules/json/src/org/apache/axis2/json/moshi/JSONMessageHandler.java
index 324a5ec..1b7a1fe 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/JSONMessageHandler.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/JSONMessageHandler.java
@@ -65,10 +65,12 @@
public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
AxisOperation axisOperation = msgContext.getAxisOperation();
if (axisOperation != null) {
+ log.debug("Axis operation has been found from the MessageContext, proceeding with the JSON request");
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 MoshiXMLStreamReader to read the inputStream.
} else {
+ log.debug("JSON MessageReceiver found, proceeding with the JSON request");
Object tempObj = msgContext.getProperty(JsonConstant.IS_JSON_STREAM);
if (tempObj != null) {
boolean isJSON = Boolean.valueOf(tempObj.toString());
@@ -82,9 +84,7 @@
OMElement omElement = stAXOMBuilder.getDocumentElement();
msgContext.getEnvelope().getBody().addChild(omElement);
} else {
- if (log.isDebugEnabled()) {
- log.debug("MoshiXMLStreamReader is null");
- }
+ log.error("MoshiXMLStreamReader is null");
throw new AxisFault("MoshiXMLStreamReader should not be null");
}
} else {
@@ -92,10 +92,7 @@
}
}
} else {
- if (log.isDebugEnabled()) {
- log.debug("Axis operation is null");
- }
- // message hasn't been dispatched to operation, ignore it
+ log.debug("Axis operation is null, message hasn't been dispatched to operation, ignore it");
}
return InvocationResponse.CONTINUE;
}
diff --git a/modules/json/src/org/apache/axis2/json/moshi/JsonBuilder.java b/modules/json/src/org/apache/axis2/json/moshi/JsonBuilder.java
index f2fabe8..09976cf 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/JsonBuilder.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/JsonBuilder.java
@@ -65,6 +65,7 @@
log.debug("Inputstream is null, This is possible with GET request");
}
}
+ log.debug("JsonBuilder.processDocument() has completed, returning default envelope");
// dummy envelope
SOAPFactory soapFactory = OMAbstractFactory.getSOAP11Factory();
return soapFactory.getDefaultEnvelope();
diff --git a/modules/json/src/org/apache/axis2/json/moshi/JsonFormatter.java b/modules/json/src/org/apache/axis2/json/moshi/JsonFormatter.java
index 93870ea..5785849 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/JsonFormatter.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/JsonFormatter.java
@@ -121,6 +121,7 @@
throw AxisFault.makeFault(e);
}
}
+ log.debug("JsonFormatter.writeTo() has completed");
} catch (Exception e) {
msg = "Exception occurred when try to encode output stream using " +
Constants.Configuration.CHARACTER_SET_ENCODING + " charset";
diff --git a/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamReader.java b/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamReader.java
index b3221a2..6700902 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamReader.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamReader.java
@@ -135,6 +135,7 @@
configContext.setProperty(JsonConstant.XMLNODES, newNodeMap);
}
isProcessed = true;
+ log.debug("MoshiXMLStreamReader.process() completed");
}
diff --git a/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamWriter.java b/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamWriter.java
index f00caea..fc84652 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamWriter.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamWriter.java
@@ -130,6 +130,7 @@
}
isProcessed = true;
this.jsonWriter.beginObject();
+ log.debug("MoshiXMLStreamWriter.process() completed");
}
diff --git a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java
index 1959895..6f2c35d 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java
@@ -57,6 +57,7 @@
Object serviceObj = getTheImplementationObject(inMessage);
AxisOperation op = inMessage.getOperationContext().getAxisOperation();
String operation = op.getName().getLocalPart();
+ log.debug("JsonInOnlyRPCMessageReceiver.invokeBusinessLogic() executing invokeService() with operation: " + operation);
invokeService(jsonReader, serviceObj, operation);
} else {
throw new AxisFault("MoshiXMLStreamReader should have put as a property of messageContext " +
diff --git a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonUtils.java b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonUtils.java
index 012ca3e..712f6ce 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonUtils.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonUtils.java
@@ -104,6 +104,10 @@
jsonReader.beginObject();
String messageName=jsonReader.nextName(); // get message name from input json stream
+ if (messageName == null || !messageName.equals(operation.getName())) {
+ log.error("JsonUtils.invokeServiceClass() throwing IOException, messageName: " +messageName+ " is unknown, it does not match the axis2 operation, the method name: " + operation.getName());
+ throw new IOException("Bad Request");
+ }
jsonReader.beginArray();
int i = 0;
diff --git a/modules/kernel/src/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcher.java b/modules/kernel/src/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcher.java
index bc262c1..761dd1f 100644
--- a/modules/kernel/src/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcher.java
+++ b/modules/kernel/src/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcher.java
@@ -60,7 +60,7 @@
return service.getOperation(operationName);
} else {
log.debug(messageContext.getLogIDString() +
- " Attempted to check for Operation using target endpoint URI, but the operation fragment was missing");
+ " Attempted to check for Operation using target endpoint URI, but the operation fragment was missing on filePart: " + filePart + " , service name: " + service.getName());
return null;
}
} else {