public XMLElementNode( XPathNode<P> parentNode, org.deegree.commons.tom.ElementNode element ) { super( element.getName() ); this.parentNode = parentNode; this.element = element; }
private void fixReference( Reference<?> ref ) { if ( ref.isResolved() ) { ref.setURI( "#" + ref.getId() ); } }
private void updateResolveTimeOut( ResolveParams resolveParams ) { if ( resolveParams.getTimeout() == null && resolveTimeOutInSeconds != null ) resolveParams.setTimeout( resolveTimeOutInSeconds ); }
private static void exportResolveParameters( GetFeature getFeature, Map<String, String> kvp ) { ResolveParams resolveParams = getFeature.getResolveParams(); if ( resolveParams != null ) { ResolveMode resolveMode = resolveParams.getMode(); if ( resolveMode != null ) { kvp.put( "RESOLVE", resolveMode.name().toLowerCase() ); } String resolveDepth = getFeature.getResolveParams().getDepth(); if ( resolveDepth != null && !resolveDepth.equals( "" ) ) { kvp.put( "RESOLVEDEPTH", resolveDepth ); } BigInteger resolveTimeout = getFeature.getResolveParams().getTimeout(); if ( resolveTimeout != null ) { kvp.put( "RESOLVETIMEOUT", resolveTimeout.toString() ); } } }
/** * 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 ); } } }
@Override public int hashCode() { try { if ( getReferencedObject() != null ) { return getReferencedObject().hashCode(); } } catch ( ReferenceResolvingException e ) { LOG.debug( "CRSResource reference could not be resolved: {}", e.getLocalizedMessage() ); } return getURI().hashCode(); } }
@Override public String getId() { if ( object != null ) { return object.getId(); } if ( isLocal() ) { return uri.substring( 1 ); } return getReferencedObject().getId(); } }
@Override public boolean equals( java.lang.Object obj ) { if ( this == obj ) return true; if ( obj == null ) return false; T referencedObject = getReferencedObject(); try { if ( referencedObject != null ) { return referencedObject.equals( obj ); } } catch ( ReferenceResolvingException e ) { LOG.debug( "CRSResource reference could not be resolved: {}", e.getLocalizedMessage() ); } if ( obj instanceof Reference<?> ) { Reference<?> other = (Reference<?>) obj; if ( getURI() == null ) { if ( other.getURI() != null ) return false; } else if ( !getURI().equals( other.getURI() ) ) return false; } return getURI().equals( obj ); }
/** * 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; }
@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." ); } }
private void exportPointsAsProperties( final Points points ) throws XMLStreamException, UnknownCRSException, TransformationException { for ( final Point point : points ) { writer.writeStartElement( "gml", "pointProperty", gmlNs ); if ( point instanceof Reference<?> && !( (Reference<?>) point ).isLocal() ) { final Reference<?> ref = (Reference<?>) point; writeAttributeWithNS( XLNNS, "href", ref.getURI() ); } else if ( point.getId() != null && referenceExportStrategy.isObjectExported( point.getId() ) ) { writeAttributeWithNS( XLNNS, "href", "#" + point.getId() ); } else { export( point ); } writer.writeEndElement(); } }
/** * Creates a new {@link PropertyName} instance. * * @param propertyName * name of the targeted property, must not be <code>null</code> * @param resolveParams * parameters for controlling the resolution of references of the result set, may be <code>null</code> * @param resolvePath * ....may be <code>null</code> */ public PropertyName( ValueReference propertyName, ResolveParams resolveParams, ValueReference resolvePath ) { this.propertyName = propertyName; if ( resolveParams != null ) { this.resolveParams = resolveParams; } else { this.resolveParams = new ResolveParams( null, null, null ); } this.resolvePath = resolvePath; }
private boolean checkForReferencesOrIds( final Points points ) { boolean hasID = false; for ( final Point p : points ) { if ( p instanceof Reference<?> && !( (Reference<?>) p ).isLocal() ) { hasID = true; break; } else if ( p.getId() != null && p.getId().trim().length() > 0 ) { hasID = true; break; } } return hasID; }
private void traverseTypedObjectNode( TypedObjectNode node ) { if ( node instanceof GMLObject ) { traverse( (GMLObject) node ); } else if ( node instanceof ElementNode ) { ElementNode generic = (ElementNode) node; for ( TypedObjectNode child : generic.getChildren() ) { traverseTypedObjectNode( child ); } } }
@Override public boolean equals( Object obj ) { try { if ( getReferencedObject() != null ) { return getReferencedObject().equals( obj ); } } catch ( ReferenceResolvingException e ) { LOG.debug( "CRS reference could not be resolved: {}", e.getLocalizedMessage() ); } return getURI().equals( obj ); }
@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." ); } }
protected static ResolveParams parseStandardResolveParameters110( Map<String, String> kvpUC ) { // optional: 'TRAVERSEXLINKDEPTH' String traverseXlinkDepth = kvpUC.get( "TRAVERSEXLINKDEPTH" ); // optional: 'TRAVERSEXLINKEXPIRY' BigInteger resolveTimeout = null; BigInteger traverseXlinkExpiry = getBigInt( kvpUC, "TRAVERSEXLINKEXPIRY", null ); if ( traverseXlinkExpiry != null ) { resolveTimeout = BigInteger.valueOf( 60 ).multiply( traverseXlinkExpiry ); } return new ResolveParams( null, traverseXlinkDepth, resolveTimeout ); }
@Override public int hashCode() { try { if ( getReferencedObject() != null ) { return getReferencedObject().hashCode(); } } catch ( ReferenceResolvingException e ) { LOG.debug( "CRS reference could not be resolved: {}", e.getLocalizedMessage() ); } return getURI().hashCode(); }
/** * Creates a new {@link GetFeature} request. * * @param version * protocol version, must not be <code>null</code> * @param handle * client-generated identifier, may be <code>null</code> * @param presentationParams * parameters for controlling the presentation of the result set, may be <code>null</code> * @param resolveParams * parameters for controlling the resolution of references of the result set, may be <code>null</code> * @param queries * the queries to be performed in the request, must not be <code>null</code> and must contain at least * one entry */ public GetFeature( Version version, String handle, StandardPresentationParams presentationParams, ResolveParams resolveParams, List<Query> queries ) { super( version, handle ); if ( presentationParams != null ) { this.presentationParams = presentationParams; } else { this.presentationParams = new StandardPresentationParams( null, null, null, null ); } if ( resolveParams != null ) { this.resolveParams = resolveParams; } else { this.resolveParams = new ResolveParams( null, null, null ); } this.queries = queries; }
public ResolveParams parseStandardResolveParameters110( OMElement requestEl ) { String traverseXlinkDepth = getNodeAsString( rootElement, new XPath( "@traverseXlinkDepth", nsContext ), null ); String traverseXlinkExpiryStr = getNodeAsString( rootElement, new XPath( "@traverseXlinkExpiry", nsContext ), null ); BigInteger resolveTimeout = null; if ( traverseXlinkExpiryStr != null ) { resolveTimeout = new BigInteger( traverseXlinkExpiryStr ).multiply( BigInteger.valueOf( 60 ) ); } return new ResolveParams( null, traverseXlinkDepth, resolveTimeout ); }