/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.axis.encoding;
import org.apache.axis.Constants;
import org.apache.axis.encoding.ser.CalendarDeserializerFactory;
import org.apache.axis.encoding.ser.CalendarSerializerFactory;
import org.apache.axis.encoding.ser.DateDeserializerFactory;
import org.apache.axis.encoding.ser.DateSerializerFactory;
import org.apache.axis.encoding.ser.TimeDeserializerFactory;
import org.apache.axis.encoding.ser.TimeSerializerFactory;
/**
* This is the implementation of the axis Default JAX-RPC SOAP Encoding TypeMapping
* See DefaultTypeMapping for more information.
*/
public class DefaultJAXRPC11TypeMappingImpl extends DefaultTypeMappingImpl {
private static DefaultJAXRPC11TypeMappingImpl tm = null;
/**
* Obtain the singleton default typemapping.
*/
public static synchronized TypeMappingImpl getSingleton() {
if (tm == null) {
tm = new DefaultJAXRPC11TypeMappingImpl();
}
return tm;
}
protected DefaultJAXRPC11TypeMappingImpl() {
registerXSDTypes();
}
/**
* Register the XSD data types in JAXRPC11 spec.
*/
private void registerXSDTypes() {
// Table 4-1 of the JAXRPC 1.1 spec
myRegisterSimple(Constants.XSD_UNSIGNEDINT, Long.class);
myRegisterSimple(Constants.XSD_UNSIGNEDINT, long.class);
myRegisterSimple(Constants.XSD_UNSIGNEDSHORT, Integer.class);
myRegisterSimple(Constants.XSD_UNSIGNEDSHORT, int.class);
myRegisterSimple(Constants.XSD_UNSIGNEDBYTE, Short.class);
myRegisterSimple(Constants.XSD_UNSIGNEDBYTE, short.class);
myRegister(Constants.XSD_DATETIME, java.util.Calendar.class,
new CalendarSerializerFactory(java.util.Calendar.class,
Constants.XSD_DATETIME),
new CalendarDeserializerFactory(java.util.Calendar.class,
Constants.XSD_DATETIME));
myRegister(Constants.XSD_DATE, java.util.Calendar.class,
new DateSerializerFactory(java.util.Calendar.class,
Constants.XSD_DATE),
new DateDeserializerFactory(java.util.Calendar.class,
Constants.XSD_DATE));
myRegister(Constants.XSD_TIME, java.util.Calendar.class,
new TimeSerializerFactory(java.util.Calendar.class,
Constants.XSD_TIME),
new TimeDeserializerFactory(java.util.Calendar.class,
Constants.XSD_TIME));
try {
myRegisterSimple(Constants.XSD_ANYURI,
Class.forName("java.net.URI"));
} catch (ClassNotFoundException e) {
myRegisterSimple(Constants.XSD_ANYURI, java.lang.String.class);
}
// Table 4-2 of JAXRPC 1.1 spec
myRegisterSimple(Constants.XSD_DURATION, java.lang.String.class);
myRegisterSimple(Constants.XSD_YEARMONTH, java.lang.String.class);
myRegisterSimple(Constants.XSD_YEAR, java.lang.String.class);
myRegisterSimple(Constants.XSD_MONTHDAY, java.lang.String.class);
myRegisterSimple(Constants.XSD_DAY, java.lang.String.class);
myRegisterSimple(Constants.XSD_MONTH, java.lang.String.class);
myRegisterSimple(Constants.XSD_NORMALIZEDSTRING,
java.lang.String.class);
myRegisterSimple(Constants.XSD_TOKEN, java.lang.String.class);
myRegisterSimple(Constants.XSD_LANGUAGE, java.lang.String.class);
myRegisterSimple(Constants.XSD_NAME, java.lang.String.class);
myRegisterSimple(Constants.XSD_NCNAME, java.lang.String.class);
myRegisterSimple(Constants.XSD_ID, java.lang.String.class);
myRegisterSimple(Constants.XSD_NMTOKEN, java.lang.String.class);
myRegisterSimple(Constants.XSD_NMTOKENS, java.lang.String.class);
myRegisterSimple(Constants.XSD_STRING, java.lang.String.class);
myRegisterSimple(Constants.XSD_NONPOSITIVEINTEGER,
java.math.BigInteger.class);
myRegisterSimple(Constants.XSD_NEGATIVEINTEGER,
java.math.BigInteger.class);
myRegisterSimple(Constants.XSD_NONNEGATIVEINTEGER,
java.math.BigInteger.class);
myRegisterSimple(Constants.XSD_UNSIGNEDLONG,
java.math.BigInteger.class);
myRegisterSimple(Constants.XSD_POSITIVEINTEGER,
java.math.BigInteger.class);
}
} |