diff --git a/deegree-datastores/deegree-featurestores/deegree-featurestore-commons/src/main/java/org/deegree/feature/persistence/FeatureStoreTransaction.java b/deegree-datastores/deegree-featurestores/deegree-featurestore-commons/src/main/java/org/deegree/feature/persistence/FeatureStoreTransaction.java index 407b4493aea..83315dec403 100644 --- a/deegree-datastores/deegree-featurestores/deegree-featurestore-commons/src/main/java/org/deegree/feature/persistence/FeatureStoreTransaction.java +++ b/deegree-datastores/deegree-featurestores/deegree-featurestore-commons/src/main/java/org/deegree/feature/persistence/FeatureStoreTransaction.java @@ -138,7 +138,7 @@ public List performUpdate( QName ftName, List * @throws FeatureStoreException * if the replace fails */ - public String performReplace( Feature replacement, Filter filter, Lock lock, IDGenMode idGenMode ) + public List performReplace( Feature replacement, Filter filter, Lock lock, IDGenMode idGenMode ) throws FeatureStoreException; /** diff --git a/deegree-datastores/deegree-featurestores/deegree-featurestore-memory/src/main/java/org/deegree/feature/persistence/memory/MemoryFeatureStoreTransaction.java b/deegree-datastores/deegree-featurestores/deegree-featurestore-memory/src/main/java/org/deegree/feature/persistence/memory/MemoryFeatureStoreTransaction.java index 3d7d7265955..77309ecd68d 100644 --- a/deegree-datastores/deegree-featurestores/deegree-featurestore-memory/src/main/java/org/deegree/feature/persistence/memory/MemoryFeatureStoreTransaction.java +++ b/deegree-datastores/deegree-featurestores/deegree-featurestore-memory/src/main/java/org/deegree/feature/persistence/memory/MemoryFeatureStoreTransaction.java @@ -561,7 +561,7 @@ public List performUpdate( QName ftName, List } @Override - public String performReplace( Feature replacement, Filter filter, Lock lock, IDGenMode idGenMode ) + public List performReplace( Feature replacement, Filter filter, Lock lock, IDGenMode idGenMode ) throws FeatureStoreException { if ( filter instanceof IdFilter ) { performDelete( (IdFilter) filter, lock ); @@ -571,10 +571,10 @@ public String performReplace( Feature replacement, Filter filter, Lock lock, IDG GenericFeatureCollection col = new GenericFeatureCollection(); col.add( replacement ); List ids = performInsert( col, USE_EXISTING ); - if ( ids.isEmpty() || ids.size() > 1 ) { + if ( ids.isEmpty()) { throw new FeatureStoreException( "Unable to determine new feature id." ); } - return ids.get( 0 ); + return ids; } @Override diff --git a/deegree-datastores/deegree-featurestores/deegree-featurestore-sql/src/main/java/org/deegree/feature/persistence/sql/SQLFeatureStoreTransaction.java b/deegree-datastores/deegree-featurestores/deegree-featurestore-sql/src/main/java/org/deegree/feature/persistence/sql/SQLFeatureStoreTransaction.java index 69cdb774cfc..3b5e455ab9c 100644 --- a/deegree-datastores/deegree-featurestores/deegree-featurestore-sql/src/main/java/org/deegree/feature/persistence/sql/SQLFeatureStoreTransaction.java +++ b/deegree-datastores/deegree-featurestores/deegree-featurestore-sql/src/main/java/org/deegree/feature/persistence/sql/SQLFeatureStoreTransaction.java @@ -1076,7 +1076,7 @@ private void checkIfFeaturesAreNotLocked( IdFilter filter, Lock lock ) } @Override - public String performReplace( final Feature replacement, final Filter filter, final Lock lock, + public List performReplace( final Feature replacement, final Filter filter, final Lock lock, final IDGenMode idGenMode ) throws FeatureStoreException { if ( filter instanceof IdFilter ) { @@ -1087,10 +1087,10 @@ public String performReplace( final Feature replacement, final Filter filter, fi final GenericFeatureCollection col = new GenericFeatureCollection(); col.add( replacement ); final List ids = performInsert( col, USE_EXISTING ); - if ( ids.isEmpty() || ids.size() > 1 ) { + if ( ids.isEmpty()) { throw new FeatureStoreException( "Unable to determine new feature id." ); } - return ids.get( 0 ); + return ids; } } \ No newline at end of file diff --git a/deegree-services/deegree-services-wfs/src/main/java/org/deegree/services/wfs/TransactionHandler.java b/deegree-services/deegree-services-wfs/src/main/java/org/deegree/services/wfs/TransactionHandler.java index 108ab64285d..f57e0a42b14 100644 --- a/deegree-services/deegree-services-wfs/src/main/java/org/deegree/services/wfs/TransactionHandler.java +++ b/deegree-services/deegree-services-wfs/src/main/java/org/deegree/services/wfs/TransactionHandler.java @@ -694,8 +694,10 @@ private void doReplace( Replace replace, Lock lock ) FeatureStoreTransaction ta = acquireTransaction( fs ); try { - String newFid = ta.performReplace( replacementFeature, filter, lock, idGenMode ); - replaced.add( newFid, replace.getHandle() ); + List newFids = ta.performReplace( replacementFeature, filter, lock, idGenMode ); + for (String newFid : newFids){ + replaced.add( newFid, replace.getHandle() ); + } } catch ( FeatureStoreException e ) { throw new OWSException( "Error performing replace: " + e.getMessage(), e, NO_APPLICABLE_CODE ); }