/** * Returns the referenced {@link Object} instance (may trigger resolving and fetching it). * * @return the referenced {@link Object} instance * @throws ReferenceResolvingException * if the reference cannot be resolved */ @SuppressWarnings("unchecked") public synchronized T getReferencedObject() throws ReferenceResolvingException { if ( exception != null ) { throw exception; } if ( object == null ) { try { object = (T) resolver.getObject( uri, baseURL ); } catch ( ReferenceResolvingException e ) { throw exception = e; } if ( object == null ) { String msg = "Unable to resolve reference to '" + uri + "'."; throw exception = new ReferenceResolvingException( msg ); } } return object; }