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