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.Address;
21 import org.apache.juddi.datatype.AddressLine;
22 import org.apache.juddi.datatype.RegistryObject;
23 import org.apache.juddi.util.xml.XMLUtils;
24 import org.w3c.dom.Element;
25
26 /***
27 * "Knows about the creation and populating of Address objects.
28 * Returns Address."
29 *
30 * @author Steve Viens (sviens@apache.org)
31 */
32 public class AddressHandler extends AbstractHandler
33 {
34 public static final String TAG_NAME = "address";
35
36 private HandlerMaker maker = null;
37
38 protected AddressHandler(HandlerMaker maker)
39 {
40 this.maker = maker;
41 }
42
43 public RegistryObject unmarshal(Element element)
44 {
45 Address obj = new Address();
46 Vector nodeList = null;
47 AbstractHandler handler = null;
48
49
50 String useType = element.getAttribute("useType");
51 if ((useType != null) && (useType.trim().length() > 0))
52 obj.setUseType(useType);
53
54 String sortCode = element.getAttribute("sortCode");
55 if ((sortCode != null) && (sortCode.trim().length() > 0))
56 obj.setSortCode(sortCode);
57
58 String tModelKey = element.getAttribute("tModelKey");
59 if ((tModelKey != null) && (tModelKey.trim().length() > 0))
60 obj.setTModelKey(tModelKey);
61
62
63
64
65
66 handler = maker.lookup(AddressLineHandler.TAG_NAME);
67 nodeList = XMLUtils.getChildElementsByTagName(element,AddressLineHandler.TAG_NAME);
68 for (int i=0; i<nodeList.size(); i++)
69 {
70 obj.addAddressLine((AddressLine)handler.unmarshal((Element)nodeList.elementAt(i)));
71 }
72
73 return obj;
74 }
75
76 public void marshal(RegistryObject object,Element parent)
77 {
78 Address address = (Address)object;
79 String generic = getGeneric(null);
80 String namespace = getUDDINamespace(generic);
81 Element element = parent.getOwnerDocument().createElementNS(namespace,TAG_NAME);
82
83 String useType = address.getUseType();
84 if ((useType != null) && (useType.trim().length() > 0))
85 element.setAttribute("useType",useType);
86
87 String sortCode = address.getSortCode();
88 if ((sortCode != null) && (sortCode.trim().length() > 0))
89 element.setAttribute("sortCode",sortCode);
90
91 String tModelKey = address.getTModelKey();
92 if ((tModelKey != null) && (tModelKey.trim().length() > 0))
93 element.setAttribute("tModelKey",tModelKey);
94
95 Vector vector = address.getAddressLineVector();
96 if ((vector!=null) && (vector.size() > 0))
97 {
98 AbstractHandler handler = maker.lookup(AddressLineHandler.TAG_NAME);
99 for (int i=0; i < vector.size(); i++)
100 {
101 AddressLine addressLine = (AddressLine)vector.elementAt(i);
102 handler.marshal(addressLine,element);
103 }
104 }
105
106 parent.appendChild(element);
107 }
108
109
110 /****************************************************************************/
111 /****************************** TEST DRIVER *********************************/
112 /****************************************************************************/
113
114
115 public static void main(String args[])
116 throws Exception
117 {
118 HandlerMaker maker = HandlerMaker.getInstance();
119 AbstractHandler handler = maker.lookup(AddressHandler.TAG_NAME);
120 Element parent = XMLUtils.newRootElement();
121 Element child = null;
122
123 Address object = new Address();
124 object.setUseType("myAddressUseType");
125 object.setSortCode("sortThis");
126 object.setTModelKey(null);
127 object.addAddressLine(new AddressLine("AddressLine1","keyNameAttr","keyValueAttr"));
128 object.addAddressLine(new AddressLine("AddressLine2"));
129
130 System.out.println();
131
132 RegistryObject regObject = object;
133 handler.marshal(regObject,parent);
134 child = (Element)parent.getFirstChild();
135 parent.removeChild(child);
136 XMLUtils.writeXML(child,System.out);
137
138 System.out.println();
139
140 regObject = handler.unmarshal(child);
141 handler.marshal(regObject,parent);
142 child = (Element)parent.getFirstChild();
143 parent.removeChild(child);
144 XMLUtils.writeXML(child,System.out);
145
146 System.out.println();
147 }
148 }