@Override public GMLObject getObject( String uri, String baseURL ) { if ( uri.startsWith( "#" ) ) { try { return fs.getObjectById( uri.substring( 1 ) ); } catch ( FeatureStoreException e ) { throw new ReferenceResolvingException( e.getMessage(), e ); } } throw new ReferenceResolvingException( "Resolving of remote references is not implemented yet." ); } }
@Override public Object getObject( String uri, String baseURL ) { if ( uri.startsWith( "#" ) ) { // OBJEKT-> keine REFERENZ! // CACHE return store.getCRSResource( uri.substring( 1 ), resourceType ); } throw new ReferenceResolvingException( "Deegree CRS Resolver does not support remote references." ); } }
/** * 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; }
/** * Resolves all local references that have been added before against the added objects. * * @throws ReferenceResolvingException * if a local reference cannot be resolved */ public void resolveLocalRefs() throws ReferenceResolvingException { for ( GMLReference<?> ref : localRefs ) { String id = ref.getURI().substring( 1 ); LOG.debug( "Resolving reference to object '" + id + "'" ); if ( ref.getReferencedObject() == null ) { String msg = "Cannot resolve reference to object with id '" + id + "'. There is no object with this id in the document."; throw new ReferenceResolvingException( msg ); } } }
private GMLObject fetchExternalGmlObject( String uri, String baseURL ) { GMLObject object = null; try { URL resolvedURL = null; if ( baseURL != null ) { resolvedURL = new URL( new URL( baseURL ), uri ); } else { resolvedURL = new URL( uri ); } GMLStreamReader gmlReader = createGMLStreamReader( version, resolvedURL ); gmlReader.setApplicationSchema( schema ); object = gmlReader.read(); gmlReader.close(); LOG.debug( "Read GML object: id='" + object.getId() + "'" ); } catch ( Throwable e ) { String msg = "Unable to resolve external object reference to '" + uri + "': " + e.getMessage(); throw new ReferenceResolvingException( msg ); } return object; }
private Feature resolveInternalFeature( ReferenceResolvingException e ) { String uri = getURI(); GMLObject object = this.internalResolver.getObject( uri, getBaseURL() ); if ( object != null ) { if ( object instanceof Feature ) { LOG.info( "Feature with uri {} could be resolved by the internal resolver.", uri ); resolve( (Feature) object ); this.internalResolved = true; return (Feature) object; } String msg = "Object with uri '" + uri + "' could be resolved from internal resolver but is no Feature instance."; throw exception = new ReferenceResolvingException( msg ); } throw e; }