antelder 2002/12/31 06:25:28
Modified: java/src/org/apache/wsif/providers/soap/apacheaxis
WSIFPort_ApacheAxis.java
WSIFOperation_ApacheAxis.java
Log:
Clean up the AXIS provider type mappings for sync/async and remove duplicated code
Revision Changes Path
1.22 +28 -24 xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFPort_ApacheAxis.java
Index: WSIFPort_ApacheAxis.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFPort_ApacheAxis.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- WSIFPort_ApacheAxis.java 7 Dec 2002 12:33:52 -0000 1.21
+++ WSIFPort_ApacheAxis.java 31 Dec 2002 14:25:27 -0000 1.22
@@ -60,18 +60,13 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.wsdl.Binding;
import javax.wsdl.BindingOperation;
import javax.wsdl.Definition;
-import javax.wsdl.Input;
-import javax.wsdl.Operation;
-import javax.wsdl.Output;
import javax.wsdl.Port;
-import javax.wsdl.PortType;
import javax.wsdl.extensions.soap.SOAPAddress;
import javax.wsdl.extensions.soap.SOAPBinding;
import javax.wsdl.extensions.soap.SOAPOperation;
@@ -351,29 +346,38 @@
public Call getCall() throws WSIFException {
Trc.entry(this);
if (call == null) {
- java.net.URL url = getEndPoint();
- try {
- if (url != null) {
- call = new Call(url);
- Transport axistransport = getTransport();
- if (axistransport != null) {
- axistransport.setUrl(url.toString());
- }
- } else {
- call = new Call(new org.apache.axis.client.Service());
- }
- } catch (JAXRPCException e) {
- Trc.exception(e);
- throw new WSIFException(
- "exception creating call object: "
- + e.getLocalizedMessage(),
- e);
- }
+ call = makeNewAXISCall();
}
- call.setMaintainSession(true);
Trc.exit(call);
return call;
}
+
+ /**
+ * Creates a new AXIS Call object
+ */
+ private Call makeNewAXISCall() throws WSIFException {
+ Call c = null;
+ java.net.URL url = getEndPoint();
+ try {
+ if (url != null) {
+ c = new Call(url);
+ Transport axistransport = getTransport();
+ if (axistransport != null) {
+ axistransport.setUrl(url.toString());
+ }
+ } else {
+ c = new Call(new org.apache.axis.client.Service());
+ }
+ c.setMaintainSession(true);
+ } catch (JAXRPCException e) {
+ Trc.exception(e);
+ throw new WSIFException(
+ "exception creating call object: "
+ + e.getLocalizedMessage(),
+ e);
+ }
+ return c;
+ }
/**
* Returns the Definition object for the WSDL file
1.51 +35 -57 xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java
Index: WSIFOperation_ApacheAxis.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- WSIFOperation_ApacheAxis.java 18 Dec 2002 13:54:04 -0000 1.50
+++ WSIFOperation_ApacheAxis.java 31 Dec 2002 14:25:27 -0000 1.51
@@ -171,7 +171,7 @@
protected String outputEncodingStyle;
protected WSIFDynamicTypeMap typeMap;
protected String operationStyle;
-
+
/**
* Construct a new WSIFOperation
*/
@@ -1114,41 +1114,12 @@
MessageContext msgContext = new MessageContext(service.getEngine());
msgContext.setResponseMessage(responseMessage);
- // This registerTypeMapping code is duplicated in prepare
- //registerTypeMappings(call);
- //TODO: need to sort out this duplicated code
TypeMappingRegistry tmr = msgContext.getTypeMappingRegistry();
org.apache.axis.encoding.TypeMapping tm =
(org.apache.axis.encoding.TypeMapping) tmr.getTypeMapping(
outputEncodingStyle);
- Class objClass;
- String namespaceURI, localPart;
- WSIFDynamicTypeMapping wsifdynamictypemapping;
- for (Iterator iterator = typeMap.iterator(); iterator.hasNext();) {
- wsifdynamictypemapping =
- (WSIFDynamicTypeMapping) iterator.next();
- objClass = wsifdynamictypemapping.getJavaType();
- namespaceURI =
- wsifdynamictypemapping.getXmlType().getNamespaceURI();
-
- // Filter out XSD and SOAP-ENC types from those we explicitly map.
- // Axis already knows how to deal with these; using the BeanSerializer
- // would be wrong anyway as they represent simple types and not beans.
- if (namespaceURI != null
- && !namespaceURI.equals(WSIFConstants.NS_URI_1999_SCHEMA_XSD)
- && !namespaceURI.equals(WSIFConstants.NS_URI_2000_SCHEMA_XSD)
- && !namespaceURI.equals(WSIFConstants.NS_URI_2001_SCHEMA_XSD)
- && !namespaceURI.equals(WSIFConstants.NS_URI_SOAP_ENC)) {
- localPart =
- wsifdynamictypemapping.getXmlType().getLocalPart();
- QName qn = new QName(namespaceURI, localPart);
- BeanSerializerFactory bsf =
- new BeanSerializerFactory(objClass, qn);
- BeanDeserializerFactory bdf =
- new BeanDeserializerFactory(objClass, qn);
- tm.register(objClass, qn, bsf, bdf);
- }
- }
+
+ registerTypeMappings(tm, typeMap);
Message resMsg = msgContext.getResponseMessage();
SOAPEnvelope resEnv = resMsg.getSOAPEnvelope();
@@ -1323,7 +1294,7 @@
throws WSIFException {
Trc.entry(this, inMsg, outMsg, faultMsg);
- Call call = wsifPort.getCall();
+ Call call = wsifPort.getCall();
// Make sure we're making a fresh start.
call.removeAllParameters();
@@ -1510,7 +1481,7 @@
Trc.entry(this, inMsg, outMsg, faultMsg);
boolean workedOK = false;
- Call call = wsifPort.getCall();
+ Call call = wsifPort.getCall();
// Make sure we're making a fresh start.
call.removeAllParameters();
@@ -1758,7 +1729,7 @@
}
// register any WSIFDynamicTypeMappings
- registerTypeMappings(call);
+ registerTypeMappings(call.getTypeMapping(), typeMap);
registerMIMETypes(
inputMIMEParts,
@@ -1775,11 +1746,10 @@
* Register all the type mappings with the AXIS Call object
* TODO: why is this here and not in the port and done when Cal is created?
*/
- private void registerTypeMappings(Call call) throws WSIFException {
+ private static void registerTypeMappings(TypeMapping tm, WSIFDynamicTypeMap typeMap) throws
WSIFException {
Class objClass;
String namespaceURI, localPart;
WSIFDynamicTypeMapping wsifdynamictypemapping;
- TypeMapping tm = call.getTypeMapping();
for (Iterator iterator = typeMap.iterator(); iterator.hasNext();) {
wsifdynamictypemapping = (WSIFDynamicTypeMapping) iterator.next();
objClass = wsifdynamictypemapping.getJavaType();
@@ -1787,20 +1757,21 @@
SerializerFactory sf = null;
DeserializerFactory df = null;
- if (tm.getSerializer(objClass, xmlType) == null) {
- if (objClass.isArray()) {
- sf = new ArraySerializerFactory();
- } else {
- sf = new BeanSerializerFactory(objClass, xmlType);
- }
- }
- if (tm.getDeserializer(objClass, xmlType) == null) {
- if (objClass.isArray()) {
- df = new ArrayDeserializerFactory();
- } else {
- df = new BeanDeserializerFactory(objClass, xmlType);
- }
- }
+
+ if (tm.getSerializer(objClass, xmlType) == null) {
+ if (objClass.isArray()) {
+ sf = new ArraySerializerFactory();
+ } else {
+ sf = new BeanSerializerFactory(objClass, xmlType);
+ }
+ }
+ if (tm.getDeserializer(objClass, xmlType) == null) {
+ if (objClass.isArray()) {
+ df = new ArrayDeserializerFactory();
+ } else {
+ df = new BeanDeserializerFactory(objClass, xmlType);
+ }
+ }
namespaceURI =
wsifdynamictypemapping.getXmlType().getNamespaceURI();
@@ -1808,20 +1779,27 @@
// Filter out XSD and SOAP-ENC types from those we explicitly map.
// Axis already knows how to deal with these; using the BeanSerializer
// would be wrong anyway as they represent simple types and not beans.
- if (namespaceURI != null
- && !namespaceURI.equals(WSIFConstants.NS_URI_1999_SCHEMA_XSD)
- && !namespaceURI.equals(WSIFConstants.NS_URI_2000_SCHEMA_XSD)
- && !namespaceURI.equals(WSIFConstants.NS_URI_2001_SCHEMA_XSD)
- && !namespaceURI.equals(WSIFConstants.NS_URI_SOAP_ENC)) {
+ if (!isDefaultSOAPNamespace(namespaceURI) ) {
localPart = wsifdynamictypemapping.getXmlType().getLocalPart();
QName qn = new QName(namespaceURI, localPart);
if (sf != null || df != null) {
- call.registerTypeMapping(objClass, qn, sf, df);
+ tm.register(objClass, qn, sf, df);
}
}
}
+ }
+
+ private static boolean isDefaultSOAPNamespace(String ns) {
+ boolean soapNamespace = false;
+ if (WSIFConstants.NS_URI_1999_SCHEMA_XSD.equals(ns)
+ || WSIFConstants.NS_URI_2000_SCHEMA_XSD.equals(ns)
+ || WSIFConstants.NS_URI_2001_SCHEMA_XSD.equals(ns)
+ || WSIFConstants.NS_URI_SOAP_ENC.equals(ns) ){
+ soapNamespace = true;
+ }
+ return soapNamespace;
}
/**
|