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.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      // Attributes
55      obj.setTModelKey(element.getAttribute("tModelKey"));
56      obj.setOperator(element.getAttribute("operator"));
57      obj.setAuthorizedName(element.getAttribute("authorizedName"));
58  
59      // Text Node Value
60      // [none]
61  
62      // Child Elements
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 }