Skip to content

Commit 093ea19

Browse files
committed
HSEARCH-5018 Add hints to failing Jandex discovery error message
1 parent 8395be4 commit 093ea19

File tree

8 files changed

+105
-9
lines changed

8 files changed

+105
-9
lines changed

mapper/orm/src/main/java/org/hibernate/search/mapper/orm/mapping/impl/HibernateOrmMappingInitiator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.hibernate.search.mapper.orm.mapping.HibernateOrmSearchMappingConfigurer;
3333
import org.hibernate.search.mapper.orm.model.impl.HibernateOrmBasicTypeMetadataProvider;
3434
import org.hibernate.search.mapper.orm.model.impl.HibernateOrmBootstrapIntrospector;
35+
import org.hibernate.search.mapper.orm.reporting.impl.HibernateOrmMapperHints;
3536
import org.hibernate.search.mapper.orm.session.impl.ConfiguredAutomaticIndexingStrategy;
3637
import org.hibernate.search.mapper.pojo.mapping.building.spi.PojoMapperDelegate;
3738
import org.hibernate.search.mapper.pojo.mapping.building.spi.PojoTypeMetadataContributor;
@@ -101,7 +102,7 @@ private HibernateOrmMappingInitiator(
101102
HibernateOrmBasicTypeMetadataProvider basicTypeMetadataProvider,
102103
IndexView jandexIndex, HibernateOrmBootstrapIntrospector introspector,
103104
HibernateSearchPreIntegrationService preIntegrationService, boolean multiTenancyEnabled) {
104-
super( introspector );
105+
super( introspector, HibernateOrmMapperHints.INSTANCE );
105106

106107
this.basicTypeMetadataProvider = basicTypeMetadataProvider;
107108
if ( jandexIndex != null ) {
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Hibernate Search, full-text search for your domain model
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.search.mapper.orm.reporting.impl;
8+
9+
import org.hibernate.search.mapper.orm.cfg.HibernateOrmMapperSettings;
10+
import org.hibernate.search.mapper.pojo.reporting.spi.MapperHints;
11+
import org.hibernate.search.util.common.logging.impl.MessageConstants;
12+
13+
import org.jboss.logging.Messages;
14+
import org.jboss.logging.annotations.Message;
15+
import org.jboss.logging.annotations.MessageBundle;
16+
17+
@MessageBundle(projectCode = MessageConstants.PROJECT_CODE)
18+
public interface HibernateOrmMapperHints extends MapperHints {
19+
20+
HibernateOrmMapperHints INSTANCE = Messages.getBundle( HibernateOrmMapperHints.class );
21+
22+
@Message("Prebuild the missing Jandex indexes and make them available to Hibernate Search"
23+
+ " or use a combination of configuration properties ("
24+
+ " \"" + HibernateOrmMapperSettings.MAPPING_CONFIGURER + "\","
25+
+ " \"" + HibernateOrmMapperSettings.MAPPING_DISCOVER_ANNOTATED_TYPES_FROM_ROOT_MAPPING_ANNOTATIONS + "\","
26+
+ " \"" + HibernateOrmMapperSettings.MAPPING_BUILD_MISSING_DISCOVERED_JANDEX_INDEXES + "\""
27+
+ ") to limit the discovery of annotated types."
28+
+ " For specifics, refer to the \"Classpath scanning\""
29+
+ " section of the reference documentation.")
30+
String cannotReadJandexRootMapping();
31+
32+
}

mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/logging/impl/Log.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -743,8 +743,9 @@ SearchException objectProjectionCyclicRecursion(MappingElement objectProjection,
743743
String cyclicRecursionIndexFieldPath);
744744

745745
@Message(id = ID_OFFSET + 119,
746-
value = "Exception while retrieving the Jandex index for code source location '%1$s': %2$s")
747-
SearchException errorDiscoveringJandexIndex(URL codeSourceLocation, String causeMessage, @Cause Exception cause);
746+
value = "Exception while retrieving the Jandex index for code source location '%1$s': %2$s; %3$s")
747+
SearchException errorDiscoveringJandexIndex(URL codeSourceLocation, String causeMessage, String hint,
748+
@Cause Exception cause);
748749

749750
@LogMessage(level = Logger.Level.WARN)
750751
@Message(id = ID_OFFSET + 120,

mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/impl/AnnotationMappingConfigurationContextImpl.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.hibernate.search.mapper.pojo.mapping.spi.PojoMappingConfigurationContributor;
3131
import org.hibernate.search.mapper.pojo.model.spi.PojoBootstrapIntrospector;
3232
import org.hibernate.search.mapper.pojo.model.spi.PojoRawTypeModel;
33+
import org.hibernate.search.mapper.pojo.reporting.spi.MapperHints;
3334
import org.hibernate.search.util.common.jar.impl.JandexUtils;
3435
import org.hibernate.search.util.common.jar.impl.JarUtils;
3536
import org.hibernate.search.util.common.jar.spi.JandexBehavior;
@@ -49,6 +50,7 @@ public class AnnotationMappingConfigurationContextImpl
4950
private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() );
5051

5152
private final PojoBootstrapIntrospector introspector;
53+
private final MapperHints mapperHints;
5254

5355
private boolean discoverAnnotatedTypesFromRootMappingAnnotations = false;
5456
private boolean discoverJandexIndexesFromAddedTypes = false;
@@ -59,8 +61,10 @@ public class AnnotationMappingConfigurationContextImpl
5961
private final Set<Class<?>> explicitAnnotatedTypes = new LinkedHashSet<>();
6062
private final List<IndexView> explicitJandexIndexes = new ArrayList<>();
6163

62-
public AnnotationMappingConfigurationContextImpl(PojoBootstrapIntrospector introspector) {
64+
public AnnotationMappingConfigurationContextImpl(PojoBootstrapIntrospector introspector,
65+
MapperHints mapperHints) {
6366
this.introspector = introspector;
67+
this.mapperHints = mapperHints;
6468
}
6569

6670
@Override
@@ -221,7 +225,7 @@ private boolean isJandexBuildingAllowed(Class<?> annotatedType) {
221225
}
222226
}
223227

224-
private static Optional<Index> jandexIndexForCodeSourceLocation(URL codeSourceLocation, boolean buildIfMissing) {
228+
private Optional<Index> jandexIndexForCodeSourceLocation(URL codeSourceLocation, boolean buildIfMissing) {
225229
try {
226230
if ( buildIfMissing ) {
227231
return Optional.of( JandexUtils.readOrBuildIndex( codeSourceLocation ) );
@@ -231,7 +235,8 @@ private static Optional<Index> jandexIndexForCodeSourceLocation(URL codeSourceLo
231235
}
232236
}
233237
catch (RuntimeException e) {
234-
throw log.errorDiscoveringJandexIndex( codeSourceLocation, e.getMessage(), e );
238+
throw log.errorDiscoveringJandexIndex( codeSourceLocation, e.getMessage(),
239+
mapperHints.cannotReadJandexRootMapping(), e );
235240
}
236241
}
237242

mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/spi/AbstractPojoMappingInitiator.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.hibernate.search.mapper.pojo.mapping.impl.PojoMappingConfigurationContextImpl;
3737
import org.hibernate.search.mapper.pojo.model.spi.PojoBootstrapIntrospector;
3838
import org.hibernate.search.mapper.pojo.model.typepattern.impl.TypePatternMatcherFactory;
39+
import org.hibernate.search.mapper.pojo.reporting.spi.MapperHints;
3940

4041
public abstract class AbstractPojoMappingInitiator<MPBS extends MappingPartialBuildState>
4142
implements MappingInitiator<PojoTypeMetadataContributor, MPBS> {
@@ -58,15 +59,15 @@ public abstract class AbstractPojoMappingInitiator<MPBS extends MappingPartialBu
5859
private ContainerExtractorBinder extractorBinder;
5960
private BridgeResolver bridgeResolver;
6061

61-
protected AbstractPojoMappingInitiator(PojoBootstrapIntrospector introspector) {
62+
protected AbstractPojoMappingInitiator(PojoBootstrapIntrospector introspector, MapperHints mapperHints) {
6263
this.introspector = introspector;
6364

6465
/*
6566
* Make sure to create and add the annotation mapping even if the user does not call the
6667
* annotationMapping() method to register annotated types explicitly,
6768
* in case annotated type discovery is enabled.
6869
*/
69-
annotationMappingConfiguration = new AnnotationMappingConfigurationContextImpl( introspector );
70+
annotationMappingConfiguration = new AnnotationMappingConfigurationContextImpl( introspector, mapperHints );
7071
addConfigurationContributor( annotationMappingConfiguration );
7172

7273
typePatternMatcherFactory = new TypePatternMatcherFactory( introspector );
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Hibernate Search, full-text search for your domain model
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.search.mapper.pojo.reporting.spi;
8+
9+
import org.hibernate.search.util.common.logging.impl.MessageConstants;
10+
11+
import org.jboss.logging.Messages;
12+
import org.jboss.logging.annotations.Message;
13+
import org.jboss.logging.annotations.MessageBundle;
14+
15+
@MessageBundle(projectCode = MessageConstants.PROJECT_CODE)
16+
public interface MapperHints {
17+
18+
MapperHints NONE = Messages.getBundle( MapperHints.class );
19+
20+
@Message("")
21+
String cannotReadJandexRootMapping();
22+
23+
}

mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/mapping/impl/StandalonePojoMappingInitiator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.hibernate.search.mapper.pojo.standalone.mapping.StandalonePojoMappingConfigurationContext;
2323
import org.hibernate.search.mapper.pojo.standalone.mapping.StandalonePojoMappingConfigurer;
2424
import org.hibernate.search.mapper.pojo.standalone.model.impl.StandalonePojoBootstrapIntrospector;
25+
import org.hibernate.search.mapper.pojo.standalone.reporting.impl.StandalonePojoMapperHints;
2526

2627
public class StandalonePojoMappingInitiator extends AbstractPojoMappingInitiator<StandalonePojoMappingPartialBuildState>
2728
implements StandalonePojoMappingConfigurationContext {
@@ -40,7 +41,7 @@ public class StandalonePojoMappingInitiator extends AbstractPojoMappingInitiator
4041
.build();
4142

4243
public StandalonePojoMappingInitiator(StandalonePojoBootstrapIntrospector introspector) {
43-
super( introspector );
44+
super( introspector, StandalonePojoMapperHints.INSTANCE );
4445
// Enable annotated type discovery by default
4546
annotationMapping()
4647
.discoverAnnotatedTypesFromRootMappingAnnotations( true )
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Hibernate Search, full-text search for your domain model
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.search.mapper.pojo.standalone.reporting.impl;
8+
9+
import org.hibernate.search.mapper.pojo.reporting.spi.MapperHints;
10+
import org.hibernate.search.mapper.pojo.standalone.cfg.StandalonePojoMapperSettings;
11+
import org.hibernate.search.util.common.logging.impl.MessageConstants;
12+
13+
import org.jboss.logging.Messages;
14+
import org.jboss.logging.annotations.Message;
15+
import org.jboss.logging.annotations.MessageBundle;
16+
17+
@MessageBundle(projectCode = MessageConstants.PROJECT_CODE)
18+
public interface StandalonePojoMapperHints extends MapperHints {
19+
20+
StandalonePojoMapperHints INSTANCE = Messages.getBundle( StandalonePojoMapperHints.class );
21+
22+
@Message("Prebuild the missing Jandex indexes and make them available to Hibernate Search"
23+
+ " or use a combination of configuration properties ("
24+
+ " \"" + StandalonePojoMapperSettings.MAPPING_CONFIGURER + "\","
25+
+ " \"" + StandalonePojoMapperSettings.MAPPING_DISCOVER_ANNOTATED_TYPES_FROM_ROOT_MAPPING_ANNOTATIONS + "\","
26+
+ " \"" + StandalonePojoMapperSettings.MAPPING_BUILD_MISSING_DISCOVERED_JANDEX_INDEXES + "\""
27+
+ ") to limit the discovery of annotated types."
28+
+ " For specifics, refer to the \"Classpath scanning\""
29+
+ " section of the reference documentation.")
30+
String cannotReadJandexRootMapping();
31+
32+
}

0 commit comments

Comments
 (0)