01: /*
02: * <copyright>
03: *
04: * Copyright 2002-2004 BBNT Solutions, LLC
05: * under sponsorship of the Defense Advanced Research Projects
06: * Agency (DARPA).
07: *
08: * You can redistribute this software and/or modify it under the
09: * terms of the Cougaar Open Source License as published on the
10: * Cougaar Open Source Website (www.cougaar.org).
11: *
12: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: *
24: * </copyright>
25: */
26:
27: package org.cougaar.core.mts;
28:
29: import java.io.IOException;
30: import java.io.ObjectInput;
31: import java.io.ObjectOutput;
32: import java.net.URI;
33:
34: /**
35: * A {@link MessageAddress} containing a standard URI.
36: * <p>
37: * Typically {@link SimpleMessageAddress} is used for agent-to-agent
38: * communications, relying upon the naming service to resolve agent
39: * names to network addresses.
40: * <p>
41: * The URI must be directly interpretable by the message transport.
42: */
43: public class URIMessageAddress extends MessageAddress {
44: private URI uri;
45:
46: /** @return the MessageAddress as a URI */
47: public URI toURI() {
48: return uri;
49: }
50:
51: // public for externalizable use
52: public URIMessageAddress() {
53: }
54:
55: protected URIMessageAddress(URI uri) {
56: this .uri = uri;
57: }
58:
59: public final String toAddress() {
60: return uri.toString();
61: }
62:
63: public static URIMessageAddress getURIMessageAddress(URI uri) {
64: return new URIMessageAddress(uri);
65: }
66:
67: public boolean equals(URIMessageAddress ma) {
68: return uri.equals(ma.uri);
69: }
70:
71: public boolean equals(Object o) {
72: if (this == o)
73: return true;
74: if (o instanceof URIMessageAddress) {
75: return uri.equals(((URIMessageAddress) o).uri);
76: } else {
77: return false;
78: }
79: }
80:
81: public final int hashCode() {
82: return uri.hashCode();
83: }
84:
85: public void writeExternal(ObjectOutput out) throws IOException {
86: out.writeObject(uri);
87: }
88:
89: public void readExternal(ObjectInput in)
90: throws ClassNotFoundException, IOException {
91: uri = (URI) in.readObject();
92: }
93:
94: /*
95: protected Object readResolve() {
96: return cacheSimpleMessageAddress(this);
97: }
98: */
99: }
|