You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by as...@apache.org on 2006/10/04 09:18:37 UTC
svn commit: r452775 - in
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers:
RawXMLINOnlyMessageReceiver.java RawXMLINOutAsyncMessageReceiver.java
RawXMLINOutMessageReceiver.java
Author: asankha
Date: Wed Oct 4 00:18:36 2006
New Revision: 452775
URL: http://svn.apache.org/viewvc?view=rev&rev=452775
Log:
Fix 1296 for RawXMLINOutAsyncMessageReceiver and fix the RawXMLINOnlyMessageReceiver and RawXMLINOutMessageReceiver to properly look at the return types as well when selecting the method for invocation.
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutAsyncMessageReceiver.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java?view=diff&rev=452775&r1=452774&r2=452775
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java Wed Oct 4 00:18:36 2006
@@ -53,7 +53,8 @@
if (methods[i].getName().equals(methodName) &&
methods[i].getParameterTypes().length == 1 &&
OMElement.class.getName().equals(
- methods[i].getParameterTypes()[0].getName())) {
+ methods[i].getParameterTypes()[0].getName()) &&
+ "void".equals(methods[i].getReturnType().getName())) {
return methods[i];
}
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutAsyncMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutAsyncMessageReceiver.java?view=diff&rev=452775&r1=452774&r2=452775
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutAsyncMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutAsyncMessageReceiver.java Wed Oct 4 00:18:36 2006
@@ -29,24 +29,42 @@
*
*/
+/**
+ * The RawXMLINOutAsyncMessageReceiver MessageReceiver hands over the raw request received to
+ * the service implementation class as an OMElement. The implementation class is expected
+ * to return back the OMElement to be returned to the caller. This is an asynchronous
+ * MessageReceiver, and finds the service implementation class to invoke by referring to
+ * the "ServiceClass" parameter value specified in the service.xml and looking at the
+ * methods of the form OMElement <<methodName>>(OMElement request)
+ *
+ * @see RawXMLINOnlyMessageReceiver
+ * @see RawXMLINOutMessageReceiver
+ */
public class RawXMLINOutAsyncMessageReceiver extends AbstractInOutAsyncMessageReceiver {
- public Method findOperation(AxisOperation op, Class ImplClass) {
- Method method = null;
+ private Method findOperation(AxisOperation op, Class ImplClass) {
String methodName = op.getName().getLocalPart();
Method[] methods = ImplClass.getMethods();
for (int i = 0; i < methods.length; i++) {
- if (methods[i].getName().equals(methodName)) {
- method = methods[i];
-
- break;
+ if (methods[i].getName().equals(methodName) &&
+ methods[i].getParameterTypes().length == 1 &&
+ OMElement.class.getName().equals(
+ methods[i].getParameterTypes()[0].getName()) &&
+ OMElement.class.getName().equals(methods[i].getReturnType().getName())) {
+ return methods[i];
}
}
- return method;
+ return null;
}
+ /**
+ * Invokes the bussiness logic invocation on the service implementation class
+ * @param msgContext the incoming message context
+ * @param newmsgContext the response message context
+ * @throws AxisFault on invalid method (wrong signature) or behaviour (return null)
+ */
public void invokeBusinessLogic(MessageContext msgContext, MessageContext newmsgContext)
throws AxisFault {
try {
@@ -65,47 +83,23 @@
Method method = findOperation(opDesc, ImplClass);
if (method != null) {
- Class[] parameters = method.getParameterTypes();
- Object[] args;
-
- if ((parameters == null) || (parameters.length == 0)) {
- args = new Object[0];
- } else if (parameters.length == 1) {
- OMElement omElement = msgContext.getEnvelope().getBody().getFirstElement();
- args = new Object[]{omElement};
- } else {
- throw new AxisFault(Messages.getMessage("rawXmlProviderIsLimited"));
- }
-
- OMElement result;
- try {
- result = (OMElement) method.invoke(obj, args);
- } catch (Exception e) {
- throw new AxisFault(e.getMessage());
- }
-
- AxisService service = msgContext.getAxisService();
- service.getTargetNamespace();
- if (result != null) {
- result.declareNamespace(service.getTargetNamespace(),
- service.getTargetNamespacePrefix());
- }
-
- OMElement bodyContent;
-
+ OMElement result = (OMElement) method.invoke(
+ obj, new Object[] {msgContext.getEnvelope().getBody().getFirstElement()});
SOAPFactory fac = getSOAPFactory(msgContext);
- bodyContent = result;
-
SOAPEnvelope envelope = fac.getDefaultEnvelope();
- if (bodyContent != null) {
- envelope.getBody().addChild(bodyContent);
+ if (result != null) {
+ AxisService service = msgContext.getAxisService();
+ result.declareNamespace(service.getTargetNamespace(),
+ service.getTargetNamespacePrefix());
+ envelope.getBody().addChild(result);
}
newmsgContext.setEnvelope(envelope);
+
} else {
- throw new AxisFault(Messages.getMessage("methodNotImplemented",
- opDesc.getName().toString()));
+ throw new AxisFault(Messages.getMessage("methodDoesNotExistInOut",
+ opDesc.getName().toString()));
}
} catch (Exception e) {
throw AxisFault.makeFault(e);
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java?view=diff&rev=452775&r1=452774&r2=452775
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java Wed Oct 4 00:18:36 2006
@@ -56,7 +56,8 @@
if (methods[i].getName().equals(methodName) &&
methods[i].getParameterTypes().length == 1 &&
OMElement.class.getName().equals(
- methods[i].getParameterTypes()[0].getName())) {
+ methods[i].getParameterTypes()[0].getName()) &&
+ OMElement.class.getName().equals(methods[i].getReturnType().getName())) {
return methods[i];
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org