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.Description;
21 import org.apache.juddi.datatype.OverviewDoc;
22 import org.apache.juddi.datatype.RegistryObject;
23 import org.apache.juddi.datatype.binding.AccessPoint;
24 import org.apache.juddi.datatype.binding.BindingTemplate;
25 import org.apache.juddi.datatype.binding.HostingRedirector;
26 import org.apache.juddi.datatype.binding.InstanceDetails;
27 import org.apache.juddi.datatype.binding.TModelInstanceDetails;
28 import org.apache.juddi.datatype.binding.TModelInstanceInfo;
29 import org.apache.juddi.datatype.request.AuthInfo;
30 import org.apache.juddi.datatype.request.SaveBinding;
31 import org.apache.juddi.util.xml.XMLUtils;
32 import org.w3c.dom.Element;
33
34 /***
35 * @author Steve Viens (sviens@apache.org)
36 */
37 public class SaveBindingHandler extends AbstractHandler
38 {
39 public static final String TAG_NAME = "save_binding";
40
41 private HandlerMaker maker = null;
42
43 protected SaveBindingHandler(HandlerMaker maker)
44 {
45 this.maker = maker;
46 }
47
48 public RegistryObject unmarshal(Element element)
49 {
50 SaveBinding obj = new SaveBinding();
51 Vector nodeList = null;
52 AbstractHandler handler = null;
53
54
55 String generic = element.getAttribute("generic");
56 if ((generic != null && (generic.trim().length() > 0)))
57 obj.setGeneric(generic);
58
59
60
61
62
63 nodeList = XMLUtils.getChildElementsByTagName(element,AuthInfoHandler.TAG_NAME);
64 if (nodeList.size() > 0)
65 {
66 handler = maker.lookup(AuthInfoHandler.TAG_NAME);
67 obj.setAuthInfo((AuthInfo)handler.unmarshal((Element)nodeList.elementAt(0)));
68 }
69
70 nodeList = XMLUtils.getChildElementsByTagName(element,BindingTemplateHandler.TAG_NAME);
71 for (int i=0; i<nodeList.size(); i++)
72 {
73 handler = maker.lookup(BindingTemplateHandler.TAG_NAME);
74 obj.addBindingTemplate((BindingTemplate)handler.unmarshal((Element)nodeList.elementAt(i)));
75 }
76
77 return obj;
78 }
79
80 public void marshal(RegistryObject object,Element parent)
81 {
82 SaveBinding request = (SaveBinding)object;
83 String generic = request.getGeneric();
84 generic = getGeneric(generic);
85 String namespace = getUDDINamespace(generic);
86 Element element = parent.getOwnerDocument().createElementNS(namespace,TAG_NAME);
87 AbstractHandler handler = null;
88
89 element.setAttribute("generic",generic);
90
91 AuthInfo authInfo = request.getAuthInfo();
92 if (authInfo != null)
93 {
94 handler = maker.lookup(AuthInfoHandler.TAG_NAME);
95 handler.marshal(authInfo,element);
96 }
97
98 Vector bindingVector = request.getBindingTemplateVector();
99 if ((bindingVector!=null) && (bindingVector.size() > 0))
100 {
101 handler = maker.lookup(BindingTemplateHandler.TAG_NAME);
102 for (int i=0; i<bindingVector.size(); i++)
103 handler.marshal((BindingTemplate)bindingVector.elementAt(i),element);
104 }
105
106 parent.appendChild(element);
107 }
108
109
110 /****************************************************************************/
111 /****************************** TEST DRIVER *********************************/
112 /****************************************************************************/
113
114
115 public static void main(String args[])
116 throws Exception
117 {
118 HandlerMaker maker = HandlerMaker.getInstance();
119 AbstractHandler handler = maker.lookup(SaveBindingHandler.TAG_NAME);
120
121 Element parent = XMLUtils.newRootElement();
122 Element child = null;
123
124 AuthInfo authInfo = new AuthInfo();
125 authInfo.setValue("6f157513-844e-4a95-a856-d257e6ba9726");
126
127 OverviewDoc overDoc = new OverviewDoc();
128 overDoc.setOverviewURL("http://www.sviens.com/service.html");
129 overDoc.addDescription(new Description("over-doc Descr"));
130 overDoc.addDescription(new Description("over-doc Descr Two","en"));
131
132 InstanceDetails instDetails = new InstanceDetails();
133 instDetails.addDescription(new Description("body-isa-wunder"));
134 instDetails.addDescription(new Description("sweetchild-o-mine","it"));
135 instDetails.setInstanceParms("inst-det parameters");
136 instDetails.setOverviewDoc(overDoc);
137
138 TModelInstanceInfo tModInstInfo = new TModelInstanceInfo();
139 tModInstInfo.setTModelKey("uuid:ae0f9fd4-287f-40c9-be91-df47a7c72fd9");
140 tModInstInfo.addDescription(new Description("tMod-Inst-Info"));
141 tModInstInfo.addDescription(new Description("tMod-Inst-Info too","es"));
142 tModInstInfo.setInstanceDetails(instDetails);
143
144 TModelInstanceDetails tModInstDet = new TModelInstanceDetails();
145 tModInstDet.addTModelInstanceInfo(tModInstInfo);
146
147 BindingTemplate binding = new BindingTemplate();
148 binding.setBindingKey("c9613c3c-fe55-4f34-a3da-b3167afbca4a");
149 binding.setServiceKey("997a55bc-563d-4c04-8a94-781604870d31");
150 binding.addDescription(new Description("whatever"));
151 binding.addDescription(new Description("whatever too","fr"));
152 binding.setHostingRedirector(new HostingRedirector("92658289-0bd7-443c-8948-0bb4460b44c0"));
153 binding.setAccessPoint(new AccessPoint(AccessPoint.HTTP,"http://www.sviens.com/service.wsdl"));
154 binding.setTModelInstanceDetails(tModInstDet);
155
156 SaveBinding service = new SaveBinding();
157 service.setAuthInfo(authInfo);
158 service.addBindingTemplate(binding);
159 service.addBindingTemplate(binding);
160
161 System.out.println();
162
163 RegistryObject regObject = service;
164 handler.marshal(regObject,parent);
165 child = (Element)parent.getFirstChild();
166 parent.removeChild(child);
167 XMLUtils.writeXML(child,System.out);
168
169 System.out.println();
170
171 regObject = handler.unmarshal(child);
172 handler.marshal(regObject,parent);
173 child = (Element)parent.getFirstChild();
174 parent.removeChild(child);
175 XMLUtils.writeXML(child,System.out);
176
177 System.out.println();
178 }
179 }