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.Description;
22 import org.apache.juddi.datatype.IdentifierBag;
23 import org.apache.juddi.datatype.KeyedReference;
24 import org.apache.juddi.datatype.Name;
25 import org.apache.juddi.datatype.OverviewDoc;
26 import org.apache.juddi.datatype.RegistryObject;
27 import org.apache.juddi.datatype.tmodel.TModel;
28 import org.apache.juddi.util.xml.XMLUtils;
29 import org.w3c.dom.Element;
30
31 /***
32 * TModelHandler
33 *
34 * @author Steve Viens (sviens@apache.org)
35 * @author Anou Mana (anou_mana@users.sourceforge.net)
36 */
37 public class TModelHandler extends AbstractHandler
38 {
39 public static final String TAG_NAME = "tModel";
40
41 private HandlerMaker maker = null;
42
43 protected TModelHandler(HandlerMaker maker)
44 {
45 this.maker = maker;
46 }
47
48 public RegistryObject unmarshal(Element element)
49 {
50 TModel obj = new TModel();
51 Vector nodeList = null;
52 AbstractHandler handler = null;
53
54
55 obj.setTModelKey(element.getAttribute("tModelKey"));
56 obj.setOperator(element.getAttribute("operator"));
57 obj.setAuthorizedName(element.getAttribute("authorizedName"));
58
59
60
61
62
63 nodeList = XMLUtils.getChildElementsByTagName(element,NameHandler.TAG_NAME);
64 if (nodeList.size() > 0)
65 {
66 handler = maker.lookup(NameHandler.TAG_NAME);
67 Name name = (Name )handler.unmarshal((Element)nodeList.elementAt(0));
68 if (name != null)
69 obj.setName(name);
70 }
71
72 nodeList = XMLUtils.getChildElementsByTagName(element,DescriptionHandler.TAG_NAME);
73 for (int i=0; i<nodeList.size(); i++)
74 {
75 handler = maker.lookup(DescriptionHandler.TAG_NAME);
76 Description descr = (Description)handler.unmarshal((Element)nodeList.elementAt(i));
77 if (descr != null)
78 obj.addDescription(descr);
79 }
80
81 nodeList = XMLUtils.getChildElementsByTagName(element,OverviewDocHandler.TAG_NAME);
82 if (nodeList.size() > 0)
83 {
84 handler = maker.lookup(OverviewDocHandler.TAG_NAME);
85 obj.setOverviewDoc((OverviewDoc)handler.unmarshal((Element)nodeList.elementAt(0)));
86 }
87
88 nodeList = XMLUtils.getChildElementsByTagName(element,IdentifierBagHandler.TAG_NAME);
89 if (nodeList.size() > 0)
90 {
91 handler = maker.lookup(IdentifierBagHandler.TAG_NAME);
92 obj.setIdentifierBag((IdentifierBag)handler.unmarshal((Element)nodeList.elementAt(0)));
93 }
94
95 nodeList = XMLUtils.getChildElementsByTagName(element,CategoryBagHandler.TAG_NAME);
96 if (nodeList.size() > 0)
97 {
98 handler = maker.lookup(CategoryBagHandler.TAG_NAME);
99 obj.setCategoryBag((CategoryBag)handler.unmarshal((Element)nodeList.elementAt(0)));
100 }
101
102 return obj;
103 }
104
105 public void marshal(RegistryObject object,Element parent)
106 {
107 TModel tModel = (TModel)object;
108 String generic = getGeneric(null);
109 String namespace = getUDDINamespace(generic);
110 Element element = parent.getOwnerDocument().createElementNS(namespace,TAG_NAME);
111 AbstractHandler handler = null;
112
113 String tModelKey = tModel.getTModelKey();
114 if (tModelKey != null)
115 element.setAttribute("tModelKey",tModelKey);
116 else
117 element.setAttribute("tModelKey","");
118
119 String operator = tModel.getOperator();
120 if (operator != null)
121 element.setAttribute("operator",operator);
122
123 String authName = tModel.getAuthorizedName();
124 if (authName != null)
125 element.setAttribute("authorizedName",authName);
126
127 Name name = tModel.getName();
128 if (name != null)
129 {
130 handler = maker.lookup(NameHandler.TAG_NAME);
131 handler.marshal(name,element);
132 }
133
134 Vector descrVector = tModel.getDescriptionVector();
135 if ((descrVector!=null) && (descrVector.size() > 0))
136 {
137 handler = maker.lookup(DescriptionHandler.TAG_NAME);
138 for (int i=0; i < descrVector.size(); i++)
139 handler.marshal((Description)descrVector.elementAt(i),element);
140 }
141
142 OverviewDoc overDoc = tModel.getOverviewDoc();
143 if (overDoc != null)
144 {
145 handler = maker.lookup(OverviewDocHandler.TAG_NAME);
146 handler.marshal(overDoc,element);
147 }
148
149 IdentifierBag identifierBag = tModel.getIdentifierBag();
150 if ((identifierBag != null) && (identifierBag.getKeyedReferenceVector() != null) && (!identifierBag.getKeyedReferenceVector().isEmpty()))
151 {
152 handler = maker.lookup(IdentifierBagHandler.TAG_NAME);
153 handler.marshal(identifierBag,element);
154 }
155
156 CategoryBag categoryBag = tModel.getCategoryBag();
157 if ((categoryBag != null) && (categoryBag.getKeyedReferenceVector() != null) && (!categoryBag.getKeyedReferenceVector().isEmpty()))
158 {
159 handler = maker.lookup(CategoryBagHandler.TAG_NAME);
160 handler.marshal(categoryBag,element);
161 }
162
163 parent.appendChild(element);
164 }
165
166
167 /****************************************************************************/
168 /****************************** TEST DRIVER *********************************/
169 /****************************************************************************/
170
171
172 public static void main(String args[])
173 throws Exception
174 {
175 HandlerMaker maker = HandlerMaker.getInstance();
176 AbstractHandler handler = maker.lookup(TModelHandler.TAG_NAME);
177
178 Element parent = XMLUtils.newRootElement();
179 Element child = null;
180
181 OverviewDoc overDoc = new OverviewDoc();
182 overDoc.setOverviewURL("http://www.sviens.com/service.html");
183 overDoc.addDescription(new Description("over-doc Descr"));
184 overDoc.addDescription(new Description("over-doc Descr Two","en"));
185
186 CategoryBag catBag = new CategoryBag();
187 catBag.addKeyedReference(new KeyedReference("catBagKeyName","catBagKeyValue"));
188 catBag.addKeyedReference(new KeyedReference("uuid:dfddb58c-4853-4a71-865c-f84509017cc7","catBagKeyName2","catBagKeyValue2"));
189
190 IdentifierBag idBag = new IdentifierBag();
191 idBag.addKeyedReference(new KeyedReference("idBagKeyName","idBagkeyValue"));
192 idBag.addKeyedReference(new KeyedReference("uuid:f78a135a-4769-4e79-8604-54d440314bc0","idBagKeyName2","idBagkeyValue2"));
193
194 TModel tModel = new TModel();
195 tModel.setTModelKey("uuid:269855db-62eb-4862-8e5a-1b06f2753038");
196 tModel.setOperator("jUDDI");
197 tModel.setAuthorizedName("Steve Viens");
198 tModel.setName("jUDDI TModel");
199 tModel.addDescription(new Description("tModel whatever"));
200 tModel.addDescription(new Description("tModel whatever too","fr"));
201 tModel.setCategoryBag(catBag);
202 tModel.setIdentifierBag(idBag);
203 tModel.setOverviewDoc(overDoc);
204
205 System.out.println();
206
207 RegistryObject regObject = tModel;
208 handler.marshal(regObject,parent);
209 child = (Element)parent.getFirstChild();
210 parent.removeChild(child);
211 XMLUtils.writeXML(child,System.out);
212
213 System.out.println();
214
215 regObject = handler.unmarshal(child);
216 handler.marshal(regObject,parent);
217 child = (Element)parent.getFirstChild();
218 parent.removeChild(child);
219 XMLUtils.writeXML(child,System.out);
220 }
221 }