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.Name;
22  import org.apache.juddi.datatype.RegistryObject;
23  import org.apache.juddi.datatype.response.BusinessInfo;
24  import org.apache.juddi.datatype.response.BusinessInfos;
25  import org.apache.juddi.datatype.response.RegisteredInfo;
26  import org.apache.juddi.datatype.response.ServiceInfo;
27  import org.apache.juddi.datatype.response.TModelInfo;
28  import org.apache.juddi.datatype.response.TModelInfos;
29  import org.apache.juddi.util.xml.XMLUtils;
30  import org.w3c.dom.Element;
31  
32  /***
33   * RegisteredInfoHandler
34   *
35   * @author Steve Viens (sviens@apache.org)
36   * @author Anou Mana (anou_mana@users.sourceforge.net)
37   */
38  public class RegisteredInfoHandler extends AbstractHandler
39  {
40    public static final String TAG_NAME = "registeredInfo";
41  
42    private HandlerMaker maker = null;
43  
44    protected RegisteredInfoHandler(HandlerMaker maker)
45    {
46      this.maker = maker;
47    }
48  
49    public RegistryObject unmarshal(Element element)
50    {
51      RegisteredInfo obj = new RegisteredInfo();
52      Vector nodeList = null;
53      AbstractHandler handler = null;
54  
55      // We could use the generic attribute value to
56      // determine which version of UDDI was used to
57      // format the request XML. - Steve
58  
59      // Attributes
60      obj.setGeneric(element.getAttribute("generic"));
61      obj.setOperator(element.getAttribute("operator"));
62  
63      // We can ignore the xmlns attribute since we
64      // can always determine it's value using the
65      // "generic" attribute. - Steve
66  
67      // Text Node Value
68      // {none}
69  
70      // Child Elements
71      nodeList = XMLUtils.getChildElementsByTagName(element,BusinessInfosHandler.TAG_NAME);
72      if (nodeList.size() > 0)
73      {
74        handler = maker.lookup(BusinessInfosHandler.TAG_NAME);
75        obj.setBusinessInfos((BusinessInfos)handler.unmarshal((Element)nodeList.elementAt(0)));
76      }
77  
78      nodeList = XMLUtils.getChildElementsByTagName(element,TModelInfosHandler.TAG_NAME);
79      if (nodeList.size() > 0)
80      {
81        handler = maker.lookup(TModelInfosHandler.TAG_NAME);
82        obj.setTModelInfos((TModelInfos)handler.unmarshal((Element)nodeList.elementAt(0)));
83      }
84  
85      return obj;
86    }
87  
88    public void marshal(RegistryObject object,Element parent)
89    {
90      RegisteredInfo info = (RegisteredInfo)object;
91      String generic = info.getGeneric();
92      generic = getGeneric(generic);
93      String namespace = getUDDINamespace(generic);
94      Element element = parent.getOwnerDocument().createElementNS(namespace,TAG_NAME);
95      AbstractHandler handler = null;
96  
97      element.setAttribute("generic",generic);
98  
99      String operator = info.getOperator();
100     if (operator != null)
101       element.setAttribute("operator",operator);
102     else
103       element.setAttribute("operator","");
104 
105     BusinessInfos bInfos = info.getBusinessInfos();
106     if (bInfos!=null)
107     {
108       handler = maker.lookup(BusinessInfosHandler.TAG_NAME);
109       handler.marshal(bInfos,element);
110     }
111 
112     TModelInfos tInfos = info.getTModelInfos();
113     if (tInfos!=null)
114     {
115       handler = maker.lookup(TModelInfosHandler.TAG_NAME);
116       handler.marshal(tInfos,element);
117     }
118 
119     parent.appendChild(element);
120   }
121 
122 
123   /****************************************************************************/
124   /****************************** TEST DRIVER *********************************/
125   /****************************************************************************/
126 
127 
128   public static void main(String args[])
129     throws Exception
130   {
131     HandlerMaker maker = HandlerMaker.getInstance();
132     AbstractHandler handler = maker.lookup(RegisteredInfoHandler.TAG_NAME);
133 
134     Element parent = XMLUtils.newRootElement();
135     Element child = null;
136 
137     ServiceInfo sInfo = new ServiceInfo();
138     sInfo.addName(new Name("regInfoServNm"));
139     sInfo.addName(new Name("regInfoServNm2","en"));
140     sInfo.setServiceKey("826e6443-e3c5-442b-9bf8-943071ca83f4");
141     sInfo.setBusinessKey("56644a68-8779-46c7-93ce-90eeb7569f3f");
142 
143     BusinessInfo bInfo = new BusinessInfo();
144     bInfo.setBusinessKey("56644a68-8779-46c7-93ce-90eeb7569f3f");
145     bInfo.addName(new Name("regInfoBizNm"));
146     bInfo.addName(new Name("regInfoBizNm2","en"));
147     bInfo.addDescription(new Description("regInfoBiz whatever"));
148     bInfo.addDescription(new Description("regInfoBiz whatever too","fr"));
149     bInfo.addServiceInfo(sInfo);
150 
151     BusinessInfos bInfos = new BusinessInfos();
152     bInfos.addBusinessInfo(bInfo);
153     bInfos.addBusinessInfo(bInfo);
154 
155     TModelInfo tInfo = new TModelInfo();
156     tInfo.setTModelKey("uuid:e86bd2a9-03f6-44c4-b619-400ef2cd7e47");
157     tInfo.setName(new Name("RegInfoTestDriver"));
158 
159     TModelInfos tInfos = new TModelInfos();
160     tInfos.addTModelInfo(tInfo);
161     tInfos.addTModelInfo(tInfo);
162 
163     RegisteredInfo info = new RegisteredInfo();
164     info.setGeneric("2.0");
165     info.setOperator("jUDDI.org");
166     info.setBusinessInfos(bInfos);
167     info.setTModelInfos(tInfos);
168 
169     System.out.println();
170 
171     RegistryObject regObject = info;
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     regObject = handler.unmarshal(child);
180     handler.marshal(regObject,parent);
181     child = (Element)parent.getFirstChild();
182     parent.removeChild(child);
183     XMLUtils.writeXML(child,System.out);
184   }
185 }