You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by gd...@apache.org on 2005/02/26 22:37:33 UTC
cvs commit: ws-axis/java/test/typedesc TestTypesNonBeanCompatible.java
gdaniels 2005/02/26 13:37:33
Modified: java/samples/encoding TestSer.java
java/src/org/apache/axis AxisEngine.java
java/src/org/apache/axis/deployment/wsdd WSDDService.java
java/src/org/apache/axis/description JavaServiceDesc.java
java/src/org/apache/axis/encoding
DefaultJAXRPC11TypeMappingImpl.java
DefaultSOAPEncodingTypeMappingImpl.java
DefaultTypeMappingImpl.java
SerializationContext.java TypeMappingDelegate.java
TypeMappingImpl.java TypeMappingRegistryImpl.java
java/test/RPCDispatch TestSerializedRPC.java
java/test/servicedesc TestServiceDesc.java
java/test/typedesc TestTypesNonBeanCompatible.java
Log:
Some cleanup for TypeMappings - share defaults again, produce a
few less instances, delegate a little better.
Revision Changes Path
1.29 +1 -5 ws-axis/java/samples/encoding/TestSer.java
Index: TestSer.java
===================================================================
RCS file: /home/cvs/ws-axis/java/samples/encoding/TestSer.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- TestSer.java 29 Jul 2004 21:40:26 -0000 1.28
+++ TestSer.java 26 Feb 2005 21:37:32 -0000 1.29
@@ -54,11 +54,7 @@
SerializationContext context = new SerializationContext(stringWriter, msgContext);
TypeMappingRegistry reg = context.getTypeMappingRegistry();
- TypeMapping tm = (TypeMapping) reg.getTypeMapping(Constants.URI_SOAP11_ENC);
- if (tm == null) {
- tm = (TypeMapping) reg.createTypeMapping();
- reg.register(Constants.URI_DEFAULT_SOAP_ENC, tm);
- }
+ TypeMapping tm = (TypeMapping) reg.getOrMakeTypeMapping(Constants.URI_SOAP11_ENC);
tm.register(Data.class, dataQName, new DataSerFactory(), new DataDeserFactory());
msg.output(context);
1.120 +1 -1 ws-axis/java/src/org/apache/axis/AxisEngine.java
Index: AxisEngine.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/AxisEngine.java,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -r1.119 -r1.120
--- AxisEngine.java 10 Feb 2005 18:14:39 -0000 1.119
+++ AxisEngine.java 26 Feb 2005 21:37:33 -0000 1.120
@@ -166,7 +166,7 @@
}
// The SOAP/XSD stuff is in the default TypeMapping of the TypeMappingRegistry.
- //getTypeMappingRegistry().setParent(SOAPTypeMappingRegistry.getSingleton());
+ //getTypeMappingRegistry().setParent(SOAPTypeMappingRegistry.getSingletonDelegate());
try {
config.configureEngine(this);
1.112 +2 -2 ws-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java
Index: WSDDService.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -r1.111 -r1.112
--- WSDDService.java 24 Feb 2005 21:59:54 -0000 1.111
+++ WSDDService.java 26 Feb 2005 21:37:33 -0000 1.112
@@ -249,7 +249,7 @@
}
private void createTMR() {
- tmr = new TypeMappingRegistryImpl();
+ tmr = new TypeMappingRegistryImpl(false);
String version = getParameter("typeMappingVersion");
((TypeMappingRegistryImpl)tmr).doRegisterFromVersion(version);
}
@@ -677,7 +677,7 @@
if (tmr == null) {
return null;
}
- return (TypeMapping) tmr.getTypeMapping(encodingStyle);
+ return (TypeMapping) tmr.getOrMakeTypeMapping(encodingStyle);
}
1.24 +4 -3 ws-axis/java/src/org/apache/axis/description/JavaServiceDesc.java
Index: JavaServiceDesc.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/description/JavaServiceDesc.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- JavaServiceDesc.java 24 Feb 2005 21:59:54 -0000 1.23
+++ JavaServiceDesc.java 26 Feb 2005 21:37:33 -0000 1.24
@@ -141,7 +141,7 @@
private ArrayList completedNames = new ArrayList();
/** Our typemapping for resolving Java<->XML type issues */
- private TypeMapping tm = DefaultTypeMappingImpl.getSingleton();
+ private TypeMapping tm = null;
private TypeMappingRegistry tmr = null;
private boolean haveAllSkeletonMethods = false;
@@ -291,7 +291,8 @@
public TypeMapping getTypeMapping() {
if(tm == null) {
- throw new RuntimeException(Messages.getMessage("noDefaultTypeMapping00"));
+ return DefaultTypeMappingImpl.getSingletonDelegate();
+// throw new RuntimeException(Messages.getMessage("noDefaultTypeMapping00"));
}
return tm;
}
@@ -1445,7 +1446,7 @@
public TypeMappingRegistry getTypeMappingRegistry() {
if (tmr == null) {
- tmr = new TypeMappingRegistryImpl();
+ tmr = new TypeMappingRegistryImpl(false);
}
return tmr;
}
1.12 +2 -6 ws-axis/java/src/org/apache/axis/encoding/DefaultJAXRPC11TypeMappingImpl.java
Index: DefaultJAXRPC11TypeMappingImpl.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/encoding/DefaultJAXRPC11TypeMappingImpl.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- DefaultJAXRPC11TypeMappingImpl.java 24 Feb 2005 21:59:54 -0000 1.11
+++ DefaultJAXRPC11TypeMappingImpl.java 26 Feb 2005 21:37:33 -0000 1.12
@@ -35,15 +35,11 @@
/**
* Obtain the singleton default typemapping.
*/
- public static synchronized TypeMappingDelegate getSingleton() {
+ public static synchronized TypeMappingImpl getSingleton() {
if (tm == null) {
tm = new DefaultJAXRPC11TypeMappingImpl();
}
- return new TypeMappingDelegate(tm);
- }
-
- public static TypeMappingImpl create() {
- return new DefaultJAXRPC11TypeMappingImpl();
+ return tm;
}
protected DefaultJAXRPC11TypeMappingImpl() {
1.11 +3 -7 ws-axis/java/src/org/apache/axis/encoding/DefaultSOAPEncodingTypeMappingImpl.java
Index: DefaultSOAPEncodingTypeMappingImpl.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/encoding/DefaultSOAPEncodingTypeMappingImpl.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DefaultSOAPEncodingTypeMappingImpl.java 24 Feb 2005 21:59:54 -0000 1.10
+++ DefaultSOAPEncodingTypeMappingImpl.java 26 Feb 2005 21:37:33 -0000 1.11
@@ -35,15 +35,11 @@
/**
* Construct TypeMapping
*/
- public static TypeMappingDelegate getSingleton() {
+ public static synchronized TypeMappingImpl getSingleton() {
if (tm == null) {
tm = new DefaultSOAPEncodingTypeMappingImpl();
}
- return new TypeMappingDelegate(tm);
- }
-
- public static TypeMappingImpl create() {
- return new DefaultSOAPEncodingTypeMappingImpl();
+ return tm;
}
public static TypeMappingDelegate createWithDelegate() {
@@ -53,7 +49,7 @@
if (mc != null) {
tm = (TypeMappingDelegate)mc.getTypeMappingRegistry().getDefaultTypeMapping();
} else {
- tm = DefaultTypeMappingImpl.getSingleton();
+ tm = DefaultTypeMappingImpl.getSingletonDelegate();
}
ret.setNext(tm);
return ret;
1.90 +6 -3 ws-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java
Index: DefaultTypeMappingImpl.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -r1.89 -r1.90
--- DefaultTypeMappingImpl.java 24 Feb 2005 21:59:54 -0000 1.89
+++ DefaultTypeMappingImpl.java 26 Feb 2005 21:37:33 -0000 1.90
@@ -75,11 +75,12 @@
public class DefaultTypeMappingImpl extends TypeMappingImpl {
private static DefaultTypeMappingImpl tm = null;
+ private boolean inInitMappings = false;
/**
* Obtain the singleton default typemapping.
*/
- public static synchronized TypeMappingDelegate getSingleton() {
+ public static synchronized TypeMappingDelegate getSingletonDelegate() {
if (tm == null) {
tm = new DefaultTypeMappingImpl();
}
@@ -97,6 +98,8 @@
}
protected void initMappings() {
+ inInitMappings = true;
+
// Notes:
// 1) The registration statements are order dependent. The last one
// wins. So if two javaTypes of String are registered, the
@@ -543,6 +546,8 @@
SchemaVersion.SCHEMA_1999.registerSchemaSpecificTypes(this);
SchemaVersion.SCHEMA_2000.registerSchemaSpecificTypes(this);
SchemaVersion.SCHEMA_2001.registerSchemaSpecificTypes(this);
+
+ inInitMappings = false;
}
/**
@@ -605,8 +610,6 @@
javax.xml.rpc.encoding.SerializerFactory sf,
javax.xml.rpc.encoding.DeserializerFactory dsf)
throws JAXRPCException {
-
- // Don't allow anyone but init to modify us.
super.register(javaType, xmlType, sf, dsf);
}
public void removeSerializer(Class javaType, QName xmlType)
1.106 +1 -1 ws-axis/java/src/org/apache/axis/encoding/SerializationContext.java
Index: SerializationContext.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/encoding/SerializationContext.java,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -r1.105 -r1.106
--- SerializationContext.java 12 Feb 2005 04:41:20 -0000 1.105
+++ SerializationContext.java 26 Feb 2005 21:37:33 -0000 1.106
@@ -375,7 +375,7 @@
{
// Always allow the default mappings
if (msgContext == null)
- return DefaultTypeMappingImpl.getSingleton();
+ return DefaultTypeMappingImpl.getSingletonDelegate();
String encodingStyle = msgContext.getEncodingStyle();
if (encodingStyle == null)
1.21 +2 -0 ws-axis/java/src/org/apache/axis/encoding/TypeMappingDelegate.java
Index: TypeMappingDelegate.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/encoding/TypeMappingDelegate.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- TypeMappingDelegate.java 25 Feb 2005 03:46:31 -0000 1.20
+++ TypeMappingDelegate.java 26 Feb 2005 21:37:33 -0000 1.21
@@ -30,6 +30,8 @@
* @author Rich Scheuerle (scheu@us.ibm.com)
*/
public class TypeMappingDelegate implements TypeMapping {
+ static final TypeMappingImpl placeholder = new TypeMappingImpl();
+
TypeMappingImpl delegate;
TypeMappingDelegate next;
1.58 +12 -12 ws-axis/java/src/org/apache/axis/encoding/TypeMappingImpl.java
Index: TypeMappingImpl.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/encoding/TypeMappingImpl.java,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- TypeMappingImpl.java 24 Feb 2005 21:59:55 -0000 1.57
+++ TypeMappingImpl.java 26 Feb 2005 21:37:33 -0000 1.58
@@ -595,10 +595,10 @@
Namespaces.makeNamespace( javaType.getName() ),
Types.getLocalNameFromFullName( javaType.getName() ) );
- register( javaType,
- xmlType,
- new ArraySerializerFactory(),
- new ArrayDeserializerFactory() );
+ internalRegister( javaType,
+ xmlType,
+ new ArraySerializerFactory(),
+ new ArrayDeserializerFactory() );
}
// Can only detect arrays via code
@@ -630,10 +630,10 @@
* and getDeserializer() are called, this QName is returned and
* these methods do not need to worry about creating a serializer.
*/
- register( javaType,
- xmlType,
- new BeanSerializerFactory(javaType, xmlType),
- new BeanDeserializerFactory(javaType, xmlType) );
+ internalRegister( javaType,
+ xmlType,
+ new BeanSerializerFactory(javaType, xmlType),
+ new BeanDeserializerFactory(javaType, xmlType) );
}
//log.debug("getTypeQName xmlType =" + xmlType);
@@ -679,10 +679,10 @@
}
try {
javaType = ClassUtils.forName(className);
- register(javaType,
- xmlType,
- new BeanSerializerFactory(javaType, xmlType),
- new BeanDeserializerFactory(javaType, xmlType));
+ internalRegister(javaType,
+ xmlType,
+ new BeanSerializerFactory(javaType, xmlType),
+ new BeanDeserializerFactory(javaType, xmlType));
} catch (ClassNotFoundException e) {
}
}
1.35 +29 -17 ws-axis/java/src/org/apache/axis/encoding/TypeMappingRegistryImpl.java
Index: TypeMappingRegistryImpl.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/encoding/TypeMappingRegistryImpl.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- TypeMappingRegistryImpl.java 24 Feb 2005 21:59:55 -0000 1.34
+++ TypeMappingRegistryImpl.java 26 Feb 2005 21:37:33 -0000 1.35
@@ -138,21 +138,26 @@
public TypeMappingRegistryImpl(TypeMappingImpl tm) {
mapTM = new HashMap();
defaultDelTM = new TypeMappingDelegate(tm);
- TypeMappingDelegate del = new TypeMappingDelegate(new DefaultSOAPEncodingTypeMappingImpl());
- register(Constants.URI_SOAP11_ENC, del);
+// TypeMappingDelegate del = new TypeMappingDelegate(new DefaultSOAPEncodingTypeMappingImpl());
+// register(Constants.URI_SOAP11_ENC, del);
}
/**
* Construct TypeMappingRegistry
*/
public TypeMappingRegistryImpl() {
- mapTM = new HashMap();
- defaultDelTM = DefaultTypeMappingImpl.getSingleton();
- TypeMappingDelegate del = new TypeMappingDelegate(new DefaultSOAPEncodingTypeMappingImpl());
- register(Constants.URI_SOAP11_ENC, del);
+ this(true);
}
public TypeMappingRegistryImpl(boolean registerDefaults) {
+ mapTM = new HashMap();
+ if (registerDefaults) {
+ defaultDelTM = DefaultTypeMappingImpl.getSingletonDelegate();
+ TypeMappingDelegate del = new TypeMappingDelegate(new DefaultSOAPEncodingTypeMappingImpl());
+ register(Constants.URI_SOAP11_ENC, del);
+ } else {
+ defaultDelTM = new TypeMappingDelegate(TypeMappingDelegate.placeholder);
+ }
}
/**
@@ -175,8 +180,8 @@
for (int i=0; i < keys.length; i++) {
try {
String nsURI = keys[i];
- TypeMappingDelegate tm = (TypeMappingDelegate) getTypeMapping(nsURI);
- if (tm == null || tm == getDefaultTypeMapping() ) {
+ TypeMappingDelegate tm = (TypeMappingDelegate) mapTM.get(nsURI);
+ if (tm == null) {
tm = (TypeMappingDelegate)createTypeMapping();
tm.setSupportedEncodings(new String[] { nsURI });
register(nsURI, tm);
@@ -186,16 +191,17 @@
// Get the secondaryTMR's TM'
TypeMappingDelegate del = (TypeMappingDelegate)
((TypeMappingRegistryImpl)secondaryTMR).mapTM.get(nsURI);
- TypeMappingDelegate nu = new TypeMappingDelegate(del.delegate);
- tm.setNext(nu);
- nu.setNext(defaultDelTM);
while (del.next != null) {
+ TypeMappingDelegate nu = new TypeMappingDelegate(del.delegate);
+ tm.setNext(nu);
+
if (del.next == otherDefault) {
- del.setNext(defaultDelTM);
+ nu.setNext(defaultDelTM);
break;
}
del = del.next;
+ tm = nu;
}
}
@@ -205,8 +211,10 @@
}
// Change our defaultDelTM to delegate to the one in
// the secondaryTMR
- if (defaultDelTM != null) {
+ if (defaultDelTM.delegate != TypeMappingDelegate.placeholder) {
defaultDelTM.setNext(otherDefault);
+ } else {
+ defaultDelTM.delegate = otherDefault.delegate;
}
}
@@ -294,11 +302,15 @@
return;
} else if (version.equals("1.3")) {
// Reset the default TM to the JAXRPC version, then register SOAPENC
- defaultDelTM = new TypeMappingDelegate(DefaultJAXRPC11TypeMappingImpl.create());
+ defaultDelTM = new TypeMappingDelegate(
+ DefaultJAXRPC11TypeMappingImpl.getSingleton());
} else {
- throw new RuntimeException(org.apache.axis.utils.Messages.getMessage("j2wBadTypeMapping00"));
+ throw new RuntimeException(
+ Messages.getMessage("j2wBadTypeMapping00"));
}
- registerSOAPENCDefault(new TypeMappingDelegate(DefaultSOAPEncodingTypeMappingImpl.create()));
+ registerSOAPENCDefault(
+ new TypeMappingDelegate(DefaultSOAPEncodingTypeMappingImpl.
+ getSingleton()));
}
/**
* Force registration of the given mapping as the SOAPENC default mapping
@@ -338,7 +350,7 @@
*/
public TypeMapping getOrMakeTypeMapping(String encodingStyle) {
TypeMappingDelegate del = (TypeMappingDelegate) mapTM.get(encodingStyle);
- if (del == null || del == defaultDelTM) {
+ if (del == null || del.delegate instanceof DefaultTypeMappingImpl) {
del = (TypeMappingDelegate)createTypeMapping();
del.setSupportedEncodings(new String[] {encodingStyle});
register(encodingStyle, del);
1.44 +2 -1 ws-axis/java/test/RPCDispatch/TestSerializedRPC.java
Index: TestSerializedRPC.java
===================================================================
RCS file: /home/cvs/ws-axis/java/test/RPCDispatch/TestSerializedRPC.java,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- TestSerializedRPC.java 6 Jan 2005 18:49:15 -0000 1.43
+++ TestSerializedRPC.java 26 Feb 2005 21:37:33 -0000 1.44
@@ -70,12 +70,13 @@
SOAPService reverse = new SOAPService(new RPCProvider());
reverse.setOption("className", "test.RPCDispatch.Service");
reverse.setOption("allowedMethods", "*");
- provider.deployService(SOAPAction, reverse);
JavaServiceDesc desc = new JavaServiceDesc();
desc.loadServiceDescByIntrospection(Service.class, tm);
reverse.setServiceDescription(desc);
+ provider.deployService(SOAPAction, reverse);
+
// Now we've got the service description loaded up. We're going to
// be testing parameter dispatch by name, so if debug info isn't
// compiled into the Service class, the names are going to be "in0",
1.3 +1 -1 ws-axis/java/test/servicedesc/TestServiceDesc.java
Index: TestServiceDesc.java
===================================================================
RCS file: /home/cvs/ws-axis/java/test/servicedesc/TestServiceDesc.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestServiceDesc.java 19 Jan 2005 21:04:22 -0000 1.2
+++ TestServiceDesc.java 26 Feb 2005 21:37:33 -0000 1.3
@@ -37,7 +37,7 @@
public void testFaultSynch() throws Exception {
JavaServiceDesc desc = new JavaServiceDesc();
- desc.setTypeMapping(DefaultTypeMappingImpl.getSingleton());
+ desc.setTypeMapping(DefaultTypeMappingImpl.getSingletonDelegate());
desc.loadServiceDescByIntrospection(ServiceClass.class);
1.4 +1 -1 ws-axis/java/test/typedesc/TestTypesNonBeanCompatible.java
Index: TestTypesNonBeanCompatible.java
===================================================================
RCS file: /home/cvs/ws-axis/java/test/typedesc/TestTypesNonBeanCompatible.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestTypesNonBeanCompatible.java 5 Jan 2005 06:25:07 -0000 1.3
+++ TestTypesNonBeanCompatible.java 26 Feb 2005 21:37:33 -0000 1.4
@@ -37,7 +37,7 @@
protected void setUp() throws Exception {
Definition def = WSDLFactory.newInstance().newDefinition();
- TypeMapping tm = DefaultTypeMappingImpl.getSingleton();
+ TypeMapping tm = DefaultTypeMappingImpl.getSingletonDelegate();
Namespaces namespaces = new Namespaces();
ServiceDesc serviceDesc = new JavaServiceDesc();