Return-Path: Delivered-To: apmail-xml-axis-dev-archive@xml.apache.org Received: (qmail 78891 invoked by uid 500); 31 Jul 2002 10:59:00 -0000 Mailing-List: contact axis-dev-help@xml.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@xml.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@xml.apache.org Received: (qmail 78882 invoked by uid 500); 31 Jul 2002 10:59:00 -0000 Delivered-To: apmail-xml-axis-wsif-cvs@apache.org Date: 31 Jul 2002 10:58:59 -0000 Message-ID: <20020731105859.2640.qmail@icarus.apache.org> From: owenb@apache.org To: xml-axis-wsif-cvs@apache.org Subject: cvs commit: xml-axis-wsif/java/src/org/apache/wsif/providers WSIFDynamicTypeMapping.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N owenb 2002/07/31 03:58:59 Modified: java/src/org/apache/wsif/providers WSIFDynamicTypeMapping.java Log: - changed from Serializable to Externalizable - override writeExternal and readExternal methods so that primitive type classes can be (de)serialized Revision Changes Path 1.4 +56 -2 xml-axis-wsif/java/src/org/apache/wsif/providers/WSIFDynamicTypeMapping.java Index: WSIFDynamicTypeMapping.java =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/WSIFDynamicTypeMapping.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- WSIFDynamicTypeMapping.java 19 Jul 2002 15:46:30 -0000 1.3 +++ WSIFDynamicTypeMapping.java 31 Jul 2002 10:58:59 -0000 1.4 @@ -57,7 +57,7 @@ package org.apache.wsif.providers; -import java.io.Serializable; +import java.io.Externalizable; import javax.xml.namespace.QName; @@ -70,10 +70,19 @@ * @author Alekander Slominski * @author Owen Burroughs */ -public class WSIFDynamicTypeMapping implements Serializable { +public class WSIFDynamicTypeMapping implements Externalizable { protected QName xmlType; protected Class javaType; + /** + * No args constructor required for deserialization purposes. + * This constructor should not be used directly. + */ + public WSIFDynamicTypeMapping() { + xmlType = null; + javaType = null; + } + public WSIFDynamicTypeMapping(QName xmlType, Class javaType) { Trc.entry(this, xmlType, javaType); this.xmlType = xmlType; @@ -91,5 +100,50 @@ public String toString() { return "QName:" + xmlType + " Class:" + javaType; + } + + /** + * Override writeExternal method to allow primitive classes to be serialized. + */ + public void writeExternal(java.io.ObjectOutput out) + throws java.io.IOException { + out.writeObject(xmlType); + if (javaType.isPrimitive()) { + out.writeBoolean(true); + out.writeObject(javaType.getName()); + } else { + out.writeBoolean(false); + out.writeObject(javaType); + } + + } + + /** + * Override readExternal method to allow primitive classes to be deserialized. + */ + public void readExternal(java.io.ObjectInput in) + throws java.io.IOException, ClassNotFoundException { + xmlType = (QName) in.readObject(); + boolean primitive = in.readBoolean(); + if (primitive) { + String primitiveClassName = (String) in.readObject(); + if (primitiveClassName.equals("int")) + javaType = int.class; + else if (primitiveClassName.equals("float")) + javaType = float.class; + else if (primitiveClassName.equals("double")) + javaType = double.class; + else if (primitiveClassName.equals("boolean")) + javaType = boolean.class; + else if (primitiveClassName.equals("long")) + javaType = long.class; + else if (primitiveClassName.equals("short")) + javaType = short.class; + else if (primitiveClassName.equals("byte")) + javaType = byte.class; + else if (primitiveClassName.equals("void")) + javaType = void.class; + } else + javaType = (Class) in.readObject(); } }