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.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      // Attributes
60      obj.setBusinessKey(element.getAttribute("businessKey"));
61      obj.setServiceKey(element.getAttribute("serviceKey"));
62  
63      // Text Node Value
64      // {none}
65  
66      // Child Elements
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 //    String xml =
233 //      "<businessService businessKey=\"34D599999999-4444-4444-4444-88888888\" " +
234 //      "serviceKey=\"34D599999999-4444-4444-4444-88888888\">\n" +
235 //      "<name>fred</name>\n" +
236 //      "<description>desc one</description>" +
237 //      "<bindingTemplates>\n" +
238 //      "<bindingTemplate bindingKey=\"34D599999999-4444-4444-4444-33333333\">" +
239 //      " serviceKey=\"34D599999999-4444-4444-4444-22222222\">\n" +
240 //      "<description>whatever</description>" +
241 //      "<description>whatever too</description>" +
242 //      "<hostingRedirector bindingKey=\"999999999999-4444-4444-4444-88888888\"></hostingRedirector>" +
243 //      "<tModelInstanceDetails>\n" +
244 //      "<tModelInstanceInfo tModelKey=\"uuid:34D599999999-4444-5555-4444-88888888\">\n" +
245 //      "<description>GR Proprietary XML purchase order</description>\n" +
246 //      "<description> d1 </description>\n" +
247 //      "</tModelInstanceInfo>\n" +
248 //      "<tModelInstanceInfo tModelKey=\"uuid:34D599999999-4444-4444-4444-88888888\">\n" +
249 //      "<description>Fred Proprietary XML purchase order</description>\n" +
250 //      "<description> d2 </description>\n" +
251 //      "</tModelInstanceInfo>\n" +
252 //      "</tModelInstanceDetails>\n" +
253 //      "</bindingTemplate>\n" +
254 //      "</bindingTemplates>\n" +
255 //      "<categoryBag>\n" +
256 //      "<keyedReference tModelKey=\"uuid:999999999999-4444-4444-4444-88888888\"\n" +
257 //      "keyName=\"name\" keyValue=\"value\"></keyedReference>\n" +
258 //      "<keyedReference tModelKey=\"uuid:119999999999-4444-4444-4444-88888888\"\n" +
259 //      "keyName=\"name of key\" keyValue=\"val\"></keyedReference>\n" +
260 //      "</categoryBag>\n" +
261 //      "</businessService>\n";
262   }
263 }