1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
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
72
73
74
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 }