You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by sn...@apache.org on 2002/10/11 20:41:42 UTC
cvs commit: xml-soap/java/src/org/apache/soap/providers CORBAProvider.java EntityEJBProvider.java StatefulEJBProvider.java StatelessEJBProvider.java
snichol 2002/10/11 11:41:42
Modified: java/docs changes.html
java/src/org/apache/soap/providers CORBAProvider.java
EntityEJBProvider.java StatefulEJBProvider.java
StatelessEJBProvider.java
Log:
Support messaging in the Stateless EJB and CORBA provieders. Throw an
exception for messaging calls in the Stateful EJB and Entity EJB providers
rather than throwing a NPE.
Revision Changes Path
1.48 +3 -0 xml-soap/java/docs/changes.html
Index: changes.html
===================================================================
RCS file: /home/cvs/xml-soap/java/docs/changes.html,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- changes.html 4 Oct 2002 19:50:19 -0000 1.47
+++ changes.html 11 Oct 2002 18:41:41 -0000 1.48
@@ -90,6 +90,9 @@
of Maps.</li>
<li>Read HTTP[S] proxy information from system properties if not explicitly
specified.</li>
+ <li>Support messaging in the Stateless EJB and CORBA provieders. Throw an
+ exception for messaging calls in the Stateful EJB and Entity EJB providers
+ rather than throwing a NPE.</li>
</ul>
</li>
</ul>
1.3 +60 -40 xml-soap/java/src/org/apache/soap/providers/CORBAProvider.java
Index: CORBAProvider.java
===================================================================
RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/providers/CORBAProvider.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CORBAProvider.java 28 Aug 2002 18:53:40 -0000 1.2
+++ CORBAProvider.java 11 Oct 2002 18:41:41 -0000 1.3
@@ -87,6 +87,7 @@
private DeploymentDescriptor dd;
private Envelope envelope;
private Call call;
+ private String methodName;
private String targetObjectURI;
private String interfaceClassName = null;
@@ -102,13 +103,23 @@
this.dd = dd;
this.envelope = env;
this.call = call;
+ this.methodName = methodName;
this.targetObjectURI = targetObjectURI;
- // call on a valid method name?
- if (!RPCRouter.validCall(dd, call)) {
- throw new SOAPException(Constants.FAULT_CODE_SERVER,
- "Method '" + call.getMethodName() +
- "' is not supported.");
+ if (call != null) {
+ // RPC call on a valid method name?
+ if (!RPCRouter.validCall(dd, call)) {
+ throw new SOAPException(Constants.FAULT_CODE_SERVER,
+ "Method '" + call.getMethodName () +
+ "' is not supported.");
+ }
+ } else {
+ // Message on a valid method name?
+ if (!MessageRouter.validMessage(dd, methodName)) {
+ throw new SOAPException(Constants.FAULT_CODE_SERVER,
+ "Method '" + methodName +
+ "' is not supported.");
+ }
}
// Read deployment descriptor options
@@ -189,33 +200,40 @@
*/
public void invoke(SOAPContext reqContext, SOAPContext resContext)
throws SOAPException {
- // Get information about the call
- String methodName = call.getMethodName();
- Vector methodParameters = call.getParams();
- String respEncStyle = call.getEncodingStyleURI();
-
Parameter ret = null;
Object[] args = null;
Class[] argTypes = null;
+ String respEncStyle = null;
- if (methodParameters != null) {
- int parametersCount = methodParameters.size();
- args = new Object[parametersCount];
- argTypes = new Class[parametersCount];
-
- for (int i = 0; i < parametersCount; i++) {
- Parameter param = (Parameter) methodParameters.elementAt(i);
- args[i] = param.getValue();
- argTypes[i] = param.getType();
-
- if (respEncStyle == null) {
- respEncStyle = param.getEncodingStyleURI();
+ if (call != null) {
+ // Set up RPC parameters
+ Vector methodParameters = call.getParams();
+ respEncStyle = call.getEncodingStyleURI();
+
+ if (methodParameters != null) {
+ int parametersCount = methodParameters.size();
+ args = new Object[parametersCount];
+ argTypes = new Class[parametersCount];
+
+ for (int i = 0; i < parametersCount; i++) {
+ Parameter param = (Parameter) methodParameters.elementAt(i);
+ args[i] = param.getValue();
+ argTypes[i] = param.getType();
+
+ if (respEncStyle == null) {
+ respEncStyle = param.getEncodingStyleURI();
+ }
}
}
- }
-
- if (respEncStyle == null)
- respEncStyle = Constants.NS_URI_SOAP_ENC;
+
+ if (respEncStyle == null)
+ respEncStyle = Constants.NS_URI_SOAP_ENC;
+ } else {
+ // Set up message parameters
+ argTypes = new Class[] {Envelope.class, SOAPContext.class,
+ SOAPContext.class};
+ args = new Object[] {envelope, reqContext, resContext};
+ }
// Find the method an invoke it
try {
@@ -233,19 +251,21 @@
throw new SOAPException(Constants.FAULT_CODE_SERVER, t.getMessage(), t);
}
- // Create the response
- try {
- Response resp = new Response(targetObjectURI, methodName, ret, null,
- null, respEncStyle, resContext);
- Envelope env = resp.buildEnvelope();
- StringWriter sw = new StringWriter();
- env.marshall(sw, call.getSOAPMappingRegistry(), resContext);
- resContext.setRootPart(sw.toString(), Constants.HEADERVAL_CONTENT_TYPE_UTF8);
- } catch (Exception e) {
- if (e instanceof SOAPException) throw (SOAPException) e;
- throw new SOAPException(Constants.FAULT_CODE_SERVER,
- "Error creating response: " + e,
- e);
+ if (call != null) {
+ // process the RPC return value
+ try {
+ Response resp = new Response(targetObjectURI, methodName, ret, null,
+ null, respEncStyle, resContext);
+ Envelope env = resp.buildEnvelope();
+ StringWriter sw = new StringWriter();
+ env.marshall(sw, call.getSOAPMappingRegistry(), resContext);
+ resContext.setRootPart(sw.toString(), Constants.HEADERVAL_CONTENT_TYPE_UTF8);
+ } catch (Exception e) {
+ if (e instanceof SOAPException) throw (SOAPException) e;
+ throw new SOAPException(Constants.FAULT_CODE_SERVER,
+ "Error creating response: " + e,
+ e);
+ }
}
- }
+ }
}
1.6 +62 -0 xml-soap/java/src/org/apache/soap/providers/EntityEJBProvider.java
Index: EntityEJBProvider.java
===================================================================
RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/providers/EntityEJBProvider.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- EntityEJBProvider.java 28 Aug 2002 18:53:40 -0000 1.5
+++ EntityEJBProvider.java 11 Oct 2002 18:41:41 -0000 1.6
@@ -1,3 +1,60 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 2000 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "SOAP" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2000, International
+ * Business Machines, Inc., http://www.apache.org. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
package org.apache.soap.providers;
import java.io.* ;
@@ -32,6 +89,11 @@
String targetObjectURI,
SOAPContext reqContext) throws SOAPException {
+ if (origCall == null) {
+ throw new SOAPException(Constants.FAULT_CODE_SERVER,
+ "The provider only supports RPC calls.");
+ }
+
HttpServlet servletRef = (HttpServlet) reqContext.getProperty( Constants.BAG_HTTPSERVLET );
HttpSession sessObj = (HttpSession) reqContext.getProperty( Constants.BAG_HTTPSESSION );
1.10 +62 -0 xml-soap/java/src/org/apache/soap/providers/StatefulEJBProvider.java
Index: StatefulEJBProvider.java
===================================================================
RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/providers/StatefulEJBProvider.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- StatefulEJBProvider.java 28 Aug 2002 18:53:40 -0000 1.9
+++ StatefulEJBProvider.java 11 Oct 2002 18:41:41 -0000 1.10
@@ -1,3 +1,60 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 2000 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "SOAP" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2000, International
+ * Business Machines, Inc., http://www.apache.org. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
package org.apache.soap.providers;
import java.io.* ;
@@ -230,6 +287,11 @@
SOAPContext reqContext)
throws SOAPException {
+ if (origCall == null) {
+ throw new SOAPException(Constants.FAULT_CODE_SERVER,
+ "The provider only supports RPC calls.");
+ }
+
HttpServlet servletRef = (HttpServlet) reqContext.getProperty( Constants.BAG_HTTPSERVLET );
HttpSession sessObj = (HttpSession) reqContext.getProperty( Constants.BAG_HTTPSESSION );
1.9 +62 -42 xml-soap/java/src/org/apache/soap/providers/StatelessEJBProvider.java
Index: StatelessEJBProvider.java
===================================================================
RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/providers/StatelessEJBProvider.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- StatelessEJBProvider.java 29 Aug 2002 20:06:13 -0000 1.8
+++ StatelessEJBProvider.java 11 Oct 2002 18:41:41 -0000 1.9
@@ -136,30 +136,38 @@
Parameter ret = null;
Object[] args = null;
Class[] argTypes = null;
+ String respEncStyle = null;
- String methodName = call.getMethodName();
- Vector methodParameters = call.getParams();
- String respEncStyle = call.getEncodingStyleURI();
-
- if (methodParameters != null) {
- int parametersCount = methodParameters.size ();
- args = new Object[parametersCount];
- argTypes = new Class[parametersCount];
-
- for (int i = 0; i < parametersCount; i++) {
- Parameter param = (Parameter) methodParameters.elementAt (i);
- args[i] = param.getValue ();
- argTypes[i] = param.getType ();
-
- if (respEncStyle == null) {
- respEncStyle = param.getEncodingStyleURI ();
+ if (call != null) {
+ // Set up RPC parameters
+ Vector methodParameters = call.getParams();
+ respEncStyle = call.getEncodingStyleURI();
+
+ if (methodParameters != null) {
+ int parametersCount = methodParameters.size ();
+ args = new Object[parametersCount];
+ argTypes = new Class[parametersCount];
+
+ for (int i = 0; i < parametersCount; i++) {
+ Parameter param = (Parameter) methodParameters.elementAt (i);
+ args[i] = param.getValue ();
+ argTypes[i] = param.getType ();
+
+ if (respEncStyle == null) {
+ respEncStyle = param.getEncodingStyleURI ();
+ }
}
}
+
+ if (respEncStyle == null)
+ respEncStyle = Constants.NS_URI_SOAP_ENC;
+ } else {
+ // Set up message parameters
+ argTypes = new Class[] {Envelope.class, SOAPContext.class,
+ SOAPContext.class};
+ args = new Object[] {envelope, reqContext, resContext};
}
- if (respEncStyle == null)
- respEncStyle = Constants.NS_URI_SOAP_ENC;
-
try {
Method m = MethodUtils.getMethod(remoteObjRef, methodName, argTypes);
Bean result = new Bean(m.getReturnType(), m.invoke(remoteObjRef, args));
@@ -185,24 +193,27 @@
t);
}
- try {
- Response resp = new Response(targetObjectURI, // URI
- call.getMethodName(), // Method
- (Parameter) ret, // ReturnValue
- null, // Params
- null, // Header
- respEncStyle, // encoding
- resContext); // response soapcontext
- Envelope env = resp.buildEnvelope();
- StringWriter sw = new StringWriter();
- env.marshall(sw, call.getSOAPMappingRegistry(), resContext);
- resContext.setRootPart(sw.toString(), Constants.HEADERVAL_CONTENT_TYPE_UTF8);
- } catch( Exception e ) {
- if (e instanceof SOAPException)
- throw (SOAPException) e;
- throw new SOAPException(Constants.FAULT_CODE_SERVER,
- "Error creating response: " + e,
- e);
+ if (call != null) {
+ // process the RPC return value
+ try {
+ Response resp = new Response(targetObjectURI, // URI
+ call.getMethodName(), // Method
+ (Parameter) ret, // ReturnValue
+ null, // Params
+ null, // Header
+ respEncStyle, // encoding
+ resContext); // response soapcontext
+ Envelope env = resp.buildEnvelope();
+ StringWriter sw = new StringWriter();
+ env.marshall(sw, call.getSOAPMappingRegistry(), resContext);
+ resContext.setRootPart(sw.toString(), Constants.HEADERVAL_CONTENT_TYPE_UTF8);
+ } catch( Exception e ) {
+ if (e instanceof SOAPException)
+ throw (SOAPException) e;
+ throw new SOAPException(Constants.FAULT_CODE_SERVER,
+ "Error creating response: " + e,
+ e);
+ }
}
}
@@ -218,11 +229,20 @@
this.methodName = methodName ;
this.targetObjectURI = targetObjectURI ;
- // call on a valid method name?
- if (!RPCRouter.validCall(dd, call)) {
- throw new SOAPException(Constants.FAULT_CODE_SERVER,
- "Method '" + call.getMethodName () +
- "' is not supported.");
+ if (call != null) {
+ // RPC call on a valid method name?
+ if (!RPCRouter.validCall(dd, call)) {
+ throw new SOAPException(Constants.FAULT_CODE_SERVER,
+ "Method '" + call.getMethodName () +
+ "' is not supported.");
+ }
+ } else {
+ // Message on a valid method name?
+ if (!MessageRouter.validMessage(dd, methodName)) {
+ throw new SOAPException(Constants.FAULT_CODE_SERVER,
+ "Method '" + methodName +
+ "' is not supported.");
+ }
}
Hashtable props = dd.getProps();
--
To unsubscribe, e-mail: <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>