01: /**
02: * Copyright 2003 Sun Microsystems, Inc. All
03: * rights reserved. Use of this product is subject
04: * to license terms. Federal Acquisitions:
05: * Commercial Software -- Government Users
06: * Subject to Standard License Terms and
07: * Conditions.
08: *
09: * Sun, Sun Microsystems, the Sun logo, and Sun ONE
10: * are trademarks or registered trademarks of Sun Microsystems,
11: * Inc. in the United States and other countries.
12: */package com.sun.portal.providers.simplewebservice.rpc;
13:
14: import com.sun.xml.rpc.wsdl.document.schema.SchemaConstants;
15: import com.sun.xml.rpc.encoding.CombinedSerializer;
16: import com.sun.xml.rpc.encoding.SingletonSerializerFactory;
17: import com.sun.xml.rpc.encoding.SingletonDeserializerFactory;
18: import com.sun.xml.rpc.encoding.literal.LiteralArraySerializer;
19: import com.sun.xml.rpc.util.StructMap;
20: import com.sun.xml.rpc.soap.SOAPVersion;
21: import com.sun.portal.providers.simplewebservice.ParameterDescriptor;
22:
23: import javax.xml.rpc.encoding.TypeMappingRegistry;
24: import javax.xml.rpc.encoding.TypeMapping;
25: import javax.xml.rpc.encoding.SerializerFactory;
26: import javax.xml.rpc.encoding.DeserializerFactory;
27: import javax.xml.rpc.Service;
28: import javax.xml.namespace.QName;
29: import javax.xml.soap.SOAPConstants;
30: import java.util.ArrayList;
31:
32: abstract class ComplexTypeHandler {
33:
34: TypeMappingRegistry registry = null;
35: TypeMapping typeMapping = null;
36: Service service = null;
37: String encoding = SOAPConstants.URI_NS_SOAP_ENCODING;
38: SerializationContext context = null;
39: public static final int COMPLEX_TYPE_SERIALIZER = 1;
40: public static final int COMPLEX_ARRAY_TYPE_SERIALIZER = 2;
41:
42: protected ComplexTypeHandler(Service service, String encoding) {
43: this .service = service;
44: this .encoding = encoding;
45:
46: }
47:
48: protected boolean isAlreadyRegistered(Class javaClass,
49: QName complexTypeQName) {
50:
51: boolean isRegistered = false;
52: //System.out.println("Registering class" + javaClass.getName()+ " For " + complexTypeQName);
53: if (registry == null && typeMapping == null) {
54: registry = service.getTypeMappingRegistry();
55:
56: typeMapping = registry.getTypeMapping(encoding);
57: }
58:
59: // Verify, if type holder is not already registered
60: if (typeMapping.isRegistered(javaClass, complexTypeQName)) {
61: isRegistered = true;
62: }
63:
64: return isRegistered;
65: }
66:
67: public abstract void registerComplexTypeHandler(
68: ParameterDescriptor descriptor, int type);
69:
70: }
|