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.DiscoveryURL;
22  import org.apache.juddi.datatype.DiscoveryURLs;
23  import org.apache.juddi.datatype.IdentifierBag;
24  import org.apache.juddi.datatype.KeyedReference;
25  import org.apache.juddi.datatype.Name;
26  import org.apache.juddi.datatype.RegistryObject;
27  import org.apache.juddi.datatype.TModelBag;
28  import org.apache.juddi.datatype.TModelKey;
29  import org.apache.juddi.datatype.request.FindBusiness;
30  import org.apache.juddi.datatype.request.FindQualifier;
31  import org.apache.juddi.datatype.request.FindQualifiers;
32  import org.apache.juddi.util.xml.XMLUtils;
33  import org.w3c.dom.Element;
34  
35  /***
36   * FindBusinessHandler
37   *
38   * "Knows about the creation and populating of FindBusiness objects.
39   * Returns FindBusiness."
40   *
41   * @author Steve Viens (sviens@apache.org)
42   * @author Anou Mana (anou_mana@users.sourceforge.net)
43   */
44  public class FindBusinessHandler extends AbstractHandler
45  {
46    public static final String TAG_NAME = "find_business";
47  
48    private HandlerMaker maker = null;
49  
50    protected FindBusinessHandler(HandlerMaker maker)
51    {
52      this.maker = maker;
53    }
54  
55    public RegistryObject unmarshal(Element element)
56    {
57      FindBusiness obj = new FindBusiness();
58      Vector nodeList = null;
59      AbstractHandler handler = null;
60  
61      // Attributes
62      String generic = element.getAttribute("generic");
63      if ((generic != null && (generic.trim().length() > 0)))
64        obj.setGeneric(generic);
65  
66      String maxRows = element.getAttribute("maxRows");
67      if ((maxRows != null) && (maxRows.length() > 0))
68        obj.setMaxRows(maxRows);
69  
70      // Text Node Value
71      // {none}
72  
73      // Child Elements
74      nodeList = XMLUtils.getChildElementsByTagName(element,FindQualifiersHandler.TAG_NAME);
75      if (nodeList.size() > 0)
76      {
77        handler = maker.lookup(FindQualifiersHandler.TAG_NAME);
78        obj.setFindQualifiers((FindQualifiers)handler.unmarshal((Element)nodeList.elementAt(0)));
79      }
80  
81      nodeList = XMLUtils.getChildElementsByTagName(element,NameHandler.TAG_NAME);
82      for (int i=0; i<nodeList.size(); i++)
83      {
84        handler = maker.lookup(NameHandler.TAG_NAME);
85        Name name = (Name )handler.unmarshal((Element)nodeList.elementAt(i));
86        if (name != null)
87          obj.addName(name);
88      }
89  
90      nodeList = XMLUtils.getChildElementsByTagName(element,IdentifierBagHandler.TAG_NAME);
91      if (nodeList.size() > 0)
92      {
93        handler = maker.lookup(IdentifierBagHandler.TAG_NAME);
94        obj.setIdentifierBag((IdentifierBag)handler.unmarshal((Element)nodeList.elementAt(0)));
95      }
96  
97      nodeList = XMLUtils.getChildElementsByTagName(element,CategoryBagHandler.TAG_NAME);
98      if (nodeList.size() > 0)
99      {
100       handler = maker.lookup(CategoryBagHandler.TAG_NAME);
101       obj.setCategoryBag((CategoryBag)handler.unmarshal((Element)nodeList.elementAt(0)));
102     }
103 
104     nodeList = XMLUtils.getChildElementsByTagName(element,TModelBagHandler.TAG_NAME);
105     if (nodeList.size() > 0)
106     {
107       handler = maker.lookup(TModelBagHandler.TAG_NAME);
108       obj.setTModelBag((TModelBag)handler.unmarshal((Element)nodeList.elementAt(0)));
109     }
110 
111     nodeList = XMLUtils.getChildElementsByTagName(element,DiscoveryURLsHandler.TAG_NAME);
112     if (nodeList.size() > 0)
113     {
114       handler = maker.lookup(DiscoveryURLsHandler.TAG_NAME);
115       obj.setDiscoveryURLs((DiscoveryURLs)handler.unmarshal((Element)nodeList.elementAt(0)));
116     }
117 
118     return obj;
119   }
120 
121   public void marshal(RegistryObject object,Element parent)
122   {
123     FindBusiness request = (FindBusiness)object;
124     String generic = request.getGeneric();
125     generic = getGeneric(generic);
126     String namespace = getUDDINamespace(generic);
127     Element element = parent.getOwnerDocument().createElementNS(namespace,TAG_NAME);
128     AbstractHandler handler = null;
129 
130     element.setAttribute("generic",generic);
131 
132     int maxRows = request.getMaxRows();
133     if (maxRows > 0)
134       element.setAttribute("maxRows",String.valueOf(maxRows));
135 
136 
137   FindQualifiers qualifiers = request.getFindQualifiers();
138   if ((qualifiers != null) && (qualifiers.size() > 0))
139   {
140     handler = maker.lookup(FindQualifiersHandler.TAG_NAME);
141     handler.marshal(qualifiers,element);
142   }
143 
144     Vector nameVector = request.getNameVector();
145     if ((nameVector!=null) && (nameVector.size() > 0))
146     {
147       handler = maker.lookup(NameHandler.TAG_NAME);
148       for (int i=0; i < nameVector.size(); i++)
149         handler.marshal((Name)nameVector.elementAt(i),element);
150     }
151 
152     IdentifierBag idBag = request.getIdentifierBag();
153     if (idBag != null)
154     {
155       handler = maker.lookup(IdentifierBagHandler.TAG_NAME);
156       handler.marshal(idBag,element);
157     }
158 
159     CategoryBag catBag = request.getCategoryBag();
160     if (catBag != null)
161     {
162       handler = maker.lookup(CategoryBagHandler.TAG_NAME);
163       handler.marshal(catBag,element);
164     }
165 
166     TModelBag tModBag = request.getTModelBag();
167     if (tModBag != null)
168     {
169       handler = maker.lookup(TModelBagHandler.TAG_NAME);
170       handler.marshal(tModBag,element);
171     }
172 
173   DiscoveryURLs discURLs = request.getDiscoveryURLs();
174   if (discURLs != null)
175   {
176     handler = maker.lookup(DiscoveryURLsHandler.TAG_NAME);
177     handler.marshal(discURLs,element);
178   }
179 
180     parent.appendChild(element);
181   }
182 
183 
184   /****************************************************************************/
185   /****************************** TEST DRIVER *********************************/
186   /****************************************************************************/
187 
188 
189   public static void main(String args[])
190     throws Exception
191   {
192     HandlerMaker maker = HandlerMaker.getInstance();
193     AbstractHandler handler = maker.lookup(FindBusinessHandler.TAG_NAME);
194 
195     Element parent = XMLUtils.newRootElement();
196     Element child = null;
197 
198     DiscoveryURLs discURLs = new DiscoveryURLs();
199     discURLs.addDiscoveryURL(new DiscoveryURL("businessEntity","http://www.sviens.com"));
200 
201     IdentifierBag idBag = new IdentifierBag();
202     idBag.addKeyedReference(new KeyedReference("idBagKeyName","idBagKeyValue"));
203     idBag.addKeyedReference(new KeyedReference("uuid:3860b975-9e0c-4cec-bad6-87dfe00e3864","idBagKeyName2","idBagKeyValue2"));
204 
205     CategoryBag catBag = new CategoryBag();
206     catBag.addKeyedReference(new KeyedReference("catBagKeyName","catBagKeyValue"));
207     catBag.addKeyedReference(new KeyedReference("uuid:8ff45356-acde-4a4c-86bf-f953611d20c6","catBagKeyName2","catBagKeyValue2"));
208 
209     TModelBag tModBag = new TModelBag();
210     tModBag.addTModelKey("uuid:35d9793b-9911-4b85-9f0e-5d4c65b4f253");
211     tModBag.addTModelKey(new TModelKey("uuid:c5ab113f-0d6b-4247-b3c4-8c012726acd8"));
212 
213     FindBusiness request = new FindBusiness();
214     request.addName(new Name("serviceNm"));
215     request.addName(new Name("serviceNm2","en"));
216     request.addFindQualifier(new FindQualifier(FindQualifier.SORT_BY_DATE_ASC));
217     request.addFindQualifier(new FindQualifier(FindQualifier.AND_ALL_KEYS));
218     request.setMaxRows(43);
219     request.setDiscoveryURLs(discURLs);
220     request.setIdentifierBag(idBag);
221     request.setTModelBag(tModBag);
222     request.setCategoryBag(catBag);
223 
224     System.out.println();
225 
226     RegistryObject regObject = request;
227     handler.marshal(regObject,parent);
228     child = (Element)parent.getFirstChild();
229     parent.removeChild(child);
230     XMLUtils.writeXML(child,System.out);
231 
232     System.out.println();
233 
234     regObject = handler.unmarshal(child);
235     handler.marshal(regObject,parent);
236     child = (Element)parent.getFirstChild();
237     parent.removeChild(child);
238     XMLUtils.writeXML(child,System.out);
239   }
240 }