1:
37:
38:
39: package ;
40:
41: import ;
42: import ;
43: import ;
44:
45:
49: public class Reference implements Cloneable, Serializable
50: {
51: private static final long serialVersionUID = - 1673475790065791735L;
52:
53: public Reference (String className)
54: {
55: this.className = className;
56: addrs = new Vector ();
57: }
58:
59: public Reference (String className, RefAddr addr)
60: {
61: this.className = className;
62: addrs = new Vector ();
63: addrs.add (addr);
64: }
65:
66: public Reference (String className, String factory, String factoryLocation)
67: {
68: this.className = className;
69: this.classFactory = factory;
70: this.classFactoryLocation = factoryLocation;
71: addrs = new Vector ();
72: }
73:
74: public Reference (String className, RefAddr addr,
75: String factory, String factoryLocation)
76: {
77: this.className = className;
78: this.classFactory = factory;
79: this.classFactoryLocation = factoryLocation;
80: addrs = new Vector ();
81: addrs.add (addr);
82: }
83:
84: public void add (int posn, RefAddr addr)
85: {
86: addrs.add (posn, addr);
87: }
88:
89: public void add (RefAddr addr)
90: {
91: addrs.add (addr);
92: }
93:
94: public void clear ()
95: {
96: addrs.clear ();
97: }
98:
99: public Object clone ()
100: {
101: Reference r = new Reference (className, classFactory,
102: classFactoryLocation);
103: r.addrs = (Vector) addrs.clone ();
104: return r;
105: }
106:
107:
108: private boolean equals (String a, String b)
109: {
110: return (a == null) ? (b == null) : a.equals (b);
111: }
112:
113: public boolean equals (Object obj)
114: {
115: if (! (obj instanceof Reference))
116: return false;
117: Reference r = (Reference) obj;
118: return (equals (classFactory, r.classFactory)
119: && equals (classFactoryLocation, r.classFactoryLocation)
120: && equals (className, r.className)
121: && addrs.equals (r.addrs));
122: }
123:
124: public RefAddr get (int posn)
125: {
126: return (RefAddr) addrs.get (posn);
127: }
128:
129: public RefAddr get (String addrType)
130: {
131: for (int i = 0; i < addrs.size (); ++i)
132: {
133: RefAddr r = (RefAddr) addrs.get (i);
134: if (addrType.equals (r.getType ()))
135: return r;
136: }
137: return null;
138: }
139:
140: public Enumeration getAll ()
141: {
142: return addrs.elements ();
143: }
144:
145: public String getClassName ()
146: {
147: return className;
148: }
149:
150: public String getFactoryClassLocation ()
151: {
152: return classFactoryLocation;
153: }
154:
155: public String getFactoryClassName ()
156: {
157: return classFactory;
158: }
159:
160: public int hashCode ()
161: {
162:
163:
164: int h = 0;
165: for (int i = 0; i < addrs.size (); ++i)
166: h += addrs.get (i).hashCode ();
167: return h;
168: }
169:
170: public Object remove (int posn)
171: {
172: return addrs.remove (posn);
173: }
174:
175: public int size ()
176: {
177: return addrs.size ();
178: }
179:
180: public String toString ()
181: {
182: String x = getClass ().toString () + "[";
183: for (int i = 0; i < addrs.size (); ++i)
184: {
185: if (i > 0)
186: x += ",";
187: x += addrs.get (i).toString ();
188: }
189: return x + "]";
190: }
191:
192: protected Vector addrs;
193: protected String classFactory;
194: protected String classFactoryLocation;
195: protected String className;
196: }