One wonders (at least I do) just exactly why this whole hierarchy is Serializable in the first place....
> -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > Sent: Thursday, February 20, 2003 6:00 PM > To: [EMAIL PROTECTED] > Subject: cvs commit: xml-axis/java/src/org/apache/axis/encoding/ser > BaseDeserializerFactory.java BaseSerializerFactory.java > > > 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/BaseDeserialize > rFactory.java > > Index: BaseDeserializerFactory.java > =================================================================== > RCS file: > /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BaseD > eserializerFactory.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/BaseSerializerF > actory.java > > Index: BaseSerializerFactory.java > =================================================================== > RCS file: > /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BaseS > erializerFactory.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; > + } > + > } > > > >
