1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.ws.commons.schema.extensions;
18
19 import org.apache.ws.commons.schema.XmlSchemaObject;
20 import org.w3c.dom.Node;
21
22 import javax.xml.namespace.QName;
23 import java.util.HashMap;
24 import java.util.Map;
25
26
27
28
29
30
31
32
33 public class ExtensionRegistry {
34
35
36
37
38 private Map extensionSerializers = new HashMap();
39 private Map extensionDeserializers = new HashMap();
40
41
42
43
44 private ExtensionSerializer defaultExtensionSerializer =new DefaultExtensionSerializer();
45 private ExtensionDeserializer defaultExtensionDeserializer = new DefaultExtensionDeserializer();
46
47
48 public ExtensionSerializer getDefaultExtensionSerializer() {
49 return defaultExtensionSerializer;
50 }
51
52 public void setDefaultExtensionSerializer(ExtensionSerializer defaultExtensionSerializer) {
53 this.defaultExtensionSerializer = defaultExtensionSerializer;
54 }
55
56 public ExtensionDeserializer getDefaultExtensionDeserializer() {
57 return defaultExtensionDeserializer;
58 }
59
60 public void setDefaultExtensionDeserializer(ExtensionDeserializer defaultExtensionDeserializer) {
61 this.defaultExtensionDeserializer = defaultExtensionDeserializer;
62 }
63
64
65
66
67
68
69 public void registerDeserializer(QName name,ExtensionDeserializer deserializer){
70 extensionDeserializers.put(name,deserializer);
71 }
72
73
74
75
76
77 public void registerSerializer(Class classOfType,ExtensionSerializer serializer){
78 extensionSerializers.put(classOfType,serializer);
79 }
80
81
82
83
84
85
86
87 public void unregisterSerializer(QName name){
88 extensionSerializers.remove(name);
89 }
90
91
92
93
94
95
96 public void unregisterDeserializer(Class classOfType){
97 extensionDeserializers.remove(classOfType);
98 }
99
100
101
102
103
104
105
106
107
108
109
110 public void serializeExtension(XmlSchemaObject parentSchemaObject,
111 Class classOfType,
112 Node node){
113 Object serializerObject = extensionSerializers.get(classOfType);
114 if (serializerObject!=null){
115
116 ExtensionSerializer ser = (ExtensionSerializer)serializerObject;
117 ser.serialize(parentSchemaObject,classOfType,node);
118 }else if (defaultExtensionSerializer!=null) {
119 defaultExtensionSerializer.serialize(parentSchemaObject,classOfType,node);
120 }
121
122
123 }
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 public void deserializeExtension(XmlSchemaObject parentSchemaObject,
139 QName name,
140 Node rawNode){
141 Object deserializerObject = extensionDeserializers.get(name);
142 if (deserializerObject !=null){
143
144 ExtensionDeserializer deser = (ExtensionDeserializer)deserializerObject;
145 deser.deserialize(parentSchemaObject,name,rawNode);
146 } else if (defaultExtensionDeserializer!=null){
147 defaultExtensionDeserializer.deserialize(parentSchemaObject,name,rawNode);
148 }
149 }
150
151 }