diff --git a/mapper/javabean/src/main/java/org/hibernate/search/mapper/javabean/work/impl/SearchIndexingPlanImpl.java b/mapper/javabean/src/main/java/org/hibernate/search/mapper/javabean/work/impl/SearchIndexingPlanImpl.java index 79c4357aa50..881923187ad 100644 --- a/mapper/javabean/src/main/java/org/hibernate/search/mapper/javabean/work/impl/SearchIndexingPlanImpl.java +++ b/mapper/javabean/src/main/java/org/hibernate/search/mapper/javabean/work/impl/SearchIndexingPlanImpl.java @@ -65,7 +65,8 @@ public void delete(Object entity) { @Override public void delete(Object providedId, Object entity) { - delegate.delete( getTypeIdentifier( entity ), providedId, entity ); + // TODO HSEARCH-3891 expose the providedRoutingKey + delegate.delete( getTypeIdentifier( entity ), providedId, null, entity ); } @Override diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/event/impl/HibernateSearchEventListener.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/event/impl/HibernateSearchEventListener.java index 68c68b892d3..75e8e744f6f 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/event/impl/HibernateSearchEventListener.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/event/impl/HibernateSearchEventListener.java @@ -78,7 +78,7 @@ public void onPostDelete(PostDeleteEvent event) { // TODO Check whether deletes work with hibernate.use_identifier_rollback enabled (see HSEARCH-650) // I think they should, but better safe than sorry getCurrentIndexingPlan( contextProvider, event.getSession() ) - .delete( typeContext.typeIdentifier(), providedId, entity ); + .delete( typeContext.typeIdentifier(), providedId, null, entity ); } } diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/work/impl/SearchIndexingPlanImpl.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/work/impl/SearchIndexingPlanImpl.java index 25901dd5d17..185d859eb77 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/work/impl/SearchIndexingPlanImpl.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/work/impl/SearchIndexingPlanImpl.java @@ -31,7 +31,7 @@ public void addOrUpdate(Object entity) { @Override public void delete(Object entity) { sessionContext.currentIndexingPlan( true ) - .delete( getTypeIdentifier( entity ), null, entity ); + .delete( getTypeIdentifier( entity ), null, null, entity ); } @Override diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/AbstractPojoTypeIndexingPlan.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/AbstractPojoTypeIndexingPlan.java index e7115910db5..c82f15811d7 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/AbstractPojoTypeIndexingPlan.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/AbstractPojoTypeIndexingPlan.java @@ -22,7 +22,7 @@ abstract class AbstractPojoTypeIndexingPlan { abstract void update(Object providedId, String providedRoutingKey, Object entity, String... dirtyPaths); - abstract void delete(Object providedId, Object entity); + abstract void delete(Object providedId, String providedRoutingKey, Object entity); abstract void purge(Object providedId, String providedRoutingKey); diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoContainedTypeIndexingPlan.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoContainedTypeIndexingPlan.java index 1c9e90d309a..6c0fb058f6e 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoContainedTypeIndexingPlan.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoContainedTypeIndexingPlan.java @@ -55,7 +55,7 @@ void update(Object providedId, String providedRoutingKey, Object entity, String. } @Override - void delete(Object providedId, Object entity) { + void delete(Object providedId, String providedRoutingKey, Object entity) { Supplier entitySupplier = typeContext.toEntitySupplier( sessionContext, entity ); getPlan( providedId ).delete( entitySupplier ); } diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoIndexedTypeIndexingPlan.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoIndexedTypeIndexingPlan.java index 431146e8e61..803beb2601d 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoIndexedTypeIndexingPlan.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoIndexedTypeIndexingPlan.java @@ -64,10 +64,10 @@ void update(Object providedId, String providedRoutingKey, Object entity, String. } @Override - void delete(Object providedId, Object entity) { + void delete(Object providedId, String providedRoutingKey, Object entity) { Supplier entitySupplier = typeContext.toEntitySupplier( sessionContext, entity ); I identifier = typeContext.getIdentifierMapping().getIdentifier( providedId, entitySupplier ); - getPlan( identifier ).delete( entitySupplier ); + getPlan( identifier ).delete( entitySupplier, providedRoutingKey ); } @Override @@ -189,9 +189,9 @@ void updateBecauseOfContained(Supplier entitySupplier) { */ } - void delete(Supplier entitySupplier) { + void delete(Supplier entitySupplier, String providedRoutingKey) { this.entitySupplier = entitySupplier; - providedRoutingKey = null; + this.providedRoutingKey = providedRoutingKey; if ( add && !delete ) { /* * We called add() in the same plan, so we don't expect the document to be in the index. diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoIndexingPlanImpl.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoIndexingPlanImpl.java index e45f802a656..942a2231fc5 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoIndexingPlanImpl.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/impl/PojoIndexingPlanImpl.java @@ -74,9 +74,9 @@ public void addOrUpdate(PojoRawTypeIdentifier typeIdentifier, Object provided } @Override - public void delete(PojoRawTypeIdentifier typeIdentifier, Object providedId, Object entity) { + public void delete(PojoRawTypeIdentifier typeIdentifier, Object providedId, String providedRoutingKey, Object entity) { AbstractPojoTypeIndexingPlan delegate = getDelegate( typeIdentifier ); - delegate.delete( providedId, entity ); + delegate.delete( providedId, providedRoutingKey, entity ); } @Override diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/spi/PojoIndexingPlan.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/spi/PojoIndexingPlan.java index 156f8f47ea8..c40eea0c0f6 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/spi/PojoIndexingPlan.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/work/spi/PojoIndexingPlan.java @@ -89,9 +89,12 @@ public interface PojoIndexingPlan { * @param providedId A value to extract the document ID from. * Generally the expected value is the entity ID, but a different value may be expected depending on the mapping. * If {@code null}, Hibernate Search will attempt to extract the ID from the entity. + * @param providedRoutingKey The routing key to route the delete request to the appropriate index shard. + * Leave {@code null} if sharding is disabled + * or to have Hibernate Search compute the value through the assigned {@link org.hibernate.search.mapper.pojo.bridge.RoutingKeyBridge}. * @param entity The entity to delete from the index. */ - void delete(PojoRawTypeIdentifier typeIdentifier, Object providedId, Object entity); + void delete(PojoRawTypeIdentifier typeIdentifier, Object providedId, String providedRoutingKey, Object entity); /** * Purge an entity from the index.