/*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package javax.naming;
/**
* This class represents the address of a communications end-point.
* It consists of a type that describes the communication mechanism
* and an address contents determined by an RefAddr subclass.
*<p>
* For example, an address type could be "BSD Printer Address",
* which specifies that it is an address to be used with the BSD printing
* protocol. Its contents could be the machine name identifying the
* location of the printer server that understands this protocol.
*<p>
* A RefAddr is contained within a Reference.
*<p>
* RefAddr is an abstract class. Concrete implementations of it
* determine its synchronization properties.
*
* @author Rosanna Lee
* @author Scott Seligman
*
* @see Reference
* @see LinkRef
* @see StringRefAddr
* @see BinaryRefAddr
* @since 1.3
*/
/*<p>
* The serialized form of a RefAddr object consists of only its type name
* String.
*/
public abstract class
RefAddr implements java.io.
Serializable {
/**
* Contains the type of this address.
* @serial
*/
protected
String addrType;
/**
* Constructs a new instance of RefAddr using its address type.
*
* @param addrType A non-null string describing the type of the address.
*/
protected
RefAddr(
String addrType) {
this.
addrType =
addrType;
}
/**
* Retrieves the address type of this address.
*
* @return The non-null address type of this address.
*/
public
String getType() {
return
addrType;
}
/**
* Retrieves the contents of this address.
*
* @return The possibly null address contents.
*/
public abstract
Object getContent();
/**
* Determines whether obj is equal to this RefAddr.
*<p>
* obj is equal to this RefAddr all of these conditions are true
*<ul>
*<li> non-null
*<li> instance of RefAddr
*<li> obj has the same address type as this RefAddr (using String.compareTo())
*<li> both obj and this RefAddr's contents are null or they are equal
* (using the equals() test).
*</ul>
* @param obj possibly null obj to check.
* @return true if obj is equal to this refaddr; false otherwise.
* @see #getContent
* @see #getType
*/
public boolean
equals(
Object obj) {
if ((
obj != null) && (
obj instanceof
RefAddr)) {
RefAddr target = (
RefAddr)
obj;
if (
addrType.
compareTo(
target.
addrType) == 0) {
Object thisobj = this.
getContent();
Object thatobj =
target.
getContent();
if (
thisobj ==
thatobj)
return true;
if (
thisobj != null)
return
thisobj.
equals(
thatobj);
}
}
return false;
}
/**
* Computes the hash code of this address using its address type and contents.
* The hash code is the sum of the hash code of the address type and
* the hash code of the address contents.
*
* @return The hash code of this address as an int.
* @see java.lang.Object#hashCode
*/
public int
hashCode() {
return (
getContent() == null)
?
addrType.
hashCode()
:
addrType.
hashCode() +
getContent().
hashCode();
}
/**
* Generates the string representation of this address.
* The string consists of the address's type and contents with labels.
* This representation is intended for display only and not to be parsed.
* @return The non-null string representation of this address.
*/
public
String toString(){
StringBuffer str = new
StringBuffer("Type: " +
addrType + "\n");
str.
append("Content: " +
getContent() + "\n");
return (
str.
toString());
}
/**
* Use serialVersionUID from JNDI 1.1.1 for interoperability
*/
private static final long
serialVersionUID = -1468165120479154358L;
}