View Javadoc

1   /*
2    * Copyright 2001-2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
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      // Attributes
55      String generic = element.getAttribute("generic");
56      if ((generic != null && (generic.trim().length() > 0)))
57        obj.setGeneric(generic);
58  
59      // Text Node Value
60      // {none}
61  
62      // Child Elements
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 }