private Property recreatePropertyFromGml( final PropertyType pt, final GenericXMLElement particle ) {
try {
final GMLSchemaInfoSet gmlSchema = ft.getSchema().getGMLSchema();
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
final XMLStreamWriter xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter( bos );
final GMLVersion version = ft.getSchema().getGMLSchema().getVersion();
final GMLStreamWriter gmlWriter = GMLOutputFactory.createGMLStreamWriter( version, xmlWriter );
gmlWriter.setNamespaceBindings( gmlSchema.getNamespacePrefixes() );
final GmlXlinkOptions resolveState = new GmlXlinkOptions();
gmlWriter.getFeatureWriter().export( particle, resolveState );
gmlWriter.close();
xmlWriter.close();
bos.close();
final InputStream is = new ByteArrayInputStream( bos.toByteArray() );
final XMLStreamReader xmlReader = XMLInputFactory.newInstance().createXMLStreamReader( is );
final GMLStreamReader gmlReader = GMLInputFactory.createGMLStreamReader( version, xmlReader );
gmlReader.setApplicationSchema( ft.getSchema() );
gmlReader.setLaxMode( true );
final Property property = gmlReader.getFeatureReader().parseProperty( new XMLStreamReaderWrapper(
xmlReader,
null ),
pt, null );
return property;
} catch ( final Exception e ) {
LOG.error( e.getMessage(), e );
}
return new GenericProperty( pt, particle.getName(), null, particle.getAttributes(), particle.getChildren() );
}