@Override public String handleReference( GMLReference<?> ref ) { if ( localReferencesPossible ) { LOG.debug( "Exporting potential forward reference to object {} which may or may not be exported later.", ref.getId() ); // try { // xmlStream.activateBuffering(); // } catch ( XMLStreamException e ) { // throw new RuntimeException( e.getMessage(), e ); // } return "{" + ref.getId() + "}"; } LOG.debug( "Exporting reference to object {} as remote reference.", ref.getId() ); return remoteXlinkTemplate.replace( "{}", ref.getId() ); }
@Override public String requireObject( GMLReference<?> ref, GmlXlinkOptions resolveState ) { if ( ref.isLocal() ) { return remoteXlinkTemplate.replace( "{}", ref.getId() ); } return ref.getURI(); }
@Override public String handleReference( GMLReference<?> ref ) { if ( ref.isLocal() ) { return remoteXlinkTemplate.replace( "{}", ref.getId() ); } return ref.getURI(); }
@Override public String handleReference( GMLReference<?> ref ) { String uri = ref.getURI(); LOG.debug( "Encountered reference to object {}.", uri ); if ( !isGmlIdBasedUri( uri ) ) { LOG.debug( "Reference to object {} considered non-rewritable.", uri ); return uri; } if ( localReferencesPossible ) { LOG.debug( "Exporting potential forward reference to object {} which may or may not be exported later.", ref.getURI() ); try { xmlStream.activateBuffering(); } catch ( XMLStreamException e ) { throw new RuntimeException( e.getMessage(), e ); } return "{" + ref.getId() + "}"; } LOG.debug( "Exporting reference to object {} as remote reference.", ref.getId() ); return remoteXlinkTemplate.replace( "{}", ref.getId() ); }
protected void writeAdditionalObjects( GMLStreamWriter gmlStream, WfsXlinkStrategy additionalObjects, QName featureMemberEl, Version requestVersion ) throws XMLStreamException, UnknownCRSException, TransformationException { Collection<GMLReference<?>> nextLevelObjects = additionalObjects.getAdditionalRefs(); XMLStreamWriter xmlStream = gmlStream.getXMLStream(); boolean wroteStartSection = false; while ( !nextLevelObjects.isEmpty() ) { Map<GMLReference<?>, GmlXlinkOptions> refToResolveState = additionalObjects.getResolveStates(); additionalObjects.clear(); for ( GMLReference<?> ref : nextLevelObjects ) { if ( isResolvable( ref ) && !isObjectAlreadySerialized( gmlStream, ref.getId() ) ) { GmlXlinkOptions resolveState = refToResolveState.get( ref ); Feature feature = (Feature) ref; if ( !wroteStartSection ) { writeAdditionalObjectsStart( xmlStream, requestVersion ); wroteStartSection = true; } writeMemberFeature( feature, gmlStream, xmlStream, resolveState, featureMemberEl ); } } nextLevelObjects = additionalObjects.getAdditionalRefs(); } if ( wroteStartSection ) { writeAdditionalObjectsEnd( xmlStream, requestVersion ); } }