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 ru...@apache.org on 2001/05/04 08:09:54 UTC
cvs commit: xml-axis/java/test/encoding TestDeser2000.java TestDeser2001.java PackageTests.java TestDeser.java
rubys 01/05/03 23:09:54
Modified: java/src/org/apache/axis Constants.java
java/src/org/apache/axis/encoding SOAPEncoding.java
SOAPTypeMappingRegistry.java
java/src/org/apache/axis/message MessageElement.java
RPCParam.java SOAPEnvelope.java
java/test/encoding PackageTests.java TestDeser.java
Added: java/test/encoding TestDeser2000.java TestDeser2001.java
Log:
Add support for multiple schemas
Revision Changes Path
1.11 +29 -4 xml-axis/java/src/org/apache/axis/Constants.java
Index: Constants.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/Constants.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Constants.java 2001/05/02 14:37:08 1.10
+++ Constants.java 2001/05/04 06:09:49 1.11
@@ -78,12 +78,37 @@
"http://schemas.xmlsoap.org/soap/envelope/" ;
public static String URI_SOAP_ENC =
"http://schemas.xmlsoap.org/soap/encoding/" ;
- public static String URI_SCHEMA_XSI =
- "http://www.w3.org/1999/XMLSchema-instance" ;
- public static String URI_SCHEMA_XSD =
- "http://www.w3.org/1999/XMLSchema" ;
public static String URI_NEXT_ACTOR =
"http://schemas.xmlsoap.org/soap/actor/next" ;
+
+
+ // Schema namespaces
+ public static final String URI_1999_SCHEMA_XSI =
+ "http://www.w3.org/1999/XMLSchema-instance";
+ public static final String URI_1999_SCHEMA_XSD =
+ "http://www.w3.org/1999/XMLSchema";
+ public static final String URI_2000_SCHEMA_XSI =
+ "http://www.w3.org/2000/10/XMLSchema-instance";
+ public static final String URI_2000_SCHEMA_XSD =
+ "http://www.w3.org/2000/10/XMLSchema";
+ public static final String URI_2001_SCHEMA_XSI =
+ "http://www.w3.org/2001/XMLSchema-instance";
+ public static final String URI_2001_SCHEMA_XSD =
+ "http://www.w3.org/2001/XMLSchema";
+ public static final String URI_CURRENT_SCHEMA_XSI = URI_1999_SCHEMA_XSI;
+ public static final String URI_CURRENT_SCHEMA_XSD = URI_1999_SCHEMA_XSD;
+
+ public static final String[] URIS_SCHEMA_XSI = {
+ URI_1999_SCHEMA_XSI,
+ URI_2000_SCHEMA_XSI,
+ URI_2001_SCHEMA_XSI,
+ };
+
+ public static final String[] URIS_SCHEMA_XSD = {
+ URI_1999_SCHEMA_XSD,
+ URI_2000_SCHEMA_XSD,
+ URI_2001_SCHEMA_XSD,
+ };
public static String ELEM_ENVELOPE = "Envelope" ;
public static String ELEM_HEADER = "Header" ;
1.3 +2 -2 xml-axis/java/src/org/apache/axis/encoding/SOAPEncoding.java
Index: SOAPEncoding.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SOAPEncoding.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SOAPEncoding.java 2001/05/03 14:31:46 1.2
+++ SOAPEncoding.java 2001/05/04 06:09:50 1.3
@@ -63,14 +63,14 @@
attributes.getLocalName(i),
attributes.getQName(i), "CDATA",
attributes.getValue(i));
- if (attributes.getURI(i).equals(Constants.URI_SCHEMA_XSI) &&
+ if (attributes.getURI(i).equals(Constants.URI_CURRENT_SCHEMA_XSI) &&
attributes.getLocalName(i).equals("type"))
gotType = true;
}
}
if (!gotType) {
- impl.addAttribute(Constants.URI_SCHEMA_XSI,
+ impl.addAttribute(Constants.URI_CURRENT_SCHEMA_XSI,
"type", "xsi:type",
"CDATA", str);
}
1.4 +31 -14 xml-axis/java/src/org/apache/axis/encoding/SOAPTypeMappingRegistry.java
Index: SOAPTypeMappingRegistry.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SOAPTypeMappingRegistry.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SOAPTypeMappingRegistry.java 2001/05/04 01:17:28 1.3
+++ SOAPTypeMappingRegistry.java 2001/05/04 06:09:50 1.4
@@ -6,13 +6,13 @@
public class SOAPTypeMappingRegistry extends TypeMappingRegistry {
- public static final QName XSD_STRING = new QName(Constants.URI_SCHEMA_XSD, "string");
- public static final QName XSD_BOOLEAN = new QName(Constants.URI_SCHEMA_XSD, "boolean");
- public static final QName XSD_DOUBLE = new QName(Constants.URI_SCHEMA_XSD, "double");
- public static final QName XSD_FLOAT = new QName(Constants.URI_SCHEMA_XSD, "float");
- public static final QName XSD_INT = new QName(Constants.URI_SCHEMA_XSD, "int");
- public static final QName XSD_LONG = new QName(Constants.URI_SCHEMA_XSD, "long");
- public static final QName XSD_SHORT = new QName(Constants.URI_SCHEMA_XSD, "short");
+ public static final QName XSD_STRING = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "string");
+ public static final QName XSD_BOOLEAN = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "boolean");
+ public static final QName XSD_DOUBLE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "double");
+ public static final QName XSD_FLOAT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "float");
+ public static final QName XSD_INT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "int");
+ public static final QName XSD_LONG = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "long");
+ public static final QName XSD_SHORT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "short");
public static final QName SOAP_STRING = new QName(Constants.URI_SOAP_ENC, "string");
public static final QName SOAP_BOOLEAN = new QName(Constants.URI_SOAP_ENC, "boolean");
public static final QName SOAP_DOUBLE = new QName(Constants.URI_SOAP_ENC, "double");
@@ -83,6 +83,22 @@
public DeserializerBase getDeserializer() { return new ShortDeser(); }
}
+ /**
+ * Alias common DeserializerFactories across the various popular schemas
+ * @param base QName based on the current Schema namespace
+ * @param factory common factory to be used across all schemas
+ */
+ private void addDeserializersFor(QName base, DeserializerFactory factory) {
+ addDeserializerFactory(base, factory);
+ String localPart = base.getLocalPart();
+ for (int i=0; i<Constants.URIS_SCHEMA_XSD.length; i++) {
+ if (!Constants.URIS_SCHEMA_XSD[i].equals(base.getNamespaceURI())) {
+ QName qname = new QName(Constants.URIS_SCHEMA_XSD[i], localPart);
+ addDeserializerFactory(qname, factory);
+ }
+ }
+ }
+
public SOAPTypeMappingRegistry() {
SOAPEncoding se = new SOAPEncoding();
addSerializer(java.lang.String.class, XSD_STRING, se);
@@ -93,13 +109,14 @@
addSerializer(java.lang.Long.class, XSD_LONG, se);
addSerializer(java.lang.Short.class, XSD_SHORT, se);
- addDeserializerFactory(XSD_STRING, new StringDeserializerFactory());
- addDeserializerFactory(XSD_BOOLEAN, new BooleanDeserializerFactory());
- addDeserializerFactory(XSD_DOUBLE, new DoubleDeserializerFactory());
- addDeserializerFactory(XSD_FLOAT, new FloatDeserializerFactory());
- addDeserializerFactory(XSD_INT, new IntDeserializerFactory());
- addDeserializerFactory(XSD_LONG, new LongDeserializerFactory());
- addDeserializerFactory(XSD_SHORT, new ShortDeserializerFactory());
+ addDeserializersFor(XSD_STRING, new StringDeserializerFactory());
+ addDeserializersFor(XSD_BOOLEAN, new BooleanDeserializerFactory());
+ addDeserializersFor(XSD_DOUBLE, new DoubleDeserializerFactory());
+ addDeserializersFor(XSD_FLOAT, new FloatDeserializerFactory());
+ addDeserializersFor(XSD_INT, new IntDeserializerFactory());
+ addDeserializersFor(XSD_LONG, new LongDeserializerFactory());
+ addDeserializersFor(XSD_SHORT, new ShortDeserializerFactory());
+
/*
addDeserializerFactory(SOAP_STRING, se);
addDeserializerFactory(SOAP_BOOLEAN, se);
1.13 +2 -2 xml-axis/java/src/org/apache/axis/message/MessageElement.java
Index: MessageElement.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/MessageElement.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- MessageElement.java 2001/05/03 15:35:40 1.12
+++ MessageElement.java 2001/05/04 06:09:51 1.13
@@ -225,14 +225,14 @@
ServiceDescription desc = getEnvelope().getServiceDescription();
if ((desc == null) || desc.getSendTypeAttr()) {
if (typeQName != null) {
- attrs.addAttribute(Constants.URI_SCHEMA_XSI, "type", "xsi:type",
+ attrs.addAttribute(Constants.URI_CURRENT_SCHEMA_XSI, "type", "xsi:type",
"CDATA",
context.qName2String(typeQName));
}
}
if (val == null)
- attrs.addAttribute(Constants.URI_SCHEMA_XSI, "null", "xsi:null",
+ attrs.addAttribute(Constants.URI_CURRENT_SCHEMA_XSI, "null", "xsi:null",
"CDATA", "1");
} else {
attrs = new AttributesImpl(attributes);
1.9 +5 -3 xml-axis/java/src/org/apache/axis/message/RPCParam.java
Index: RPCParam.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCParam.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- RPCParam.java 2001/05/04 04:10:51 1.8
+++ RPCParam.java 2001/05/04 06:09:52 1.9
@@ -84,7 +84,9 @@
name = localName;
// Check for type
- String type = attrs.getValue(Constants.URI_SCHEMA_XSI, "type");
+ String type = null;
+ for (int i=0; i<Constants.URIS_SCHEMA_XSI.length && type==null; i++)
+ type = attrs.getValue(Constants.URIS_SCHEMA_XSI[i], "type");
if (DEBUG_LOG)
System.out.println("Got param. Name ='" + name + "' Type is '" + type + "'");
@@ -223,14 +225,14 @@
if ((desc == null) || desc.getSendTypeAttr()) {
if (typeQName != null) {
- attrs.addAttribute(Constants.URI_SCHEMA_XSI, "type", "xsi:type",
+ attrs.addAttribute(Constants.URI_CURRENT_SCHEMA_XSI, "type", "xsi:type",
"CDATA",
context.qName2String(typeQName));
}
}
if (value == null)
- attrs.addAttribute(Constants.URI_SCHEMA_XSI, "null", "xsi:null",
+ attrs.addAttribute(Constants.URI_CURRENT_SCHEMA_XSI, "null", "xsi:null",
"CDATA", "1");
}
1.21 +2 -2 xml-axis/java/src/org/apache/axis/message/SOAPEnvelope.java
Index: SOAPEnvelope.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPEnvelope.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- SOAPEnvelope.java 2001/05/01 22:05:25 1.20
+++ SOAPEnvelope.java 2001/05/04 06:09:52 1.21
@@ -89,8 +89,8 @@
public SOAPEnvelope()
{
nsDecls.put(Constants.URI_SOAP_ENV, Constants.NSPREFIX_SOAP_ENV);
- nsDecls.put(Constants.URI_SCHEMA_XSD, Constants.NSPREFIX_SCHEMA_XSD);
- nsDecls.put(Constants.URI_SCHEMA_XSI, Constants.NSPREFIX_SCHEMA_XSI);
+ nsDecls.put(Constants.URI_CURRENT_SCHEMA_XSD, Constants.NSPREFIX_SCHEMA_XSD);
+ nsDecls.put(Constants.URI_CURRENT_SCHEMA_XSI, Constants.NSPREFIX_SCHEMA_XSI);
handler = null;
}
1.4 +2 -0 xml-axis/java/test/encoding/PackageTests.java
Index: PackageTests.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/encoding/PackageTests.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PackageTests.java 2001/05/04 04:10:53 1.3
+++ PackageTests.java 2001/05/04 06:09:53 1.4
@@ -20,6 +20,8 @@
TestSuite suite = new TestSuite();
suite.addTestSuite(TestDeser.class);
+ suite.addTestSuite(TestDeser2000.class);
+ suite.addTestSuite(TestDeser2001.class);
suite.addTestSuite(TestSer.class);
suite.addTestSuite(TestString.class);
1.2 +23 -15 xml-axis/java/test/encoding/TestDeser.java
Index: TestDeser.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestDeser.java 2001/05/04 04:10:53 1.1
+++ TestDeser.java 2001/05/04 06:09:53 1.2
@@ -1,5 +1,6 @@
package test.encoding;
+import org.apache.axis.Constants;
import org.apache.axis.Message;
import org.apache.axis.message.*;
import org.apache.axis.encoding.*;
@@ -16,25 +17,32 @@
*/
public class TestDeser extends TestCase {
+ private String header;
+ private String footer;
+
public TestDeser(String name) {
- super(name);
+ this(name, Constants.URI_CURRENT_SCHEMA_XSI,
+ Constants.URI_CURRENT_SCHEMA_XSD);
}
- private static final String header =
- "<?xml version=\"1.0\"?>\n" +
- "<soap:Envelope " +
- "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
- "xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" " +
- "xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\" " +
- "xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\">\n" +
- "<soap:Body>\n" +
- "<methodResult xmlns=\"http://tempuri.org/\">\n";
-
- private static final String footer =
- "</methodResult>\n" +
- "</soap:Body>\n" +
- "</soap:Envelope>\n";
+ public TestDeser(String name, String NS_XSI, String NS_XSD) {
+ super(name);
+ header =
+ "<?xml version=\"1.0\"?>\n" +
+ "<soap:Envelope " +
+ "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
+ "xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" " +
+ "xmlns:xsi=\"" + NS_XSI + "\" " +
+ "xmlns:xsd=\"" + NS_XSD + "\">\n" +
+ "<soap:Body>\n" +
+ "<methodResult xmlns=\"http://tempuri.org/\">\n";
+
+ footer =
+ "</methodResult>\n" +
+ "</soap:Body>\n" +
+ "</soap:Envelope>\n";
+ }
private void deserialize(String data, Object expected) {
Message message = new Message(header + data + footer, "String");
1.1 xml-axis/java/test/encoding/TestDeser2000.java
Index: TestDeser2000.java
===================================================================
package test.encoding;
import org.apache.axis.Constants;
import junit.framework.TestCase;
/**
* Test deserialization of SOAP responses
*/
public class TestDeser2001 extends TestDeser {
public TestDeser2001(String name) {
super(name, Constants.URI_2000_SCHEMA_XSI,
Constants.URI_2000_SCHEMA_XSD);
}
}
1.1 xml-axis/java/test/encoding/TestDeser2001.java
Index: TestDeser2001.java
===================================================================
package test.encoding;
import org.apache.axis.Constants;
import junit.framework.TestCase;
/**
* Test deserialization of SOAP responses
*/
public class TestDeser2001 extends TestDeser {
public TestDeser2001(String name) {
super(name, Constants.URI_2001_SCHEMA_XSI,
Constants.URI_2001_SCHEMA_XSD);
}
}