# Class LinkRef

java.lang.Object
javax.naming.Reference
javax.naming.LinkRef

All Implemented Interfaces:
  `Serializable, Cloneable`

public class LinkRef extends Reference
This class represents a Reference whose contents is a name, called the link name, that is bound to an atomic name in a context.

The name is a URL, or a name to be resolved relative to the initial context, or if the first character of the name is ".", the name is relative to the context in which the link is bound.

Normal resolution of names in context operations always follow links. Resolution of the link name itself may cause resolution to pass through other links. This gives rise to the possibility of a cycle of links whose resolution could not terminate normally. As a simple means to avoid such non-terminating resolutions, service providers may define limits on the number of links that may be involved in any single operation invoked by the caller.

A LinkRef contains a single StringRefAddr, whose type is "LinkAddress", and whose contents is the link name. The class name field of the Reference is that of this (LinkRef) class.

LinkRef is bound to a name using the normal Context.bind()/rebind(), and DirContext.bind()/rebind(). Context.lookupLink() is used to retrieve the link itself if the terminal atomic name is bound to a link.

Many naming systems support a native notion of link that may be used within the naming system itself. JNDI does not specify whether there is any relationship between such native links and JNDI links.

A LinkRef instance is not synchronized against concurrent access by multiple threads. Threads that need to access a LinkRef instance concurrently should synchronize amongst themselves and provide the necessary locking.

Since:
  1.3
See Also:
  - `LinkException`
  - `LinkLoopException`
  - `MalformedLinkException`
  - `Context.lookupLink(Name)`
  - Serialized Form

## Field Summary

### Fields declared in class Reference

`addrs, classFactory, classFactoryLocation, className`
Modifier and Type
Field
Description
`protected Vector<RefAddr>`
`addrs`
Contains the addresses contained in this Reference.
`protected String`
`classFactory`
Contains the name of the factory class for creating an instance of the object to which this Reference refers.
`protected String`
`classFactoryLocation`
Contains the location of the factory class.
`protected String`
`className`
Contains the fully-qualified name of the class of the object to which this Reference refers.

## Constructor Summary

Constructors
Constructor
Description
`LinkRef(String linkName)`
Constructs a LinkRef for a string name.
`LinkRef(Name linkName)`
Constructs a LinkRef for a name.

## Method Summary

Modifier and Type
Method
Description
`String`
`getLinkName()`
Retrieves the name of this link.

### Methods declared in class Reference

`add, add, clear, clone, equals, get, get, getAll, getClassName, getFactoryClassLocation, getFactoryClassName, hashCode, remove, size, toString`
Modifier and Type
Method
Description
`void`
`add(int posn, RefAddr addr)`
Adds an address to the list of addresses at index posn.
`void`
`add(RefAddr addr)`
Adds an address to the end of the list of addresses.
`void`
`clear()`
Deletes all addresses from this reference.
`Object`
`clone()`
Makes a copy of this reference using its class name list of addresses, class factory name and class factory location.
`boolean`
`equals(Object obj)`
Determines whether obj is a reference with the same addresses (in same order) as this reference.
`RefAddr`
`get(int posn)`
Retrieves the address at index posn.
`RefAddr`
`get(String addrType)`
Retrieves the first address that has the address type 'addrType'.
`Enumeration<RefAddr>`
`getAll()`
Retrieves an enumeration of the addresses in this reference.
`String`
`getClassName()`
Retrieves the class name of the object to which this reference refers.
`String`
`getFactoryClassLocation()`
Retrieves the location of the factory of the object to which this reference refers.
`String`
`getFactoryClassName()`
Retrieves the class name of the factory of the object to which this reference refers.
`int`
`hashCode()`
Computes the hash code of this reference.
`Object`
`remove(int posn)`
Deletes the address at index posn from the list of addresses.
`int`
`size()`
Retrieves the number of addresses in this reference.
`String`
`toString()`
Generates the string representation of this reference.

### Methods declared in class Object

`finalize, getClass, notify, notifyAll, wait, wait, wait`
Modifier and Type
Method
Description
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## Constructor Details

### LinkRef

public LinkRef(Name linkName)
Constructs a LinkRef for a name.

Parameters:
  `linkName` - The non-null name for which to create this link.

### LinkRef

public LinkRef(String linkName)
Constructs a LinkRef for a string name.

Parameters:
  `linkName` - The non-null name for which to create this link.

## Method Details

### getLinkName

public String getLinkName() throws NamingException
Retrieves the name of this link.

Returns:
  The non-null name of this link.
Throws:
  `MalformedLinkException` - If a link name could not be extracted
  `NamingException` - If a naming exception was encountered.