Glen, I hate to be a whiner, but your IDE did a lot of this sort of thing
again...
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
On the plus side, in my sandbox I turned on skeletons for ALL serverSide
tests and the build still succeeds! Thanks for putting back the old
functionality!
This brings up another point which I'm not sure how to solve. When you
changed the default of WSDL2Java to NOT generate skeletons, you essentially
changed ALL the WSDL2Java tests to test the NEW generation. So now there
are NO tests to test the old generation. That's a problem. The tests
don't test the same thing, anymore. I could whine and complain and say
they should all have a skeletonDeploy="yes" clause, but that's just as bad
in the other direction - none of the NEW generation would be tested. I've
got some ideas, but none of them satisfy me completely:
1. Add a flag to the build to turn on skeletonDeploy. I don't like this
because skels would no longer be part of the build and someone (Rich or I)
would have to periodically run with skels turned on to make sure we haven't
regressed. And if we HAVE broken, good luck trying to figure out when!
(And whose responsibility IS it to figure out when?)
2. Pick and choose, make half the tests test skels and the other
non-skels. I don't like this because it's only a half-solution for both.
3. Duplicate all serverSide="yes" tests, one set having skeletonDeploy
="yes", the other set ="no". This is the most complete solution, but it
adds 50 tests to our suite in one fell swoop, and folks are already
grumbling about how long the build takes.
Russell Butek
[EMAIL PROTECTED]
[EMAIL PROTECTED] on 04/14/2002 09:35:58 PM
Please respond to [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
cc:
Subject: cvs commit: xml-axis/java/test/wsdl Java2WsdlAntTask.java
gdaniels 02/04/14 19:35:58
Modified: java/samples/bidbuy deploy.wsdd
java/src/org/apache/axis MessageContext.java
java/src/org/apache/axis/configuration SimpleProvider.java
java/src/org/apache/axis/deployment/wsdd WSDDDeployment.java
WSDDService.java
java/src/org/apache/axis/description OperationDesc.java
ServiceDesc.java
java/src/org/apache/axis/encoding
DefaultSOAP12TypeMappingImpl.java
DefaultTypeMappingImpl.java
DeserializationContextImpl.java
SerializationContextImpl.java
TypeMappingRegistryImpl.java
java/src/org/apache/axis/handlers/soap SOAPService.java
java/src/org/apache/axis/message BodyBuilder.java
RPCElement.java RPCHandler.java
java/src/org/apache/axis/utils JavaUtils.java
resources.properties
java/src/org/apache/axis/wsdl Java2WSDL.java WSDL2Java.java
java/src/org/apache/axis/wsdl/fromJava Emitter.java
java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java
JavaSkelWriter.java
java/test/encoding TestArrayListConversions.java
TestXsiType.java
java/test/wsdl Java2WsdlAntTask.java
Log:
The main point of this checkin is:
* Enable Skeletons for real, fill in ServiceDesc implementation to get
metadata from there if appropriate
Along the way:
* Change "create()" to "getSingleton()" on DefaultTypeMappingImpl, since
it
isn't really creating one. Synchronize the method to make thread-safe.
* Give Bidbuy service an explicit namespace mapping
* Default to allowedMethods="*" in JavaDeployWriter if nothing specified
* Add new Skeleton static method to get all operationDescs
* Correctly process input namespace and XML<->Java mappings when writing
Skeletons
* Use addParameter() method to add parameters specified in the
constructor
of an OperationDesc - this ensures they get counted correctly
* Introduce SOAPService.getInitializedServiceDesc(), which will attempt
to
load the impl class and get a typemapping if these things are not
already
set up
* Code cleanup in various places - remove dead code/unused imports, fix
JavaDoc, etc.
Revision Changes Path
1.4 +1 -0 xml-axis/java/samples/bidbuy/deploy.wsdd
Index: deploy.wsdd
===================================================================
RCS file: /home/cvs/xml-axis/java/samples/bidbuy/deploy.wsdd,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- deploy.wsdd 9 Apr 2002 16:58:17 -0000 1.3
+++ deploy.wsdd 15 Apr 2002 02:35:57 -0000 1.4
@@ -12,6 +12,7 @@
xmlns:reg="http://www.soapinterop.org/Registry">
<service name="http://www.soapinterop.org/Bid" provider="java:RPC" >
+ <namespace>http://www.soapinterop.org/Bid</namespace>
<parameter name="className" value="samples.bidbuy.BidService" />
<parameter name="allowedMethods" value="RequestForQuote SimpleBuy
Buy Ping" />
</service>
1.88 +2 -8
xml-axis/java/src/org/apache/axis/MessageContext.java
Index: MessageContext.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/MessageContext.java,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -r1.87 -r1.88
--- MessageContext.java 11 Apr 2002 16:07:35 -0000 1.87
+++ MessageContext.java 15 Apr 2002 02:35:57 -0000 1.88
@@ -183,12 +183,6 @@
/** Our SOAP namespaces and such - defaults to SOAP 1.1 */
private SOAPConstants soapConstants = new SOAP11Constants();
- /**
- * Are we using SOAP encoding? Default is true for RPC services,
- * should be set to false for document/literal.
- */
- private boolean isEncoded = true;
-
private OperationDesc currentOperation = null;
public OperationDesc getOperation()
{
@@ -221,7 +215,7 @@
return null;
}
- ServiceDesc desc = serviceHandler.getServiceDescription();
+ ServiceDesc desc =
serviceHandler.getInitializedServiceDesc(this);
if (desc != null) {
currentOperation = desc.getOperationByElementQName(qname);
@@ -393,7 +387,7 @@
* Set the response message, and make sure that message is
associated
* with this MessageContext.
*
- * @param reqMsg the new response Message.
+ * @param respMsg the new response Message.
*/
public void setResponseMessage(Message respMsg) {
responseMessage = respMsg ;
1.6 +9 -0
xml-axis/java/src/org/apache/axis/configuration/SimpleProvider.java
Index: SimpleProvider.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/configuration/SimpleProvider.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SimpleProvider.java 29 Mar 2002 00:01:26 -0000 1.5
+++ SimpleProvider.java 15 Apr 2002 02:35:57 -0000 1.6
@@ -69,6 +69,7 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.ArrayList;
+import java.util.Set;
/**
* A SimpleProvider is an EngineConfiguration which contains a simple
@@ -102,6 +103,7 @@
/** An optional "default" EngineConfiguration */
EngineConfiguration defaultConfiguration = null;
+ private AxisEngine engine;
/**
* Default constructor.
@@ -123,8 +125,14 @@
*/
public void configureEngine(AxisEngine engine) throws
ConfigurationException
{
+ this.engine = engine;
+
if (defaultConfiguration != null)
defaultConfiguration.configureEngine(engine);
+
+ for (Iterator i = services.values().iterator(); i.hasNext(); ) {
+ ((SOAPService)i.next()).setEngine(engine);
+ }
}
/**
@@ -234,6 +242,7 @@
public void deployService(QName qname, SOAPService service)
{
services.put(qname, service);
+ service.setEngine(engine);
}
public void deployService(String name, SOAPService service)
1.31 +28 -17
xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployment.java
Index: WSDDDeployment.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployment.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- WSDDDeployment.java 29 Mar 2002 00:01:26 -0000 1.30
+++ WSDDDeployment.java 15 Apr 2002 02:35:57 -0000 1.31
@@ -54,27 +54,32 @@
*/
package org.apache.axis.deployment.wsdd;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-import org.apache.axis.*;
-import org.apache.axis.handlers.soap.SOAPService;
-import org.apache.axis.deployment.DeploymentRegistry;
+import org.apache.axis.AxisEngine;
+import org.apache.axis.ConfigurationException;
+import org.apache.axis.Constants;
+import org.apache.axis.EngineConfiguration;
+import org.apache.axis.Handler;
import org.apache.axis.deployment.DeploymentException;
-import org.apache.axis.encoding.ser.BaseSerializerFactory;
+import org.apache.axis.encoding.DeserializerFactory;
+import org.apache.axis.encoding.SerializationContext;
+import org.apache.axis.encoding.SerializerFactory;
+import org.apache.axis.encoding.TypeMapping;
+import org.apache.axis.encoding.TypeMappingRegistry;
+import org.apache.axis.encoding.TypeMappingRegistryImpl;
import org.apache.axis.encoding.ser.BaseDeserializerFactory;
-import org.apache.axis.encoding.*;
-
+import org.apache.axis.encoding.ser.BaseSerializerFactory;
+import org.apache.axis.handlers.soap.SOAPService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Element;
import javax.xml.rpc.namespace.QName;
+import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.Vector;
-import java.util.ArrayList;
-import java.io.IOException;
/**
@@ -98,7 +103,8 @@
/** Mapping of namespaces -> services */
private HashMap namespaceToServices = new HashMap();
-
+ private AxisEngine engine;
+
void addHandler(WSDDHandler handler)
{
handlers.put(handler.getQName(), handler);
@@ -142,10 +148,10 @@
}
/**
- * Put a WSDDHandler into this deployment, replacing any other
- * WSDDHandler which might already be present with the same QName.
+ * Put a WSDDService into this deployment, replacing any other
+ * WSDDService which might already be present with the same QName.
*
- * @param handler a WSDDHandler to insert in this deployment
+ * @param service a WSDDHandler to insert in this deployment
*/
public void deployService(WSDDService service)
{
@@ -480,9 +486,10 @@
return null;
}
+
public void configureEngine(AxisEngine engine)
throws ConfigurationException {
-
+ this.engine = engine;
}
public void writeEngineConfig(AxisEngine engine) throws
ConfigurationException {
@@ -562,5 +569,9 @@
public void removeNamespaceMapping(String namespace)
{
namespaceToServices.remove(namespace);
+ }
+
+ public AxisEngine getEngine() {
+ return engine;
}
}
1.57 +6 -12
xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java
Index: WSDDService.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -r1.56 -r1.57
--- WSDDService.java 12 Apr 2002 22:24:47 -0000 1.56
+++ WSDDService.java 15 Apr 2002 02:35:57 -0000 1.57
@@ -167,6 +167,8 @@
String ns =
XMLUtils.getChildCharacterData(namespaceElements[i]);
namespaces.add(ns);
}
+ if (!namespaces.isEmpty())
+ desc.setNamespaceMappings(namespaces);
Element wsdlElem = getChildElement(e, "wsdlFile");
if (wsdlElem != null) {
@@ -183,11 +185,10 @@
}
/**
- * This method should b used for dynamic deployment using new
WSDDService()
- * etc. It validates some standard parameters for some standard
providers
- * (if any). This is part of Axis. Do this before
deployment.desployService().
- *
- **/
+ * This method can be used for dynamic deployment using new
WSDDService()
+ * etc. It validates some standard parameters for some standard
providers
+ * (if present). Do this before deployment.deployService().
+ */
public void validateDescriptors()
{
String className = this.getParameter("className");
@@ -224,13 +225,6 @@
typeMappings.add(mapping);
}
- /**
- * Add an WSDDOperation to the Service.
- * @param mapping
- **/
- public void addOperation(WSDDOperation operation) {
- operations.add(operation);
- }
protected QName getElementName()
{
1.8 +1 -1
xml-axis/java/src/org/apache/axis/description/OperationDesc.java
Index: OperationDesc.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/description/OperationDesc.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- OperationDesc.java 1 Apr 2002 20:12:16 -0000 1.7
+++ OperationDesc.java 15 Apr 2002 02:35:57 -0000 1.8
@@ -119,7 +119,7 @@
this.name = name;
this.returnQName = returnQName;
for (int i = 0; i < parameters.length; i++) {
- this.parameters.add(parameters[i]);
+ addParameter(parameters[i]);
}
}
1.17 +80 -56
xml-axis/java/src/org/apache/axis/description/ServiceDesc.java
Index: ServiceDesc.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/description/ServiceDesc.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- ServiceDesc.java 11 Apr 2002 17:08:37 -0000 1.16
+++ ServiceDesc.java 15 Apr 2002 02:35:57 -0000 1.17
@@ -60,10 +60,7 @@
import org.apache.axis.wsdl.Skeleton;
import javax.xml.rpc.namespace.QName;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Field;
@@ -83,9 +80,6 @@
public static final int STYLE_WRAPPED = 2;
public static final int STYLE_MESSAGE = 3;
- /** This becomes true once we've added some operations */
- private boolean hasOperationData = false;
-
/** The name of this service */
private String name = null;
@@ -99,9 +93,6 @@
/** Style */
private int style = STYLE_RPC;
- /** Implementation class name */
- private String className = null;
-
/** Implementation class */
private Class implClass = null;
@@ -109,7 +100,7 @@
private ArrayList operations = new ArrayList();
/** A collection of namespaces which will map to this service */
- private ArrayList namespaceMappings = null;
+ private List namespaceMappings = null;
/**
* Where does our WSDL document live? If this is non-null, the
"?WSDL"
@@ -127,19 +118,26 @@
* a Fault to provide OperationDescs via WSDD.
*/
private boolean isSkeletonClass = false;
- /** Cached copy of the skeleton "getParameterDescStatic" method */
+
+ /** Cached copy of the skeleton "getOperationDescByName" method */
private Method skelMethod = null;
- /** Classes at which we should stop looking up the inheritance chain
*/
+ /** Classes at which we should stop looking up the inheritance chain
+ * when introspecting
+ */
private ArrayList stopClasses = null;
/** Lookup caches */
private HashMap name2OperationsMap = null;
private HashMap qname2OperationMap = null;
private HashMap method2OperationMap = new HashMap();
+
+ /** Method names for which we have completed any introspection
necessary */
private ArrayList completedNames = new ArrayList();
+ /** Our typemapping for resolving Java<->XML type issues */
private TypeMapping tm = null;
+ private boolean haveAllSkeletonMethods = false;
/**
* Default constructor
@@ -190,6 +188,10 @@
}
public void setImplClass(Class implClass) {
+ if (this.implClass != null)
+ throw new IllegalArgumentException(
+ JavaUtils.getMessage("implAlreadySet"));
+
this.implClass = implClass;
if (Skeleton.class.isAssignableFrom(implClass)) {
isSkeletonClass = true;
@@ -198,7 +200,32 @@
}
private void loadSkeletonOperations() {
+ Method method = null;
+ try {
+ method = implClass.getDeclaredMethod("getOperationDescs",
+ new Class [] {});
+ } catch (NoSuchMethodException e) {
+ } catch (SecurityException e) {
+ }
+ if (method == null) {
+ // FIXME : Throw an error?
+ return;
+ }
+ try {
+ Collection opers = (Collection)method.invoke(implClass,
null);
+ for (Iterator i = opers.iterator(); i.hasNext();) {
+ OperationDesc skelDesc = (OperationDesc)i.next();
+ addOperationDesc(skelDesc);
+ }
+ } catch (IllegalAccessException e) {
+ return;
+ } catch (IllegalArgumentException e) {
+ return;
+ } catch (InvocationTargetException e) {
+ return;
+ }
+ haveAllSkeletonMethods = true;
}
public TypeMapping getTypeMapping() {
@@ -302,32 +329,13 @@
*/
public OperationDesc getOperationByElementQName(QName qname)
{
- // If we're an RPC service, we ignore the namespace... should
fix
- // this later!
- if (style == STYLE_RPC) {
- return getOperationByName(qname.getLocalPart());
- }
-
- // If we're MESSAGE style, we should only have a single
operation,
- // to which we'll pass any XML we receive.
- if (style == STYLE_MESSAGE) {
- return (OperationDesc)operations.get(0);
- }
-
- // If we're DOCUMENT style, we look in our mapping of QNames ->
- // operations instead. But first, let's make sure we've
initialized
- // said mapping....
- initQNameMap();
-
- ArrayList overloads = (ArrayList)qname2OperationMap.get(qname);
- if (overloads == null)
- return null;
-
- OperationDesc oper = (OperationDesc)overloads.get(0);
- getSyncedOperationsForName(implClass, oper.getName());
+ OperationDesc [] overloads = getOperationsByQName(qname);
// Return the first one....
- return oper;
+ if ((overloads != null) && overloads.length > 0)
+ return overloads[0];
+
+ return null;
}
/**
@@ -336,12 +344,6 @@
*/
public OperationDesc [] getOperationsByQName(QName qname)
{
- // If we're an RPC service, we ignore the namespace... should
fix
- // this later!
- if (style == STYLE_RPC) {
- return getOperationsByName(qname.getLocalPart());
- }
-
// If we're MESSAGE style, we should only have a single
operation,
// to which we'll pass any XML we receive.
if (style == STYLE_MESSAGE) {
@@ -355,9 +357,15 @@
ArrayList overloads = (ArrayList)qname2OperationMap.get(qname);
- if (overloads == null)
- return null;
-
+ if (overloads == null) {
+ if ((style == STYLE_RPC) && (name2OperationsMap != null)) {
+ // Try ignoring the namespace....?
+ overloads
= (ArrayList)name2OperationsMap.get(qname.getLocalPart());
+ }
+ if (overloads == null)
+ return null;
+ }
+
getSyncedOperationsForName(implClass,
((OperationDesc)overloads.get(0)).getName
));
@@ -367,6 +375,8 @@
private synchronized void initQNameMap() {
if (qname2OperationMap == null) {
+ loadServiceDescByIntrospection();
+
qname2OperationMap = new HashMap();
for (Iterator i = operations.iterator(); i.hasNext();) {
OperationDesc operationDesc = (OperationDesc) i.next();
@@ -549,15 +559,15 @@
// If we're a skeleton class, make sure we don't already have
any
// OperationDescs for this name (as that might cause conflicts),
// then load them up from the Skeleton class.
- if (isSkeletonClass) {
+ if (isSkeletonClass && !haveAllSkeletonMethods) {
// FIXME : Check for existing ones and fault if found
if (skelMethod == null) {
// Grab metadata from the Skeleton for parameter info
try {
skelMethod = implClass.getDeclaredMethod(
- "getOperationDescsByName",
- new Class [] { int.class });
+ "getOperationDescByName",
+ new Class [] { String.class
});
} catch (NoSuchMethodException e) {
} catch (SecurityException e) {
}
@@ -567,13 +577,11 @@
}
}
try {
- OperationDesc [] skelDescs =
- (OperationDesc [])skelMethod.invoke(implClass,
- new Object [] { methodName
});
- for (int i = 0; i < skelDescs.length; i++) {
- OperationDesc operationDesc = skelDescs[i];
- addOperationDesc(operationDesc);
- }
+ OperationDesc skelDesc =
+ (OperationDesc)skelMethod.invoke(implClass,
+ new Object [] { methodName });
+ if (skelDesc != null)
+ addOperationDesc(skelDesc);
} catch (IllegalAccessException e) {
return;
} catch (IllegalArgumentException e) {
@@ -658,6 +666,12 @@
// Make an OperationDesc, fill in common stuff
OperationDesc operation = new OperationDesc();
operation.setName(method.getName());
+ if (namespaceMappings != null && !namespaceMappings.isEmpty()) {
+ // If we have a default namespace mapping, require callers
to
+ // use that namespace.
+ String defaultNS = (String)namespaceMappings.get(0);
+ operation.setElementQName(new QName(defaultNS,
method.getName()));
+ }
operation.setMethod(method);
Class retClass = method.getReturnType();
operation.setReturnClass(retClass);
@@ -721,5 +735,15 @@
addOperationDesc(operation);
method2OperationMap.put(method, operation);
+ }
+
+ public void setNamespaceMappings(List namespaces) {
+ namespaceMappings = namespaces;
+ }
+
+ public void setDefaultNamespace(String namespace) {
+ if (namespaceMappings == null)
+ namespaceMappings = new ArrayList();
+ namespaceMappings.add(0, namespace);
}
}
1.2 +1 -1
xml-axis/java/src/org/apache/axis/encoding/DefaultSOAP12TypeMappingImpl.java
Index: DefaultSOAP12TypeMappingImpl.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/DefaultSOAP12TypeMappingImpl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultSOAP12TypeMappingImpl.java 1 Feb 2002 22:08:25 -0000 1.1
+++ DefaultSOAP12TypeMappingImpl.java 15 Apr 2002 02:35:57 -0000 1.2
@@ -109,7 +109,7 @@
super();
// This default type mapping only contains the SOAP 1.2
differences.
// delegate to the DefaultTypeMapping as necessary.
- delegate = DefaultTypeMappingImpl.create();
+ delegate = DefaultTypeMappingImpl.getSingleton();
// Notes:
// 1) The registration statements are order dependent. The last
one
1.20 +16 -33
xml-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java
Index: DefaultTypeMappingImpl.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- DefaultTypeMappingImpl.java 11 Apr 2002 16:17:55 -0000 1.19
+++ DefaultTypeMappingImpl.java 15 Apr 2002 02:35:57 -0000 1.20
@@ -56,38 +56,10 @@
package org.apache.axis.encoding;
import org.apache.axis.Constants;
+import org.apache.axis.encoding.ser.*;
-import javax.xml.rpc.namespace.QName;
import javax.xml.rpc.JAXRPCException;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.axis.encoding.ser.ArraySerializerFactory;
-import org.apache.axis.encoding.ser.ArrayDeserializerFactory;
-import org.apache.axis.encoding.ser.BeanSerializerFactory;
-import org.apache.axis.encoding.ser.BeanDeserializerFactory;
-import org.apache.axis.encoding.ser.CalendarSerializerFactory;
-import org.apache.axis.encoding.ser.CalendarDeserializerFactory;
-import org.apache.axis.encoding.ser.DateSerializerFactory;
-import org.apache.axis.encoding.ser.DateDeserializerFactory;
-import org.apache.axis.encoding.ser.Base64SerializerFactory;
-import org.apache.axis.encoding.ser.Base64DeserializerFactory;
-import org.apache.axis.encoding.ser.MapSerializerFactory;
-import org.apache.axis.encoding.ser.MapDeserializerFactory;
-import org.apache.axis.encoding.ser.HexSerializerFactory;
-import org.apache.axis.encoding.ser.HexDeserializerFactory;
-import org.apache.axis.encoding.ser.ElementSerializerFactory;
-import org.apache.axis.encoding.ser.ElementDeserializerFactory;
-import org.apache.axis.encoding.ser.QNameSerializerFactory;
-import org.apache.axis.encoding.ser.QNameDeserializerFactory;
-import org.apache.axis.encoding.ser.VectorDeserializerFactory;
-import org.apache.axis.encoding.ser.VectorSerializerFactory;
-import org.apache.axis.encoding.ser.SimpleDeserializerFactory;
-import org.apache.axis.encoding.ser.SimplePrimitiveSerializerFactory;
-import org.apache.axis.encoding.ser.SimpleNonPrimitiveSerializerFactory;
-import java.util.Vector;
-import java.util.Hashtable;
+import javax.xml.rpc.namespace.QName;
import java.util.List;
/**
@@ -116,10 +88,11 @@
public class DefaultTypeMappingImpl extends TypeMappingImpl {
private static DefaultTypeMappingImpl tm = null;
+
/**
- * Construct TypeMapping
+ * Obtain the singleton default typemapping.
*/
- public static TypeMapping create() {
+ public static synchronized TypeMapping getSingleton() {
if (tm == null) {
tm = new DefaultTypeMappingImpl();
}
@@ -336,13 +309,23 @@
* @param sf is the ser factory (if null, the simple factory is
used)
* @param df is the deser factory (if null, the simple factory is
used)
* @param primitive indicates whether serializers can be shared
- * @param onlyDeserFactory indicates if only deserialization is
desired.
*/
protected void myRegister(QName xmlType, Class javaType,
SerializerFactory sf, DeserializerFactory
df,
boolean primitive) {
myRegister(xmlType, javaType, sf, df, primitive, false);
}
+
+ /**
+ * Construct TypeMapping for all the [xmlType, javaType] for all of
the
+ * known xmlType namespaces
+ * @param xmlType is the QName type
+ * @param javaType is the java type
+ * @param sf is the ser factory (if null, the simple factory is
used)
+ * @param df is the deser factory (if null, the simple factory is
used)
+ * @param primitive indicates whether serializers can be shared
+ * @param onlyDeserFactory indicates if only deserialization is
desired.
+ */
protected void myRegister(QName xmlType, Class javaType,
SerializerFactory sf, DeserializerFactory
df,
boolean primitive, boolean
onlyDeserFactory) {
1.24 +13 -10
xml-axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java
Index: DeserializationContextImpl.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- DeserializationContextImpl.java 12 Apr 2002 09:46:36 -0000
1.23
+++ DeserializationContextImpl.java 15 Apr 2002 02:35:57 -0000
1.24
@@ -111,7 +111,7 @@
private SAX2EventRecorder recorder = new SAX2EventRecorder();
private SOAPEnvelope envelope;
-
+
/* A map of IDs -> IDResolvers */
private HashMap idMap;
@@ -225,6 +225,9 @@
public void setCurElement(MessageElement el)
{
curElement = el;
+ if (curElement.getRecorder() != recorder) {
+ recorder = curElement.getRecorder();
+ }
}
@@ -380,7 +383,7 @@
/**
* Convenenience method that returns true if the value is nil
* (due to the xsi:nil) attribute.
- * @param attributes are the element attributes.
+ * @param attrs are the element attributes.
* @return true if xsi:nil is true
*/
public boolean isNil(Attributes attrs) {
@@ -472,7 +475,7 @@
* not been processed. If it is not a MessageElement, the Object is
the
* actual deserialized value.
* In addition, this method is invoked to get Object values via
Attachments.
- * @param id is the value of an href attribute (or an Attachment id)
+ * @param href is the value of an href attribute (or an Attachment
id)
* @return MessageElement other Object or null
*/
public Object getObjectByRef(String href) {
@@ -508,18 +511,18 @@
* @param id (id name without the #)
* @param obj is the deserialized object for this id.
*/
- public void addObjectById(String _id, Object obj)
+ public void addObjectById(String id, Object obj)
{
// The resolver uses the href syntax as the key.
- String id = "#" + _id;
+ String idStr = "#" + id;
if ((idMap == null) || (id == null))
return ;
- IDResolver resolver = (IDResolver)idMap.get(id);
+ IDResolver resolver = (IDResolver)idMap.get(idStr);
if (resolver == null)
return ;
- resolver.addReferencedObject(id, obj);
+ resolver.addReferencedObject(idStr, obj);
return;
}
@@ -640,6 +643,9 @@
*/
}
curElement = elem;
+
+ if (elem.getRecorder() != recorder)
+ recorder = elem.getRecorder();
}
/****************************************************************
@@ -802,9 +808,6 @@
/**
* startElement is called when an element is read. This is the big
work-horse.
*
- * This is a big workhorse. Manage the state of the parser, check
for
- * basic SOAP compliance (envelope, then optional header, then body,
etc).
- *
* This guy also handles monitoring the recording depth if we're
recording
* (so we know when to stop).
*/
1.20 +1 -1
xml-axis/java/src/org/apache/axis/encoding/SerializationContextImpl.java
Index: SerializationContextImpl.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializationContextImpl.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- SerializationContextImpl.java 8 Apr 2002 15:43:14 -0000 1.19
+++ SerializationContextImpl.java 15 Apr 2002 02:35:57 -0000 1.20
@@ -280,7 +280,7 @@
{
// Always allow the default mappings
if (msgContext == null)
- return DefaultTypeMappingImpl.create();
+ return DefaultTypeMappingImpl.getSingleton();
String encodingStyle = msgContext.getEncodingStyle();
if (encodingStyle == null)
1.8 +1 -1
xml-axis/java/src/org/apache/axis/encoding/TypeMappingRegistryImpl.java
Index: TypeMappingRegistryImpl.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/TypeMappingRegistryImpl.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- TypeMappingRegistryImpl.java 27 Mar 2002 20:24:06 -0000 1.7
+++ TypeMappingRegistryImpl.java 15 Apr 2002 02:35:57 -0000 1.8
@@ -175,7 +175,7 @@
mapTM = new HashMap();
if
(Constants.URI_CURRENT_SOAP_ENC.equals(Constants.URI_SOAP_ENC))
{
defaultDelTM =
- new TypeMappingImpl(DefaultTypeMappingImpl.create());
+ new TypeMappingImpl(DefaultTypeMappingImpl.getSingleton
());
} else {
defaultDelTM =
new TypeMappingImpl(DefaultSOAP12TypeMappingImpl.create
());
1.57 +53 -18
xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java
Index: SOAPService.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -r1.56 -r1.57
--- SOAPService.java 12 Apr 2002 09:46:36 -0000 1.56
+++ SOAPService.java 15 Apr 2002 02:35:57 -0000 1.57
@@ -58,39 +58,33 @@
import org.apache.axis.AxisFault;
import org.apache.axis.Constants;
import org.apache.axis.Handler;
-import org.apache.axis.handlers.BasicHandler;
import org.apache.axis.Message;
import org.apache.axis.MessageContext;
import org.apache.axis.SimpleTargetedChain;
-import org.apache.axis.description.OperationDesc;
import org.apache.axis.description.ServiceDesc;
-import org.apache.axis.providers.java.MsgProvider;
-import org.apache.axis.encoding.DeserializerFactory;
-import org.apache.axis.encoding.Serializer;
import org.apache.axis.encoding.TypeMappingRegistry;
-import org.apache.axis.encoding.TypeMapping;
import org.apache.axis.encoding.TypeMappingRegistryImpl;
+import org.apache.axis.encoding.TypeMapping;
+import org.apache.axis.encoding.DefaultTypeMappingImpl;
+import org.apache.axis.handlers.BasicHandler;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.message.SOAPHeaderElement;
import org.apache.axis.utils.JavaUtils;
import org.apache.axis.utils.LockableHashtable;
import org.apache.axis.utils.XMLUtils;
-
+import org.apache.axis.utils.cache.ClassCache;
+import org.apache.axis.utils.cache.JavaClass;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
import org.w3c.dom.Document;
-import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
import javax.xml.rpc.namespace.QName;
-import java.util.Enumeration;
-import java.util.Vector;
+import java.io.FileInputStream;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.Enumeration;
import java.util.Hashtable;
-import java.beans.IntrospectionException;
-import java.io.File;
-import java.io.FileInputStream;
+import java.util.Vector;
/** A <code>SOAPService</code> is a Handler which encapsulates a SOAP
* invocation. It has an request chain, an response chain, and a
pivot-point,
@@ -121,6 +115,7 @@
* metadata about this service.
*/
private ServiceDesc serviceDescription = new ServiceDesc();
+ private AxisEngine engine;
/**
* SOAPRequestHandler is used to inject SOAP semantics just before
@@ -211,8 +206,6 @@
private void initTypeMappingRegistry() {
tmr = new TypeMappingRegistryImpl();
- // The TMR has the SOAP/XSD in the default TypeMapping
- //tmr.setParent(SOAPTypeMappingRegistry.getSingleton());
}
public TypeMappingRegistry getTypeMappingRegistry()
@@ -239,7 +232,9 @@
*/
public void setEngine(AxisEngine engine)
{
- tmr.delegate(engine.getTypeMappingRegistry());
+ this.engine = engine;
+ if (engine != null)
+ tmr.delegate(engine.getTypeMappingRegistry());
}
public boolean availableFromTransport(String transportName)
@@ -265,6 +260,46 @@
}
public ServiceDesc getServiceDescription() {
+ return serviceDescription;
+ }
+
+ public ServiceDesc getInitializedServiceDesc(MessageContext
msgContext) {
+ if (serviceDescription.getImplClass() == null) {
+ String clsName = (String)getOption("className");
+
+ if (clsName != null) {
+ ClassLoader cl = null;
+ if (msgContext == null) {
+ cl = Thread.currentThread().getContextClassLoader();
+ } else {
+ cl = msgContext.getClassLoader();
+ }
+ if (engine != null) {
+ ClassCache cache = engine.getClassCache();
+ JavaClass jc = null;
+ try {
+ jc = cache.lookup(clsName, cl);
+ serviceDescription.setImplClass(jc.getJavaClass
());
+ } catch (ClassNotFoundException e) {
+ return null;
+ }
+ } else {
+ try {
+ Class cls = cl.loadClass(clsName);
+ serviceDescription.setImplClass(cls);
+ } catch (ClassNotFoundException e) {
+ return null; // FIXME - throw?
+ }
+ }
+ TypeMapping tm;
+ if (msgContext == null) {
+ tm = DefaultTypeMappingImpl.getSingleton();
+ } else {
+ tm = msgContext.getTypeMapping();
+ }
+ serviceDescription.setTypeMapping(tm);
+ }
+ }
return serviceDescription;
}
1.25 +3 -5
xml-axis/java/src/org/apache/axis/message/BodyBuilder.java
Index: BodyBuilder.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/message/BodyBuilder.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- BodyBuilder.java 25 Mar 2002 04:44:02 -0000 1.24
+++ BodyBuilder.java 15 Apr 2002 02:35:57 -0000 1.25
@@ -62,12 +62,8 @@
import org.apache.axis.Constants;
import org.apache.axis.MessageContext;
-import org.apache.axis.AxisFault;
-import org.apache.axis.Handler;
-import org.apache.axis.ConfigurationException;
import org.apache.axis.description.OperationDesc;
import org.apache.axis.description.ServiceDesc;
-import org.apache.axis.handlers.soap.SOAPService;
import org.apache.axis.encoding.DeserializationContext;
import org.apache.axis.utils.JavaUtils;
import org.apache.commons.logging.Log;
@@ -154,7 +150,9 @@
handler = new SOAPHandler();
handler.myElement = element;
-
+
+ //context.pushNewElement(element);
+
if (log.isDebugEnabled()) {
log.debug(JavaUtils.getMessage("exit00",
"BodyBuilder.onStartChild()"));
}
1.52 +2 -21
xml-axis/java/src/org/apache/axis/message/RPCElement.java
Index: RPCElement.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/message/RPCElement.java,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- RPCElement.java 11 Apr 2002 16:24:18 -0000 1.51
+++ RPCElement.java 15 Apr 2002 02:35:57 -0000 1.52
@@ -144,27 +144,8 @@
// Obtain our possible operations
if (service != null) {
- ServiceDesc serviceDesc = service.getServiceDescription();
-
- if (serviceDesc.getImplClass() == null) {
- String clsName = (String)service.getOption("className");
-
- if (clsName != null) {
- ClassLoader cl = msgContext.getClassLoader();
- ClassCache cache = msgContext.getAxisEngine().
- getClassCache();
- JavaClass jc = null;
- try {
- jc = cache.lookup(clsName, cl);
- } catch (ClassNotFoundException e) {
- throw new SAXException(e);
- }
- TypeMapping tm = msgContext.getTypeMapping();
- serviceDesc.setTypeMapping(tm);
- serviceDesc.setImplClass(jc.getJavaClass());
- }
- }
-
+ ServiceDesc serviceDesc =
service.getInitializedServiceDesc(msgContext);
+
// If we've got a service description now, we want to use
// the matching operations in there.
QName qname = new QName(namespaceURI, name);
1.33 +0 -8
xml-axis/java/src/org/apache/axis/message/RPCHandler.java
Index: RPCHandler.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/message/RPCHandler.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- RPCHandler.java 5 Apr 2002 21:24:33 -0000 1.32
+++ RPCHandler.java 15 Apr 2002 02:35:57 -0000 1.33
@@ -61,27 +61,19 @@
*/
import org.apache.axis.Constants;
-import org.apache.axis.Handler;
-import org.apache.axis.Message;
-import org.apache.axis.MessageContext;
import org.apache.axis.description.OperationDesc;
import org.apache.axis.description.ParameterDesc;
-import org.apache.axis.client.Call;
import org.apache.axis.encoding.DeserializationContext;
import org.apache.axis.encoding.Deserializer;
import org.apache.axis.encoding.DeserializerImpl;
-import org.apache.axis.encoding.TypeMapping;
import org.apache.axis.encoding.FieldTarget;
import org.apache.axis.utils.JavaUtils;
-import org.apache.axis.utils.cache.JavaClass;
-import org.apache.axis.utils.cache.ClassCache;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import javax.xml.rpc.namespace.QName;
-import java.lang.reflect.Method;
import java.util.Vector;
/**
1.41 +2 -7
xml-axis/java/src/org/apache/axis/utils/JavaUtils.java
Index: JavaUtils.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/utils/JavaUtils.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- JavaUtils.java 2 Apr 2002 21:24:40 -0000 1.40
+++ JavaUtils.java 15 Apr 2002 02:35:58 -0000 1.41
@@ -389,11 +389,6 @@
return true;
}
-// // FIXME : This is a horrible hack put in here to deal with a
problem
-// // with our default typemappings.
-// if (destHeld != null && (getPrimitiveClass(destHeld) == src))
-// return true;
-
// If it's holder -> held or held -> holder, we're good
Class srcHeld = JavaUtils.getHolderValueType(src);
if (srcHeld != null) {
@@ -717,8 +712,8 @@
* Like String.replace except that the old new items are strings.
*
* @param name string
- * @param oldt old text to replace
- * @param newt new text to use
+ * @param oldT old text to replace
+ * @param newT new text to use
* @return replacement string
**/
public static final String replace (String name,
1.91 +2 -1
xml-axis/java/src/org/apache/axis/utils/resources.properties
Index: resources.properties
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/utils/resources.properties,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -r1.90 -r1.91
--- resources.properties 11 Apr 2002 15:45:09 -0000 1.90
+++ resources.properties 15 Apr 2002 02:35:58 -0000 1.91
@@ -799,7 +799,8 @@
attach.bounday.mns=Marking streams not supported.
noSuchOperation=No such operation ''{0}''
-optionUsername=username to access the WSDL-URI
+optionUsername=username to access the WSDL-URI
optionPassword=password to access the WSDL-URI
cantGetDoc00=Unable to retrieve WSDL document: {0}
+implAlreadySet=Attempt to set implementation class on a ServiceDesc
which has already been configured
1.13 +1 -1
xml-axis/java/src/org/apache/axis/wsdl/Java2WSDL.java
Index: Java2WSDL.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/Java2WSDL.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Java2WSDL.java 19 Mar 2002 15:42:02 -0000 1.12
+++ Java2WSDL.java 15 Apr 2002 02:35:58 -0000 1.13
@@ -318,7 +318,7 @@
String value = option.getArgument();
if (value.equals("1.1")) {
emitter.setDefaultTypeMapping(
- DefaultTypeMappingImpl.create());
+ DefaultTypeMappingImpl.getSingleton());
} else if (value.equals("1.2")) {
emitter.setDefaultTypeMapping(
DefaultSOAP12TypeMappingImpl.create());
1.24 +1 -1
xml-axis/java/src/org/apache/axis/wsdl/WSDL2Java.java
Index: WSDL2Java.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/WSDL2Java.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- WSDL2Java.java 12 Apr 2002 14:17:49 -0000 1.23
+++ WSDL2Java.java 15 Apr 2002 02:35:58 -0000 1.24
@@ -742,7 +742,7 @@
if (typeMappingVersion.equals("1.1")) {
writerFactory.setBaseTypeMapping(
new BaseTypeMapping() {
- final TypeMapping defaultTM =
DefaultTypeMappingImpl.create();
+ final TypeMapping defaultTM =
DefaultTypeMappingImpl.getSingleton();
public String getBaseName(QName qNameIn) {
javax.xml.rpc.namespace.QName qName =
new javax.xml.rpc.namespace.QName(
1.29 +0 -1
xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java
Index: Emitter.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- Emitter.java 3 Apr 2002 06:09:55 -0000 1.28
+++ Emitter.java 15 Apr 2002 02:35:58 -0000 1.29
@@ -786,7 +786,6 @@
retParam.setTypeQName(desc.getReturnType());
retParam.setJavaType(desc.getReturnClass());
retParam.setMode(ParameterDesc.OUT);
- // FIXME : Set Java type??
writePartToMessage(def, msg, false, retParam);
ArrayList parameters = desc.getParameters();
1.36 +5 -5
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java
Index: JavaDeployWriter.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- JavaDeployWriter.java 12 Apr 2002 21:25:52 -0000 1.35
+++ JavaDeployWriter.java 15 Apr 2002 02:35:58 -0000 1.36
@@ -203,7 +203,7 @@
}
writeTypeMapping(namespaceURI, localPart, javaType,
serializerFactory,
deserializerFactory, encodingStyle);
- }
+ }
}
} //writeDeployTypes
@@ -220,8 +220,8 @@
pw.println(" serializer=\"" + serializerFactory + "\"");
pw.println(" deserializer=\"" + deserializerFactory + "
\"");
pw.println(" encodingStyle=\"" + encodingStyle + "\"");
- pw.println(" />");
- }
+ pw.println(" />");
+ }
/**
* Write out deployment and undeployment instructions for given WSDL
port
@@ -339,7 +339,7 @@
paramQName = param.getQName();
if (paramQName == null ||
"".equals(paramQName.getNamespaceURI())) {
paramQName = new QName("", param.getName());
- }
+ }
// Get the parameter mode
if (param.getMode() != Parameter.IN) {
@@ -357,7 +357,7 @@
pw.print(" <parameter name=\"allowedMethods\" value=\"");
if (methodList.length() == 0) {
- pw.println("\"/>");
+ pw.println("*\"/>");
}
else {
pw.println(methodList.substring(1) + "\"/>");
1.21 +34 -65
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java
Index: JavaSkelWriter.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- JavaSkelWriter.java 1 Apr 2002 20:12:17 -0000 1.20
+++ JavaSkelWriter.java 15 Apr 2002 02:35:58 -0000 1.21
@@ -56,7 +56,6 @@
import java.io.IOException;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -67,7 +66,6 @@
import javax.wsdl.Operation;
import javax.wsdl.OperationType;
import javax.wsdl.PortType;
-import javax.wsdl.QName;
import javax.wsdl.extensions.ExtensibilityElement;
@@ -129,6 +127,10 @@
pw.println(" return
(org.apache.axis.description.OperationDesc)
_myOperations.get(methodName);");
pw.println(" }");
pw.println();
+ pw.println(" public static java.util.Collection
getOperationDescs() {");
+ pw.println(" return _myOperations.values();");
+ pw.println(" }");
+ pw.println();
// Initialize operation parameter names
pw.println(" static {");
@@ -142,7 +144,8 @@
if (parameters != null) {
// The invoked java name of the operation is stored.
- String opName =
Utils.xmlNameToJava(operation.getOperation().getName());
+ String opName = operation.getOperation().getName();
+ String javaOpName = Utils.xmlNameToJava(opName);
pw.println(" _params = new
org.apache.axis.description.ParameterDesc [] {");
for (int j=0; j < parameters.list.size(); j++) {
@@ -167,66 +170,7 @@
}
pw.println(" };");
-// if (parameters.returnType != null) {
-// pw.println(" " +
-//
Utils.getNewQName(parameters.returnName) + ",");
-// } else {
-// pw.println(" null,");
-// }
-
-// // Find the input clause's namespace
-// BindingInput input = operation.getBindingInput();
-// if (input == null) {
-// pw.println(" null,");
-// }
-// else {
-// List elems = input.getExtensibilityElements();
-// boolean found = false;
-// Iterator it = elems.iterator();
-// while (!found && it.hasNext()) {
-// ExtensibilityElement elem
= (ExtensibilityElement) it.next();
-// if (elem instanceof SOAPBody) {
-// SOAPBody body = (SOAPBody) elem;
-// String ns = body.getNamespaceURI();
-// if (ns != null) {
-// pw.println(" \"" + ns
+ "\",");
-// found = true;
-// }
-// }
-// }
-// if (!found) {
-// pw.println(" null,");
-// }
-// }
-//
-// // Find the output clause's namespace
-// BindingOutput output = operation.getBindingOutput();
-// if (output == null) {
-// pw.println(" null,");
-// }
-// else {
-// List elems = output.getExtensibilityElements();
-// Iterator it = elems.iterator();
-// boolean found = false;
-// while (!found && it.hasNext()) {
-// ExtensibilityElement elem
= (ExtensibilityElement) it.next();
-// if (elem instanceof SOAPBody) {
-// SOAPBody body = (SOAPBody) elem;
-// String ns = body.getNamespaceURI();
-// if (ns != null) {
-// pw.println(" \"" + ns
+ "\",");
-// found = true;
-// }
-// }
-// }
-// if (!found) {
-// pw.println(" null,");
-// }
-// }
-//
-// if (!found) {
-// pw.println(" null);");
-// }
+
String returnStr;
if (parameters.returnType != null) {
returnStr =
Utils.getNewQName(parameters.returnName);
@@ -234,7 +178,32 @@
returnStr = "null";
}
pw.println(" _oper = new
org.apache.axis.description.OperationDesc(\"" +
- opName + "\", _params, " + returnStr +
");");
+ javaOpName + "\", _params, " + returnStr +
");");
+
+ String ns = "";
+ BindingInput input = operation.getBindingInput();
+ if (input != null) {
+ List elems = input.getExtensibilityElements();
+ Iterator it = elems.iterator();
+ while (it.hasNext()) {
+ ExtensibilityElement elem
= (ExtensibilityElement) it.next();
+ if (elem instanceof SOAPBody) {
+ SOAPBody body = (SOAPBody) elem;
+ ns = body.getNamespaceURI();
+ break;
+ }
+ }
+ }
+
+ // If we need to know the QName (if we have a namespace
or
+ // the actual method name doesn't match the XML we
expect),
+ // record it in the OperationDesc
+ if (!"".equals(ns) || !javaOpName.equals(opName)) {
+ javax.xml.rpc.namespace.QName qn =
+ new javax.xml.rpc.namespace.QName(ns,
opName);
+ pw.println(" _oper.setElementQName(" +
+ Utils.getNewQName(qn) + ");");
+ }
// Find the SOAPAction.
List elems = operation.getExtensibilityElements();
@@ -252,7 +221,7 @@
}
}
- pw.println(" _myOperations.put(\"" + opName + "
\", _oper);");
+ pw.println(" _myOperations.put(\"" + javaOpName +
"\", _oper);");
}
}
pw.println(" }");
1.17 +13 -6
xml-axis/java/test/encoding/TestArrayListConversions.java
Index: TestArrayListConversions.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/test/encoding/TestArrayListConversions.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- TestArrayListConversions.java 22 Mar 2002 16:08:32 -0000 1.16
+++ TestArrayListConversions.java 15 Apr 2002 02:35:58 -0000 1.17
@@ -8,6 +8,8 @@
import org.apache.axis.server.AxisServer;
import org.apache.axis.transport.local.LocalTransport;
import org.apache.axis.configuration.SimpleProvider;
+import org.apache.axis.encoding.DefaultTypeMappingImpl;
+import org.apache.axis.description.ServiceDesc;
import javax.xml.rpc.namespace.QName;
import java.util.Iterator;
@@ -19,6 +21,7 @@
private static final String SERVICE_NAME = "TestArrayConversions";
private AxisServer server;
+ private LocalTransport transport;
public TestArrayListConversions() {
super("service");
@@ -26,7 +29,6 @@
public TestArrayListConversions(String name) {
super(name);
- init();
}
private static boolean equals(List list, Object obj) {
@@ -47,11 +49,16 @@
return true;
}
- public void init() {
+ protected void setUp() throws Exception {
try {
SimpleProvider provider = new SimpleProvider();
server = new AxisServer(provider);
+ transport = new LocalTransport(server);
+
SOAPService service = new SOAPService(new RPCProvider());
+ ServiceDesc desc = service.getInitializedServiceDesc(null);
+ desc.setDefaultNamespace(SERVICE_NAME);
+
service.setOption("className",
"test.encoding.TestArrayListConversions");
service.setOption("allowedMethods", "*");
@@ -64,7 +71,7 @@
public void testVectorConversion() throws Exception {
Call call = new Call(new Service());
- call.setTransport(new LocalTransport(server));
+ call.setTransport(transport);
Vector v = new Vector();
v.addElement("Hi there!");
@@ -76,7 +83,7 @@
public void testLinkedListConversion() throws Exception {
Call call = new Call(new Service());
- call.setTransport(new LocalTransport(server));
+ call.setTransport(transport);
LinkedList l = new LinkedList();
l.add("Linked list item #1");
@@ -90,7 +97,7 @@
public void testArrayConversion() throws Exception {
Call call = new Call(new Service());
- call.setTransport(new LocalTransport(server));
+ call.setTransport(transport);
Vector v = new Vector();
v.addElement("Hi there!");
@@ -108,7 +115,7 @@
*/
public void testReturnAsVector() throws Exception {
Call call = new Call(new Service());
- call.setTransport(new LocalTransport(server));
+ call.setTransport(transport);
LinkedList l = new LinkedList();
l.add("Linked list item #1");
1.12 +0 -3 xml-axis/java/test/encoding/TestXsiType.java
Index: TestXsiType.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/encoding/TestXsiType.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- TestXsiType.java 28 Jan 2002 18:23:03 -0000 1.11
+++ TestXsiType.java 15 Apr 2002 02:35:58 -0000 1.12
@@ -25,9 +25,6 @@
* as expected.
*/
public class TestXsiType extends TestCase {
-
- private String header;
- private String footer;
private SimpleProvider provider = new SimpleProvider();
private AxisServer server = new AxisServer(provider);
1.10 +1 -1 xml-axis/java/test/wsdl/Java2WsdlAntTask.java
Index: Java2WsdlAntTask.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/wsdl/Java2WsdlAntTask.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Java2WsdlAntTask.java 20 Feb 2002 17:17:36 -0000 1.9
+++ Java2WsdlAntTask.java 15 Apr 2002 02:35:58 -0000 1.10
@@ -122,7 +122,7 @@
emitter.setStopClasses(stopClasses);
if (tm.equals("1.1")) {
-
emitter.setDefaultTypeMapping(DefaultTypeMappingImpl.create());
+
emitter.setDefaultTypeMapping(DefaultTypeMappingImpl.getSingleton());
} else {
emitter.setDefaultTypeMapping(DefaultSOAP12TypeMappingImpl.create
));
}