--- axis-1_2/src/org/apache/axis/handlers/ServiceInvocation.java 1970-01-01 01:00:00.000000000 +0100
+++ jonas-axis/src/org/apache/axis/handlers/ServiceInvocation.java 2005-01-25 15:02:00.000000000 +0000
@@ -0,0 +1,111 @@
+
+package org.apache.axis.handlers;
+
+import java.util.Iterator;
+
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
+
+import org.apache.axis.MessageContext;
+
+
+
+/**
+ * Keep here the invocation info:
+ * operation + arguments.
+ * TODO This class should be in the jonas code.
+ * @author Ph Durieux
+ */
+public class ServiceInvocation {
+
+ /**
+ * @return Returns the argNames.
+ */
+ public String getArgNames() {
+ return argNames;
+ }
+ /**
+ * @param argNames The argNames to set.
+ */
+ public void setArgNames(String argNames) {
+ this.argNames = argNames;
+ }
+ /**
+ * @return Returns the methodName.
+ */
+ public String getMethodName() {
+ return methodName;
+ }
+ /**
+ * @param methodName The methodName to set.
+ */
+ public void setMethodName(String methodName) {
+ this.methodName = methodName;
+ }
+ /**
+ * @return Returns the numArgs.
+ */
+ public int getNumArgs() {
+ return numArgs;
+ }
+ /**
+ * @param numArgs The numArgs to set.
+ */
+ public void setNumArgs(int numArgs) {
+ this.numArgs = numArgs;
+ }
+ private String methodName = "";
+ private String argNames = "";
+ private int numArgs = -1;
+
+ public ServiceInvocation(MessageContext msgContext) {
+
+ SOAPMessage reqMsg = msgContext.getMessage();
+ SOAPEnvelope reqEnv;
+ try {
+ reqEnv = reqMsg.getSOAPPart().getEnvelope();
+ } catch (SOAPException e1) {
+ e1.printStackTrace();
+ return;
+ }
+ SOAPBody body;
+ try {
+ body = reqEnv.getBody();
+ } catch (SOAPException e) {
+ e.printStackTrace();
+ return;
+ }
+ if (body == null) {
+ return;
+ }
+ Iterator it = body.getChildElements();
+ SOAPElement operation = (SOAPElement) it.next();
+ methodName = operation.getNodeName();
+ numArgs = 0;
+ for (Iterator i = operation.getChildElements(); i.hasNext();) {
+ SOAPElement elt = (SOAPElement) i.next();
+ numArgs++;
+ argNames += elt.getNodeName();
+ }
+ }
+
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ return toString().equals(obj.toString());
+ }
+
+ public int hashCode() {
+ return numArgs;
+ }
+
+ public String toString() {
+ return "[method=" + methodName + ",Args=" + argNames + "]";
+ }
+
+}
+