You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.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();