diff --git a/engine/src/main/java/org/hibernate/search/bridge/spi/ConversionContext.java b/engine/src/main/java/org/hibernate/search/bridge/spi/ConversionContext.java index d3357a79341..f28e34f33f6 100644 --- a/engine/src/main/java/org/hibernate/search/bridge/spi/ConversionContext.java +++ b/engine/src/main/java/org/hibernate/search/bridge/spi/ConversionContext.java @@ -69,10 +69,10 @@ public interface ConversionContext { * All invocations to a push need to cleanup with a {@link #popProperty()}, * especially after exceptions. * - * @param property the property which is being followed for embedded indexing + * @param propertyName the name of the property which is being followed for embedded indexing * @return this for method chaining. */ - ConversionContext pushProperty(String property); + ConversionContext pushProperty(String propertyName); /** * Pops the last pushed property from the stack. See {@link #pushIdentifierProperty()} diff --git a/engine/src/main/java/org/hibernate/search/bridge/util/impl/ContextualExceptionBridgeHelper.java b/engine/src/main/java/org/hibernate/search/bridge/util/impl/ContextualExceptionBridgeHelper.java index cff6f4f6398..f4000f08446 100644 --- a/engine/src/main/java/org/hibernate/search/bridge/util/impl/ContextualExceptionBridgeHelper.java +++ b/engine/src/main/java/org/hibernate/search/bridge/util/impl/ContextualExceptionBridgeHelper.java @@ -49,8 +49,8 @@ public ConversionContext setClass(Class clazz) { } @Override - public ConversionContext pushProperty(String property) { - path.add( property ); + public ConversionContext pushProperty(String propertyName) { + path.add( propertyName ); return this; } diff --git a/engine/src/main/java/org/hibernate/search/engine/impl/DocumentBuilderHelper.java b/engine/src/main/java/org/hibernate/search/engine/impl/DocumentBuilderHelper.java index a4d2f683f46..0c6b21ab5f3 100644 --- a/engine/src/main/java/org/hibernate/search/engine/impl/DocumentBuilderHelper.java +++ b/engine/src/main/java/org/hibernate/search/engine/impl/DocumentBuilderHelper.java @@ -165,7 +165,7 @@ private static void processMetadataRecursivelyForProjections(TypeMetadata typeMe final String fieldName = fieldMetadata.getAbsoluteName(); int matchingPosition = getFieldPosition( fields, fieldName ); if ( matchingPosition != -1 && result[matchingPosition] == NOT_SET ) { - contextualBridge.pushProperty( fieldName ); + contextualBridge.pushProperty( propertyMetadata.getPropertyAccessorName() ); try { populateResult( fieldName, diff --git a/engine/src/main/java/org/hibernate/search/engine/spi/DocumentBuilderIndexedEntity.java b/engine/src/main/java/org/hibernate/search/engine/spi/DocumentBuilderIndexedEntity.java index 615d8fda2d1..02e883bd1c6 100644 --- a/engine/src/main/java/org/hibernate/search/engine/spi/DocumentBuilderIndexedEntity.java +++ b/engine/src/main/java/org/hibernate/search/engine/spi/DocumentBuilderIndexedEntity.java @@ -367,14 +367,19 @@ public Document getDocument( LuceneOptions luceneOptions = new LuceneOptionsImpl( idFieldMetaData, idFieldMetaData.getBoost(), documentLevelBoost ); final FieldBridge contextualizedBridge = conversionContext.oneWayConversionContext( getIdBridge() ); conversionContext.setClass( entityType ); - conversionContext.pushProperty( idFieldMetaData.getAbsoluteName() ); + + if ( idPropertyName != null ) { + conversionContext.pushProperty( idPropertyName ); + } try { contextualizedBridge.set( idFieldMetaData.getAbsoluteName(), id, doc, luceneOptions ); addSortFieldDocValues( doc, idPropertyMetadata, documentLevelBoost, id ); } finally { - conversionContext.popProperty(); + if ( idPropertyName != null ) { + conversionContext.popProperty(); + } } } @@ -853,18 +858,12 @@ private void buildDocumentFieldForClassBridges(Document doc, FieldBridge fieldBridge = fieldMetadata.getFieldBridge(); final String fieldName = fieldMetadata.getAbsoluteName(); final FieldBridge oneWayConversionContext = conversionContext.oneWayConversionContext( fieldBridge ); - conversionContext.pushProperty( fieldName ); - try { - oneWayConversionContext.set( - fieldName, - unproxiedInstance, - doc, - typeMetadata.getClassLuceneOptions( fieldMetadata, documentBoost ) - ); - } - finally { - conversionContext.popProperty(); - } + oneWayConversionContext.set( + fieldName, + unproxiedInstance, + doc, + typeMetadata.getClassLuceneOptions( fieldMetadata, documentBoost ) + ); } } diff --git a/orm/src/main/java/org/hibernate/search/batchindexing/impl/IdentifierConsumerDocumentProducer.java b/orm/src/main/java/org/hibernate/search/batchindexing/impl/IdentifierConsumerDocumentProducer.java index 7afcf5a691e..51bce83f2bf 100644 --- a/orm/src/main/java/org/hibernate/search/batchindexing/impl/IdentifierConsumerDocumentProducer.java +++ b/orm/src/main/java/org/hibernate/search/batchindexing/impl/IdentifierConsumerDocumentProducer.java @@ -267,7 +267,10 @@ private void index(Object entity, Session session, InstanceInitializer sessionIn DocumentBuilderIndexedEntity docBuilder = entityIndexBinding.getDocumentBuilder(); TwoWayFieldBridge idBridge = docBuilder.getIdBridge(); - conversionContext.pushProperty( docBuilder.getIdFieldName() ); + String idPropertyName = docBuilder.getIdPropertyName(); + if ( idPropertyName != null ) { + conversionContext.pushProperty( idPropertyName ); + } String idInString = null; try { idInString = conversionContext @@ -276,7 +279,9 @@ private void index(Object entity, Session session, InstanceInitializer sessionIn .objectToString( id ); } finally { - conversionContext.popProperty(); + if ( idPropertyName != null ) { + conversionContext.popProperty(); + } } //depending on the complexity of the object graph going to be indexed it's possible //that we hit the database several times during work construction. diff --git a/orm/src/test/java/org/hibernate/search/test/bridge/BridgeConversionErrorTest.java b/orm/src/test/java/org/hibernate/search/test/bridge/BridgeConversionErrorTest.java index 30294874c25..6f139bb695a 100644 --- a/orm/src/test/java/org/hibernate/search/test/bridge/BridgeConversionErrorTest.java +++ b/orm/src/test/java/org/hibernate/search/test/bridge/BridgeConversionErrorTest.java @@ -52,8 +52,7 @@ public void testClassBridgeError() throws Exception { Throwable cause = e.getCause(); assertTrue( cause instanceof BridgeException ); String expectedErrorMessage = "Exception while calling bridge#set\n" + - "\tclass: org.hibernate.search.test.bridge.BridgeConversionErrorTest$ClassBridged\n" + - "\tpath: test"; + "\tclass: org.hibernate.search.test.bridge.BridgeConversionErrorTest$ClassBridged"; assertEquals( "Wrong error message", expectedErrorMessage, cause.getMessage() ); } }