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.OverviewDoc;
25  import org.apache.juddi.datatype.RegistryObject;
26  import org.apache.juddi.datatype.UploadRegister;
27  import org.apache.juddi.datatype.request.AuthInfo;
28  import org.apache.juddi.datatype.request.SaveTModel;
29  import org.apache.juddi.datatype.tmodel.TModel;
30  import org.apache.juddi.util.xml.XMLUtils;
31  import org.w3c.dom.Element;
32  
33  /***
34   * @author Steve Viens (sviens@apache.org)
35   */
36  public class SaveTModelHandler extends AbstractHandler
37  {
38    public static final String TAG_NAME = "save_tModel";
39  
40    private HandlerMaker maker = null;
41  
42    protected SaveTModelHandler(HandlerMaker maker)
43    {
44      this.maker = maker;
45    }
46  
47    public RegistryObject unmarshal(Element element)
48    {
49      SaveTModel obj = new SaveTModel();
50      Vector nodeList = null;
51      AbstractHandler handler = null;
52  
53      // Attributes
54      String generic = element.getAttribute("generic");
55      if ((generic != null && (generic.trim().length() > 0)))
56        obj.setGeneric(generic);
57  
58      // Text Node Value
59      // {none}
60  
61      // Child Elements
62      nodeList = XMLUtils.getChildElementsByTagName(element,AuthInfoHandler.TAG_NAME);
63      if (nodeList.size() > 0)
64      {
65        handler = maker.lookup(AuthInfoHandler.TAG_NAME);
66        obj.setAuthInfo((AuthInfo)handler.unmarshal((Element)nodeList.elementAt(0)));
67      }
68  
69      nodeList = XMLUtils.getChildElementsByTagName(element,TModelHandler.TAG_NAME);
70      for (int i=0; i<nodeList.size(); i++)
71      {
72        handler = maker.lookup(TModelHandler.TAG_NAME);
73        obj.addTModel((TModel)handler.unmarshal((Element)nodeList.elementAt(i)));
74      }
75  
76      nodeList = XMLUtils.getChildElementsByTagName(element,UploadRegisterHandler.TAG_NAME);
77      for (int i=0; i<nodeList.size(); i++)
78      {
79        handler = maker.lookup(UploadRegisterHandler.TAG_NAME);
80        obj.addUploadRegister((UploadRegister)handler.unmarshal((Element)nodeList.elementAt(i)));
81      }
82  
83      return obj;
84    }
85  
86    public void marshal(RegistryObject object,Element parent)
87    {
88      SaveTModel request = (SaveTModel)object;
89      String generic = request.getGeneric();
90      generic = getGeneric(generic);
91      String namespace = getUDDINamespace(generic);
92      Element element = parent.getOwnerDocument().createElementNS(namespace,TAG_NAME);
93      AbstractHandler handler = null;
94  
95      element.setAttribute("generic",generic);
96  
97      AuthInfo authInfo = request.getAuthInfo();
98      if (authInfo != null)
99      {
100       handler = maker.lookup(AuthInfoHandler.TAG_NAME);
101       handler.marshal(authInfo,element);
102     }
103 
104     Vector tModelVector = request.getTModelVector();
105     if ((tModelVector!=null) && (tModelVector.size() > 0))
106     {
107       handler = maker.lookup(TModelHandler.TAG_NAME);
108       for (int i=0; i<tModelVector.size(); i++)
109         handler.marshal((TModel)tModelVector.elementAt(i),element);
110     }
111 
112     Vector urVector = request.getUploadRegisterVector();
113     if ((urVector!=null) && (urVector.size() > 0))
114     {
115       handler = maker.lookup(UploadRegisterHandler.TAG_NAME);
116       for (int i=0; i<urVector.size(); i++)
117         handler.marshal((UploadRegister)urVector.elementAt(i),element);
118     }
119 
120     parent.appendChild(element);
121   }
122 
123 
124   /****************************************************************************/
125   /****************************** TEST DRIVER *********************************/
126   /****************************************************************************/
127 
128 
129   public static void main(String args[])
130     throws Exception
131   {
132     HandlerMaker maker = HandlerMaker.getInstance();
133     AbstractHandler handler = maker.lookup(SaveTModelHandler.TAG_NAME);
134 
135     Element parent = XMLUtils.newRootElement();
136     Element child = null;
137 
138     AuthInfo authInfo = new AuthInfo();
139     authInfo.setValue("6f157513-844e-4a95-a856-d257e6ba9726");
140 
141     OverviewDoc overDoc = new OverviewDoc();
142     overDoc.setOverviewURL("http://www.sviens.com/service.html");
143     overDoc.addDescription(new Description("over-doc Descr"));
144     overDoc.addDescription(new Description("over-doc Descr Two","en"));
145 
146     CategoryBag catBag = new CategoryBag();
147     catBag.addKeyedReference(new KeyedReference("catBagKeyName","catBagKeyValue"));
148     catBag.addKeyedReference(new KeyedReference("uuid:dfddb58c-4853-4a71-865c-f84509017cc7","catBagKeyName2","catBagKeyValue2"));
149 
150     IdentifierBag idBag = new IdentifierBag();
151     idBag.addKeyedReference(new KeyedReference("idBagKeyName","idBagkeyValue"));
152     idBag.addKeyedReference(new KeyedReference("uuid:f78a135a-4769-4e79-8604-54d440314bc0","idBagKeyName2","idBagkeyValue2"));
153 
154     TModel tModel = new TModel();
155     tModel.setTModelKey("uuid:269855db-62eb-4862-8e5a-1b06f2753038");
156     tModel.setOperator("jUDDI");
157     tModel.setAuthorizedName("Steve Viens");
158     tModel.setName("jUDDI TModel");
159     tModel.addDescription(new Description("tModel whatever"));
160     tModel.addDescription(new Description("tModel whatever too","fr"));
161     tModel.setCategoryBag(catBag);
162     tModel.setIdentifierBag(idBag);
163     tModel.setOverviewDoc(overDoc);
164 
165     SaveTModel request = new SaveTModel();
166     request.setAuthInfo(authInfo);
167     request.addTModel(tModel);
168     request.addTModel(tModel);
169     request.addUploadRegister(new UploadRegister("http://www.juddi.org/businessEntity.xml"));
170     request.addUploadRegister(new UploadRegister("http://www.sourceforge.net/businessService.xml"));
171     request.addUploadRegister(new UploadRegister("http://www.uddi.org/bindingTemplate.xml"));
172 
173     System.out.println();
174 
175     RegistryObject regObject = request;
176     handler.marshal(regObject,parent);
177     child = (Element)parent.getFirstChild();
178     parent.removeChild(child);
179     XMLUtils.writeXML(child,System.out);
180 
181     System.out.println();
182 
183     regObject = handler.unmarshal(child);
184     handler.marshal(regObject,parent);
185     child = (Element)parent.getFirstChild();
186     parent.removeChild(child);
187     XMLUtils.writeXML(child,System.out);
188   }
189 }