1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.juddi.handler;
17
18 import java.util.Vector;
19
20 import org.apache.juddi.datatype.CategoryBag;
21 import org.apache.juddi.datatype.Description;
22 import org.apache.juddi.datatype.KeyedReference;
23 import org.apache.juddi.datatype.Name;
24 import org.apache.juddi.datatype.OverviewDoc;
25 import org.apache.juddi.datatype.RegistryObject;
26 import org.apache.juddi.datatype.binding.AccessPoint;
27 import org.apache.juddi.datatype.binding.BindingTemplate;
28 import org.apache.juddi.datatype.binding.BindingTemplates;
29 import org.apache.juddi.datatype.binding.HostingRedirector;
30 import org.apache.juddi.datatype.binding.InstanceDetails;
31 import org.apache.juddi.datatype.binding.TModelInstanceDetails;
32 import org.apache.juddi.datatype.binding.TModelInstanceInfo;
33 import org.apache.juddi.datatype.service.BusinessService;
34 import org.apache.juddi.util.xml.XMLUtils;
35 import org.w3c.dom.Element;
36
37 /***
38 * BusinessServiceHandler
39 *
40 * @author Steve Viens (sviens@apache.org)
41 */
42 public class BusinessServiceHandler extends AbstractHandler
43 {
44 public static final String TAG_NAME = "businessService";
45
46 private HandlerMaker maker = null;
47
48 protected BusinessServiceHandler(HandlerMaker maker)
49 {
50 this.maker = maker;
51 }
52
53 public RegistryObject unmarshal(Element element)
54 {
55 BusinessService obj = new BusinessService();
56 Vector nodeList = null;
57 AbstractHandler handler = null;
58
59
60 obj.setBusinessKey(element.getAttribute("businessKey"));
61 obj.setServiceKey(element.getAttribute("serviceKey"));
62
63
64
65
66
67 nodeList = XMLUtils.getChildElementsByTagName(element,NameHandler.TAG_NAME);
68 for (int i=0; i<nodeList.size(); i++)
69 {
70 handler = maker.lookup(NameHandler.TAG_NAME);
71 Name name = (Name )handler.unmarshal((Element)nodeList.elementAt(i));
72 if (name != null)
73 obj.addName(name);
74 }
75
76 nodeList = XMLUtils.getChildElementsByTagName(element,DescriptionHandler.TAG_NAME);
77 for (int i=0; i<nodeList.size(); i++)
78 {
79 handler = maker.lookup(DescriptionHandler.TAG_NAME);
80 Description descr = (Description)handler.unmarshal((Element)nodeList.elementAt(i));
81 if (descr != null)
82 obj.addDescription(descr);
83 }
84
85 nodeList = XMLUtils.getChildElementsByTagName(element,BindingTemplatesHandler.TAG_NAME);
86 if (nodeList.size() > 0)
87 {
88 handler = maker.lookup(BindingTemplatesHandler.TAG_NAME);
89 obj.setBindingTemplates((BindingTemplates)handler.unmarshal((Element)nodeList.elementAt(0)));
90 }
91
92 nodeList = XMLUtils.getChildElementsByTagName(element,CategoryBagHandler.TAG_NAME);
93 if (nodeList.size() > 0)
94 {
95 handler = maker.lookup(CategoryBagHandler.TAG_NAME);
96 obj.setCategoryBag((CategoryBag)handler.unmarshal((Element)nodeList.elementAt(0)));
97 }
98
99 return obj;
100 }
101
102 public void marshal(RegistryObject object,Element parent)
103 {
104 BusinessService service = (BusinessService)object;
105 String generic = getGeneric(null);
106 String namespace = getUDDINamespace(generic);
107 Element element = parent.getOwnerDocument().createElementNS(namespace,TAG_NAME);
108 AbstractHandler handler = null;
109
110 String serviceKey = service.getServiceKey();
111 if (serviceKey != null)
112 element.setAttribute("serviceKey",serviceKey);
113 else
114 element.setAttribute("serviceKey","");
115
116 String businessKey = service.getBusinessKey();
117 if (businessKey != null)
118 element.setAttribute("businessKey",businessKey);
119
120 Vector nameVector = service.getNameVector();
121 if ((nameVector!=null) && (nameVector.size() > 0))
122 {
123 handler = maker.lookup(NameHandler.TAG_NAME);
124 for (int i=0; i < nameVector.size(); i++)
125 handler.marshal((Name)nameVector.elementAt(i),element);
126 }
127
128 Vector descrVector = service.getDescriptionVector();
129 if ((descrVector!=null) && (descrVector.size() > 0))
130 {
131 handler = maker.lookup(DescriptionHandler.TAG_NAME);
132 for (int i=0; i < descrVector.size(); i++)
133 handler.marshal((Description)descrVector.elementAt(i),element);
134 }
135
136 BindingTemplates bindings = service.getBindingTemplates();
137 if (bindings != null)
138 {
139 handler = maker.lookup(BindingTemplatesHandler.TAG_NAME);
140 handler.marshal(bindings,element);
141 }
142
143 CategoryBag categoryBag = service.getCategoryBag();
144 if ((categoryBag != null) && (categoryBag.getKeyedReferenceVector() != null) && (!categoryBag.getKeyedReferenceVector().isEmpty()))
145 {
146 handler = maker.lookup(CategoryBagHandler.TAG_NAME);
147 handler.marshal(categoryBag,element);
148 }
149
150 parent.appendChild(element);
151 }
152
153
154 /****************************************************************************/
155 /****************************** TEST DRIVER *********************************/
156 /****************************************************************************/
157
158
159 public static void main(String args[])
160 throws Exception
161 {
162 HandlerMaker maker = HandlerMaker.getInstance();
163 AbstractHandler handler = maker.lookup(BusinessServiceHandler.TAG_NAME);
164 Element parent = XMLUtils.newRootElement();
165 Element child = null;
166
167 OverviewDoc overDoc = new OverviewDoc();
168 overDoc.setOverviewURL("http://www.sviens.com/service.html");
169 overDoc.addDescription(new Description("over-doc Descr"));
170 overDoc.addDescription(new Description("over-doc Descr Two","en"));
171
172 InstanceDetails instDetails = new InstanceDetails();
173 instDetails.addDescription(new Description("body-isa-wunder"));
174 instDetails.addDescription(new Description("sweetchild-o-mine","it"));
175 instDetails.setInstanceParms("inst-det parameters");
176 instDetails.setOverviewDoc(overDoc);
177
178 TModelInstanceInfo tModInstInfo = new TModelInstanceInfo();
179 tModInstInfo.setTModelKey("uuid:ae0f9fd4-287f-40c9-be91-df47a7c72fd9");
180 tModInstInfo.addDescription(new Description("tMod-Inst-Info"));
181 tModInstInfo.addDescription(new Description("tMod-Inst-Info too","es"));
182 tModInstInfo.setInstanceDetails(instDetails);
183
184 TModelInstanceDetails tModInstDet = new TModelInstanceDetails();
185 tModInstDet.addTModelInstanceInfo(tModInstInfo);
186
187 BindingTemplate binding = new BindingTemplate();
188 binding.setBindingKey("c9613c3c-fe55-4f34-a3da-b3167afbca4a");
189 binding.setServiceKey("997a55bc-563d-4c04-8a94-781604870d31");
190 binding.addDescription(new Description("whatever"));
191 binding.addDescription(new Description("whatever too","fr"));
192 binding.setHostingRedirector(new HostingRedirector("92658289-0bd7-443c-8948-0bb4460b44c0"));
193 binding.setAccessPoint(new AccessPoint(AccessPoint.HTTP,"http://www.sviens.com/service.wsdl"));
194 binding.setTModelInstanceDetails(tModInstDet);
195
196 BindingTemplates bindings = new BindingTemplates();
197 bindings.addBindingTemplate(binding);
198
199 CategoryBag catBag = new CategoryBag();
200 catBag.addKeyedReference(new KeyedReference("keyName","keyValue"));
201 catBag.addKeyedReference(new KeyedReference("uuid:dfddb58c-4853-4a71-865c-f84509017cc7","keyName2","keyValue2"));
202
203 BusinessService service = new BusinessService();
204 service.setServiceKey("fe8af00d-3a2c-4e05-b7ca-95a1259aad4f");
205 service.setBusinessKey("b8cc7266-9eed-4675-b621-34697f252a77");
206 service.setBindingTemplates(bindings);
207 service.setCategoryBag(catBag);
208 service.addName(new Name("serviceNm"));
209 service.addName(new Name("serviceNm2","en"));
210 service.addDescription(new Description("service whatever"));
211 service.addDescription(new Description("service whatever too","it"));
212
213 System.out.println();
214
215 RegistryObject regObject = service;
216 handler.marshal(regObject,parent);
217 child = (Element)parent.getFirstChild();
218 parent.removeChild(child);
219 XMLUtils.writeXML(child,System.out);
220
221 System.out.println();
222
223 regObject = handler.unmarshal(child);
224 handler.marshal(regObject,parent);
225 child = (Element)parent.getFirstChild();
226 parent.removeChild(child);
227 XMLUtils.writeXML(child,System.out);
228
229 System.out.println();
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262 }
263 }