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