KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > juddi > handler > SharedRelationshipsHandler


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 JavaDoc;
19
20 import org.apache.juddi.datatype.KeyedReference;
21 import org.apache.juddi.datatype.RegistryObject;
22 import org.apache.juddi.datatype.SharedRelationships;
23 import org.apache.juddi.util.xml.XMLUtils;
24 import org.w3c.dom.Element JavaDoc;
25
26 /**
27  * "Knows about the creation and populating of SharedRelationships objects.
28  * Returns SharedRelationships."
29  *
30  * @author Steve Viens (sviens@apache.org)
31  */

32 public class SharedRelationshipsHandler extends AbstractHandler
33 {
34   public static final String JavaDoc TAG_NAME = "sharedRelationships";
35
36   private HandlerMaker maker = null;
37
38   protected SharedRelationshipsHandler(HandlerMaker maker)
39   {
40     this.maker = maker;
41   }
42
43   public RegistryObject unmarshal(Element JavaDoc element)
44   {
45     SharedRelationships obj = new SharedRelationships();
46     Vector JavaDoc nodeList = null;
47     AbstractHandler handler = null;
48
49     // Attributes
50
String JavaDoc direction = element.getAttribute("direction");
51     if ((direction != null && (direction.trim().length() > 0)))
52       obj.setDirection(direction);
53
54     // Text Node Value
55
// {none}
56

57     // Child Elements
58
nodeList = XMLUtils.getChildElementsByTagName(element,KeyedReferenceHandler.TAG_NAME);
59     for (int i=0; i<nodeList.size(); i++)
60     {
61       handler = maker.lookup(KeyedReferenceHandler.TAG_NAME);
62       obj.addKeyedReference((KeyedReference)handler.unmarshal((Element JavaDoc)nodeList.elementAt(i)));
63     }
64
65     return obj;
66   }
67
68   public void marshal(RegistryObject object,Element JavaDoc parent)
69   {
70     SharedRelationships relationships = (SharedRelationships)object;
71     Element JavaDoc element = parent.getOwnerDocument().createElementNS(null,TAG_NAME);
72
73     String JavaDoc direction = relationships.getDirection();
74     if ((direction != null && (direction.length() > 0)))
75       element.setAttribute("direction",direction);
76
77     Vector JavaDoc keyedRefVector = relationships.getKeyedReferenceVector();
78     if ((keyedRefVector!=null) && (keyedRefVector.size() > 0))
79     {
80       AbstractHandler handler = maker.lookup(KeyedReferenceHandler.TAG_NAME);
81       for (int i=0; i < keyedRefVector.size(); i++)
82         handler.marshal((KeyedReference)keyedRefVector.elementAt(i),element);
83     }
84
85     parent.appendChild(element);
86   }
87
88
89   /***************************************************************************/
90   /***************************** TEST DRIVER *********************************/
91   /***************************************************************************/
92
93
94   public static void main(String JavaDoc args[])
95     throws Exception JavaDoc
96   {
97
98     HandlerMaker maker = HandlerMaker.getInstance();
99     AbstractHandler handler = maker.lookup(SharedRelationshipsHandler.TAG_NAME);
100
101     Element JavaDoc parent = XMLUtils.newRootElement();
102     Element JavaDoc child = null;
103
104     SharedRelationships relationships = new SharedRelationships();
105     relationships.setDirection("toKey");
106     relationships.addKeyedReference(new KeyedReference("sharedRefKeyName","sharedRefKeyValue"));
107     relationships.addKeyedReference(new KeyedReference("uuid:8ff45356-acde-4a4c-86bf-f953611d20c6","sharedRefKeyName2","sharedRefKeyValue2"));
108
109     System.out.println();
110
111     RegistryObject regObject = relationships;
112     handler.marshal(regObject,parent);
113     child = (Element JavaDoc)parent.getFirstChild();
114     parent.removeChild(child);
115     XMLUtils.writeXML(child,System.out);
116
117     System.out.println();
118
119     regObject = handler.unmarshal(child);
120     handler.marshal(regObject,parent);
121     child = (Element JavaDoc)parent.getFirstChild();
122     parent.removeChild(child);
123     XMLUtils.writeXML(child,System.out);
124   }
125 }
Popular Tags