jmsnell     2003/02/20 14:59:43

  Modified:    java/src/org/apache/axis/encoding/ser
                        BaseDeserializerFactory.java
                        BaseSerializerFactory.java
  Log:
  FIX http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16486
  
  Applied Anthony Elder's patch.
  
  Revision  Changes    Path
  1.11      +37 -12    
xml-axis/java/src/org/apache/axis/encoding/ser/BaseDeserializerFactory.java
  
  Index: BaseDeserializerFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BaseDeserializerFactory.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- BaseDeserializerFactory.java      26 Sep 2002 00:24:50 -0000      1.10
  +++ BaseDeserializerFactory.java      20 Feb 2003 22:59:43 -0000      1.11
  @@ -55,19 +55,21 @@
   
   package org.apache.axis.encoding.ser;
   
  -import org.apache.axis.Constants;
  -import org.apache.axis.encoding.Deserializer;
  -import org.apache.axis.encoding.DeserializerFactory;
  -import org.apache.axis.utils.ClassUtils;
  -
  -import javax.xml.namespace.QName;
  -import javax.xml.rpc.JAXRPCException;
  +import java.io.Serializable;
   import java.lang.reflect.Constructor;
   import java.lang.reflect.InvocationTargetException;
   import java.lang.reflect.Method;
   import java.util.Iterator;
   import java.util.Vector;
   
  +import javax.xml.namespace.QName;
  +import javax.xml.rpc.JAXRPCException;
  +
  +import org.apache.axis.Constants;
  +import org.apache.axis.encoding.Deserializer;
  +import org.apache.axis.encoding.DeserializerFactory;
  +import org.apache.axis.utils.ClassUtils;
  +
   /**
    * Base class for Axis Deserialization Factory classes for code reuse
    *
  @@ -76,13 +78,14 @@
   public abstract class BaseDeserializerFactory 
       implements DeserializerFactory {
   
  -    static Vector mechanisms = null;
  +    transient static Vector mechanisms = null;
       
       protected Class deserClass = null;
       protected QName xmlType = null;
       protected Class javaType = null;
  -    protected Constructor deserClassConstructor = null;
  -    protected Method getDeserializer = null;
  +    
  +    transient protected Constructor deserClassConstructor = null;
  +    transient protected Method getDeserializer = null;
   
       /**
        * Constructor
  @@ -99,8 +102,6 @@
           this(deserClass);
           this.xmlType = xmlType;
           this.javaType = javaType;
  -        this.deserClassConstructor = getConstructor(deserClass); 
  -        this.getDeserializer = getDeserializerMethod(javaType);    
       }
   
       public javax.xml.rpc.encoding.Deserializer
  @@ -136,6 +137,7 @@
        */
       protected Deserializer getGeneralPurpose(String mechanismType) {
           if (javaType != null && xmlType != null) {
  +             Constructor deserClassConstructor = getDeserClassConstructor();
               if (deserClassConstructor != null) {
                   try {
                       return (Deserializer) 
  @@ -166,6 +168,7 @@
        */
       protected Deserializer getSpecialized(String mechanismType) {
           if (javaType != null && xmlType != null) {
  +             Method getDeserializer = getGetDeserializer();
               if (getDeserializer != null) {
                   try {
                       return (Deserializer) 
  @@ -266,4 +269,26 @@
           }
           return df;
       }
  +     /**
  +      * Returns the deserClassConstructor.
  +      * @return Constructor
  +      */
  +     protected Constructor getDeserClassConstructor() {
  +             if (deserClassConstructor == null) { 
  +                 deserClassConstructor = getConstructor(deserClass);
  +             } 
  +             return deserClassConstructor;
  +     }
  +
  +     /**
  +      * Returns the getDeserializer.
  +      * @return Method
  +      */
  +     protected Method getGetDeserializer() {
  +             if (getDeserializer == null) {
  +            getDeserializer = getDeserializerMethod(javaType);    
  +             }
  +             return getDeserializer;
  +     }
  +
   }
  
  
  
  1.21      +29 -6     
xml-axis/java/src/org/apache/axis/encoding/ser/BaseSerializerFactory.java
  
  Index: BaseSerializerFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BaseSerializerFactory.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- BaseSerializerFactory.java        11 Dec 2002 22:38:15 -0000      1.20
  +++ BaseSerializerFactory.java        20 Feb 2003 22:59:43 -0000      1.21
  @@ -68,6 +68,7 @@
   import java.lang.reflect.Method;
   import java.util.Iterator;
   import java.util.Vector;
  +import java.io.Serializable;
   
   /**
    * Base class for Axis Serialization Factory classes for code reuse
  @@ -77,14 +78,15 @@
   public abstract class BaseSerializerFactory 
       implements SerializerFactory {
   
  -    static Vector mechanisms = null;
  +    transient static Vector mechanisms = null;
       
       protected Class serClass = null;
  -    protected Serializer ser = null;
       protected QName xmlType = null;
       protected Class javaType = null;
  -    protected Constructor serClassConstructor = null;
  -    protected Method getSerializer = null;
  +
  +    transient protected Serializer ser = null;
  +    transient protected Constructor serClassConstructor = null;
  +    transient protected Method getSerializer = null;
   
       /**
        * Constructor
  @@ -99,8 +101,6 @@
           this(serClass);
           this.xmlType = xmlType;
           this.javaType = javaType;
  -        this.serClassConstructor = getConstructor(serClass);
  -        this.getSerializer = getSerializerMethod(javaType);
       }
   
       public javax.xml.rpc.encoding.Serializer 
  @@ -145,6 +145,7 @@
        */
       protected Serializer getGeneralPurpose(String mechanismType) {
           if (javaType != null && xmlType != null) {
  +             Constructor serClassConstructor = getSerClassConstructor();
               if (serClassConstructor != null) {
                   try {
                       return (Serializer) 
  @@ -298,4 +299,26 @@
           }
           return sf;
       }
  +     /**
  +      * Returns the getSerializer.
  +      * @return Method
  +      */
  +     protected Method getGetSerializer() {
  +             if (getSerializer == null) {
  +            getSerializer = getSerializerMethod(javaType);
  +             }
  +             return getSerializer;
  +     }
  +
  +     /**
  +      * Returns the serClassConstructor.
  +      * @return Constructor
  +      */
  +     protected Constructor getSerClassConstructor() {
  +             if (serClassConstructor == null) {
  +                 serClassConstructor = getConstructor(serClass);
  +             }
  +             return serClassConstructor;
  +     }
  +
   }
  
  
  


Reply via email to