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());
}