public synchronized T acquire(final DataSource source)
        throws DataSourceException
    {
        if (object == null) {
            if (getReference() == null) {
                throw new IllegalStateException("No reference or object present");
            } else {
                object = source.getObject(getReference(), objectClass);
            }
        }
        return object;
    }
public synchronized T acquire ( final DataSource source ) throws DataSourceException { if ( object == null ) { if ( getReference ( ) == null ) { throw new IllegalStateException ( "No reference or object present" ) ; } else { object = source . getObject ( getReference ( ) , objectClass ) ; } } return object ; }
Return the referenced object, potentially performing a remote DataStore lookup and deserialisation. If the object is already
present or has been previously acquired, it is immediately returned.

@param source the implementation that provides object instances given the provided references
@return the object that this container is wrapping
@throws DataSourceException if the object cannot be acquired
@throws IllegalStateException if there is no object or reference present