blob: 830808189768d7ce122a4e7f3950626992546eac [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package javax.naming;
import java.io.Serializable;
/**
* This is an abstract class describing the address of an object which is
* outside of a naming system.
* It contains an address type and the address itself is dealt with by its
* subclasses, for example, <code>BinaryRefAddr</code> and <code>StringRefAddr
* </code>.
*
* @see BinaryRefAddr
* @see StringRefAddr
*/
public abstract class RefAddr implements Serializable {
/*
* -------------------------------------------------------------------
* Constants
* -------------------------------------------------------------------
*/
/*
* This constant is used during deserialization to check the J2SE version
* which created the serialized object.
*/
static final long serialVersionUID = -1468165120479154358L; //J2SE 1.4.2
/*
* -------------------------------------------------------------------
* Instance variables
* -------------------------------------------------------------------
*/
/**
* The type of the address.
*
* @serial
*/
protected String addrType;
/*
* -------------------------------------------------------------------
* Constructors
* -------------------------------------------------------------------
*/
/**
* Constructs a <code>RefAddr</code> instance using the supplied address
* type.
*
* @param type the address type which may be null
*/
protected RefAddr(String type) {
this.addrType = type;
}
/*
* -------------------------------------------------------------------
* Methods
* -------------------------------------------------------------------
*/
/**
* Gets the type of this address.
*
* @return the type of this address which cannot be null
*/
public String getType() {
return addrType;
}
/**
* Gets the address itself which may be null.
* Each subclass of <code>RefAddr</code> describes the format of the
* returned address.
*
* @return the address itself
*/
public abstract Object getContent();
/*
* -------------------------------------------------------------------
* Methods override parent class Object
* -------------------------------------------------------------------
*/
/**
* Returns true if this address is equal to the supplied object
* <code>o</code>.
* They are considered equal if the address types are equal and the address
* contents are equivalent.
* *
* @param o the object to compare with
* @return true if this address is equal to <code>o</code>,
* otherwise false
*/
@Override
public boolean equals(Object o) {
if (o instanceof RefAddr) {
RefAddr a = (RefAddr) o;
return this.addrType.equals(a.addrType)
&& (null == this.getContent()
? null == a.getContent()
: this.getContent().equals(a.getContent()));
}
return false;
}
/**
* Returns the hashcode for this address.
* The result is the sum of the hashcode of its address type and address.
*
* @return the hashcode of this address
*/
@Override
public int hashCode() {
return this.addrType.hashCode()
+ (null == this.getContent() ? 0 : this.getContent().hashCode());
}
/**
* Returns the string representation of this address.
* This contains the string representations of the address type and the
* address.
*
* @return the string representation of this address
*/
@Override
public String toString() {
return "The type of the address is: " //$NON-NLS-1$
+ this.addrType
+ "\nThe content of the address is: " //$NON-NLS-1$
+ (null == this.getContent() ? "null" : this.getContent().toString()) //$NON-NLS-1$
+ "\n"; //$NON-NLS-1$
}
}