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.OverviewDoc;
25 import org.apache.juddi.datatype.RegistryObject;
26 import org.apache.juddi.datatype.response.TModelDetail;
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 * "Knows about the creation and populating of TModelDetail objects.
33 * Returns TModelDetail."
34 *
35 * @author Steve Viens (sviens@apache.org)
36 */
37 public class TModelDetailHandler extends AbstractHandler
38 {
39 public static final String TAG_NAME = "tModelDetail";
40
41 private HandlerMaker maker = null;
42
43 protected TModelDetailHandler(HandlerMaker maker)
44 {
45 this.maker = maker;
46 }
47
48 public RegistryObject unmarshal(Element element)
49 {
50 TModelDetail obj = new TModelDetail();
51 Vector nodeList = null;
52 AbstractHandler handler = null;
53
54
55
56
57
58
59 obj.setGeneric(element.getAttribute("generic"));
60 obj.setOperator(element.getAttribute("operator"));
61
62
63
64
65
66 String truncValue = element.getAttribute("truncated");
67 if (truncValue != null)
68 obj.setTruncated(truncValue.equalsIgnoreCase("true"));
69
70
71
72
73
74 nodeList = XMLUtils.getChildElementsByTagName(element,TModelHandler.TAG_NAME);
75 for (int i=0; i<nodeList.size(); i++)
76 {
77 handler = maker.lookup(TModelHandler.TAG_NAME);
78 obj.addTModel((TModel)handler.unmarshal((Element)nodeList.elementAt(i)));
79 }
80
81 return obj;
82 }
83
84 public void marshal(RegistryObject object,Element parent)
85 {
86 TModelDetail detail = (TModelDetail)object;
87 String generic = detail.getGeneric();
88 generic = getGeneric(generic);
89 String namespace = getUDDINamespace(generic);
90 Element element = parent.getOwnerDocument().createElementNS(namespace,TAG_NAME);
91 AbstractHandler handler = null;
92
93 element.setAttribute("generic",generic);
94
95 String operator = detail.getOperator();
96 if (operator != null)
97 element.setAttribute("operator",operator);
98 else
99 element.setAttribute("operator","");
100
101 boolean truncated = detail.isTruncated();
102 if (truncated)
103 element.setAttribute("truncated","true");
104
105 Vector vector = detail.getTModelVector();
106 if ((vector!=null) && (vector.size() > 0))
107 {
108 handler = maker.lookup(TModelHandler.TAG_NAME);
109 for (int i=0; i < vector.size(); i++)
110 handler.marshal((TModel)vector.elementAt(i),element);
111 }
112
113 parent.appendChild(element);
114 }
115
116
117 /****************************************************************************/
118 /****************************** TEST DRIVER *********************************/
119 /****************************************************************************/
120
121
122 public static void main(String args[])
123 throws Exception
124 {
125 HandlerMaker maker = HandlerMaker.getInstance();
126 AbstractHandler handler = maker.lookup(TModelDetailHandler.TAG_NAME);
127
128 Element parent = XMLUtils.newRootElement();
129 Element child = null;
130
131 OverviewDoc overDoc = new OverviewDoc();
132 overDoc.setOverviewURL("http://www.sviens.com/service.html");
133 overDoc.addDescription(new Description("over-doc Descr"));
134 overDoc.addDescription(new Description("over-doc Descr Two","en"));
135
136 CategoryBag catBag = new CategoryBag();
137 catBag.addKeyedReference(new KeyedReference("catBagKeyName","catBagKeyValue"));
138 catBag.addKeyedReference(new KeyedReference("uuid:dfddb58c-4853-4a71-865c-f84509017cc7","catBagKeyName2","catBagKeyValue2"));
139
140 IdentifierBag idBag = new IdentifierBag();
141 idBag.addKeyedReference(new KeyedReference("idBagKeyName","idBagkeyValue"));
142 idBag.addKeyedReference(new KeyedReference("uuid:f78a135a-4769-4e79-8604-54d440314bc0","idBagKeyName2","idBagkeyValue2"));
143
144 TModel tModel = new TModel();
145 tModel.setTModelKey("uuid:269855db-62eb-4862-8e5a-1b06f2753038");
146 tModel.setOperator("jUDDI");
147 tModel.setAuthorizedName("Steve Viens");
148 tModel.setName("jUDDI TModel");
149 tModel.addDescription(new Description("tModel whatever"));
150 tModel.addDescription(new Description("tModel whatever too","fr"));
151 tModel.setCategoryBag(catBag);
152 tModel.setIdentifierBag(idBag);
153 tModel.setOverviewDoc(overDoc);
154
155 TModelDetail detail = new TModelDetail();
156 detail.setGeneric("2.0");
157 detail.setOperator("jUDDI.org");
158 detail.setTruncated(true);
159 detail.addTModel(tModel);
160 detail.addTModel(tModel);
161
162 System.out.println();
163
164 RegistryObject regObject = detail;
165 handler.marshal(regObject,parent);
166 child = (Element)parent.getFirstChild();
167 parent.removeChild(child);
168 XMLUtils.writeXML(child,System.out);
169
170 System.out.println();
171
172 regObject = handler.unmarshal(child);
173 handler.marshal(regObject,parent);
174 child = (Element)parent.getFirstChild();
175 parent.removeChild(child);
176 XMLUtils.writeXML(child,System.out);
177 }
178 }