diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/ElasticsearchExtension.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/ElasticsearchExtension.java index aa552c51290..2485e71e409 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/ElasticsearchExtension.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/ElasticsearchExtension.java @@ -62,23 +62,25 @@ * * @see #get() */ -public final class ElasticsearchExtension - implements SearchQueryDslExtension, R, E, LOS>, +public final class ElasticsearchExtension + implements SearchQueryDslExtension, R, E, LOS>, SearchQueryExtension, H>, - SearchPredicateFactoryExtension, - SearchSortFactoryExtension, - SearchProjectionFactoryExtension, R, E>, - SearchAggregationFactoryExtension, + SearchPredicateFactoryExtension>, + SearchSortFactoryExtension>, + SearchProjectionFactoryExtension, R, E>, + SearchAggregationFactoryExtension>, IndexFieldTypeFactoryExtension, SchemaExportExtension { private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() ); - private static final ElasticsearchExtension INSTANCE = new ElasticsearchExtension<>(); + private static final ElasticsearchExtension INSTANCE = + new ElasticsearchExtension<>(); /** * Get the extension with generic parameters automatically set as appropriate for the context in which it's used. * + * @param Scope root type. * @param The type of query hits. * Users should not have to care about this, as the parameter will automatically take the appropriate value when calling * {@code .extension( ElasticsearchExtension.get() )}. @@ -94,8 +96,8 @@ public final class ElasticsearchExtension * @return The extension. */ @SuppressWarnings("unchecked") // The instance works for any H, R, E and LOS - public static ElasticsearchExtension get() { - return (ElasticsearchExtension) INSTANCE; + public static ElasticsearchExtension get() { + return (ElasticsearchExtension) INSTANCE; } private ElasticsearchExtension() { @@ -106,8 +108,8 @@ private ElasticsearchExtension() { * {@inheritDoc} */ @Override - public Optional> extendOptional( - SearchQuerySelectStep original, + public Optional> extendOptional( + SearchQuerySelectStep original, SearchQueryIndexScope scope, BackendSessionContext sessionContext, SearchLoadingContextBuilder loadingContextBuilder) { @@ -139,9 +141,9 @@ public Optional> extendOptional(SearchQuery origi * {@inheritDoc} */ @Override - public Optional extendOptional(SearchPredicateFactory original) { + public Optional> extendOptional(SearchPredicateFactory original) { if ( original instanceof ElasticsearchSearchPredicateFactory ) { - return Optional.of( (ElasticsearchSearchPredicateFactory) original ); + return Optional.of( (ElasticsearchSearchPredicateFactory) original ); } else { return Optional.empty(); @@ -152,10 +154,10 @@ public Optional extendOptional(SearchPredic * {@inheritDoc} */ @Override - public Optional extendOptional( - SearchSortFactory original) { + public Optional> extendOptional( + SearchSortFactory original) { if ( original instanceof ElasticsearchSearchSortFactory ) { - return Optional.of( (ElasticsearchSearchSortFactory) original ); + return Optional.of( (ElasticsearchSearchSortFactory) original ); } else { return Optional.empty(); @@ -166,9 +168,9 @@ public Optional extendOptional( * {@inheritDoc} */ @Override - public Optional> extendOptional(SearchProjectionFactory original) { + public Optional> extendOptional(SearchProjectionFactory original) { if ( original instanceof ElasticsearchSearchProjectionFactory ) { - return Optional.of( (ElasticsearchSearchProjectionFactory) original ); + return Optional.of( (ElasticsearchSearchProjectionFactory) original ); } else { return Optional.empty(); @@ -179,10 +181,10 @@ public Optional> extendOptional(Searc * {@inheritDoc} */ @Override - public Optional extendOptional( - SearchAggregationFactory original) { + public Optional> extendOptional( + SearchAggregationFactory original) { if ( original instanceof ElasticsearchSearchAggregationFactory ) { - return Optional.of( (ElasticsearchSearchAggregationFactory) original ); + return Optional.of( (ElasticsearchSearchAggregationFactory) original ); } else { return Optional.empty(); diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/scope/model/impl/ElasticsearchSearchIndexScopeImpl.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/scope/model/impl/ElasticsearchSearchIndexScopeImpl.java index cd294b43fbc..06790ce68d3 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/scope/model/impl/ElasticsearchSearchIndexScopeImpl.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/scope/model/impl/ElasticsearchSearchIndexScopeImpl.java @@ -171,24 +171,25 @@ public

ElasticsearchSearchQueryBuilder

select(BackendSessionContext sessi } @Override - public ElasticsearchSearchPredicateFactory predicateFactory() { - return new ElasticsearchSearchPredicateFactoryImpl( SearchPredicateDslContext.root( this ) ); + public ElasticsearchSearchPredicateFactory predicateFactory() { + return new ElasticsearchSearchPredicateFactoryImpl( SearchPredicateDslContext.root( this ) ); } @Override - public ElasticsearchSearchSortFactory sortFactory() { - return new ElasticsearchSearchSortFactoryImpl( SearchSortDslContext + public ElasticsearchSearchSortFactory sortFactory() { + return new ElasticsearchSearchSortFactoryImpl( SearchSortDslContext .root( this, ElasticsearchSearchSortFactoryImpl::new, predicateFactory() ) ); } @Override - public ElasticsearchSearchProjectionFactory projectionFactory() { + public ElasticsearchSearchProjectionFactory projectionFactory() { return new ElasticsearchSearchProjectionFactoryImpl<>( SearchProjectionDslContext.root( this ) ); } @Override - public ElasticsearchSearchAggregationFactory aggregationFactory() { - return new ElasticsearchSearchAggregationFactoryImpl( SearchAggregationDslContext.root( this, predicateFactory() ) ); + public ElasticsearchSearchAggregationFactory aggregationFactory() { + return new ElasticsearchSearchAggregationFactoryImpl( + SearchAggregationDslContext.root( this, predicateFactory() ) ); } @Override diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/dsl/ElasticsearchSearchAggregationFactory.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/dsl/ElasticsearchSearchAggregationFactory.java index 7b9f1f5cc83..15c04e6258d 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/dsl/ElasticsearchSearchAggregationFactory.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/dsl/ElasticsearchSearchAggregationFactory.java @@ -10,8 +10,11 @@ import com.google.gson.JsonObject; -public interface ElasticsearchSearchAggregationFactory - extends ExtendedSearchAggregationFactory { +public interface ElasticsearchSearchAggregationFactory + extends + ExtendedSearchAggregationFactory, + ElasticsearchSearchPredicateFactory> { /** * Create an aggregation from JSON. diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/dsl/impl/ElasticsearchSearchAggregationFactoryImpl.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/dsl/impl/ElasticsearchSearchAggregationFactoryImpl.java index 69d42d1ef1e..633662fcc28 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/dsl/impl/ElasticsearchSearchAggregationFactoryImpl.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/dsl/impl/ElasticsearchSearchAggregationFactoryImpl.java @@ -13,22 +13,24 @@ import com.google.gson.JsonObject; -public class ElasticsearchSearchAggregationFactoryImpl +public class ElasticsearchSearchAggregationFactoryImpl extends AbstractSearchAggregationFactory< - ElasticsearchSearchAggregationFactory, + SR, + ElasticsearchSearchAggregationFactory, ElasticsearchSearchAggregationIndexScope, - ElasticsearchSearchPredicateFactory> - implements ElasticsearchSearchAggregationFactory { + ElasticsearchSearchPredicateFactory> + implements ElasticsearchSearchAggregationFactory { public ElasticsearchSearchAggregationFactoryImpl( - SearchAggregationDslContext, - ElasticsearchSearchPredicateFactory> dslContext) { + SearchAggregationDslContext, + ElasticsearchSearchPredicateFactory> dslContext) { super( dslContext ); } @Override - public ElasticsearchSearchAggregationFactory withRoot(String objectFieldPath) { - return new ElasticsearchSearchAggregationFactoryImpl( dslContext.rescope( + public ElasticsearchSearchAggregationFactory withRoot(String objectFieldPath) { + return new ElasticsearchSearchAggregationFactoryImpl( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ), dslContext.predicateFactory().withRoot( objectFieldPath ) ) ); } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/dsl/ElasticsearchSearchPredicateFactory.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/dsl/ElasticsearchSearchPredicateFactory.java index f63904b2aab..e7566795856 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/dsl/ElasticsearchSearchPredicateFactory.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/dsl/ElasticsearchSearchPredicateFactory.java @@ -11,9 +11,11 @@ /** * A factory for search predicates with some Elasticsearch-specific methods. + * + * @param Scope root type. */ -public interface ElasticsearchSearchPredicateFactory - extends ExtendedSearchPredicateFactory { +public interface ElasticsearchSearchPredicateFactory + extends ExtendedSearchPredicateFactory> { /** * Create a predicate from JSON. diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/dsl/impl/ElasticsearchSearchPredicateFactoryImpl.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/dsl/impl/ElasticsearchSearchPredicateFactoryImpl.java index 4d17c8d8ffa..b4b5f77bd1e 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/dsl/impl/ElasticsearchSearchPredicateFactoryImpl.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/dsl/impl/ElasticsearchSearchPredicateFactoryImpl.java @@ -13,11 +13,12 @@ import com.google.gson.JsonObject; -public class ElasticsearchSearchPredicateFactoryImpl +public class ElasticsearchSearchPredicateFactoryImpl extends AbstractSearchPredicateFactory< - ElasticsearchSearchPredicateFactory, + SR, + ElasticsearchSearchPredicateFactory, ElasticsearchSearchPredicateIndexScope> - implements ElasticsearchSearchPredicateFactory { + implements ElasticsearchSearchPredicateFactory { public ElasticsearchSearchPredicateFactoryImpl( SearchPredicateDslContext> dslContext) { @@ -25,8 +26,8 @@ public ElasticsearchSearchPredicateFactoryImpl( } @Override - public ElasticsearchSearchPredicateFactory withRoot(String objectFieldPath) { - return new ElasticsearchSearchPredicateFactoryImpl( dslContext.rescope( + public ElasticsearchSearchPredicateFactory withRoot(String objectFieldPath) { + return new ElasticsearchSearchPredicateFactoryImpl( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ) ) ); } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/impl/ElasticsearchNamedPredicate.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/impl/ElasticsearchNamedPredicate.java index d72ee03d57b..69bf858d06c 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/impl/ElasticsearchNamedPredicate.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/predicate/impl/ElasticsearchNamedPredicate.java @@ -75,7 +75,7 @@ private static class Builder extends AbstractBuilder implements NamedPredicateBu private final PredicateDefinition definition; private final String predicateName; private final ElasticsearchSearchIndexCompositeNodeContext field; - private SearchPredicateFactory factory; + private SearchPredicateFactory factory; private final Map params = new LinkedHashMap<>(); Builder(PredicateDefinition definition, String predicateName, @@ -88,7 +88,7 @@ private static class Builder extends AbstractBuilder implements NamedPredicateBu } @Override - public void factory(SearchPredicateFactory factory) { + public void factory(SearchPredicateFactory factory) { this.factory = factory; } @@ -99,8 +99,9 @@ public void param(String name, Object value) { @Override public SearchPredicate build() { - NamedValuesBasedPredicateDefinitionContext ctx = new NamedValuesBasedPredicateDefinitionContext( factory, params, - name -> log.paramNotDefined( name, predicateName, field.eventContext() ) ); + NamedValuesBasedPredicateDefinitionContext ctx = + new NamedValuesBasedPredicateDefinitionContext<>( factory, params, + name -> log.paramNotDefined( name, predicateName, field.eventContext() ) ); ElasticsearchSearchPredicate providedPredicate = ElasticsearchSearchPredicate.from( scope, definition.create( ctx ) ); diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/projection/dsl/ElasticsearchSearchProjectionFactory.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/projection/dsl/ElasticsearchSearchProjectionFactory.java index 6ce8fa1adb0..f6485bfacbf 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/projection/dsl/ElasticsearchSearchProjectionFactory.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/projection/dsl/ElasticsearchSearchProjectionFactory.java @@ -13,12 +13,13 @@ /** * A factory for search projections with some Elasticsearch-specific methods. * + * @param Scope root type. * @param The type of entity references. * @param The type of entities. * @see SearchProjectionFactory */ -public interface ElasticsearchSearchProjectionFactory - extends ExtendedSearchProjectionFactory, R, E> { +public interface ElasticsearchSearchProjectionFactory + extends ExtendedSearchProjectionFactory, R, E> { /** * Project to a {@link JsonObject} representing the document as stored in Elasticsearch. diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/projection/dsl/impl/ElasticsearchSearchProjectionFactoryImpl.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/projection/dsl/impl/ElasticsearchSearchProjectionFactoryImpl.java index 6cdb9bf8b0c..44c61c9aa07 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/projection/dsl/impl/ElasticsearchSearchProjectionFactoryImpl.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/projection/dsl/impl/ElasticsearchSearchProjectionFactoryImpl.java @@ -13,13 +13,14 @@ import com.google.gson.JsonObject; -public class ElasticsearchSearchProjectionFactoryImpl +public class ElasticsearchSearchProjectionFactoryImpl extends AbstractSearchProjectionFactory< - ElasticsearchSearchProjectionFactory, + SR, + ElasticsearchSearchProjectionFactory, ElasticsearchSearchProjectionIndexScope, R, E> - implements ElasticsearchSearchProjectionFactory { + implements ElasticsearchSearchProjectionFactory { public ElasticsearchSearchProjectionFactoryImpl( SearchProjectionDslContext> dslContext) { @@ -27,7 +28,7 @@ public ElasticsearchSearchProjectionFactoryImpl( } @Override - public ElasticsearchSearchProjectionFactory withRoot(String objectFieldPath) { + public ElasticsearchSearchProjectionFactory withRoot(String objectFieldPath) { return new ElasticsearchSearchProjectionFactoryImpl<>( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ) ) ); } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQueryOptionsStep.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQueryOptionsStep.java index e52d435374c..1b84e94fd42 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQueryOptionsStep.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQueryOptionsStep.java @@ -12,13 +12,14 @@ import org.hibernate.search.engine.search.query.dsl.SearchQueryOptionsStep; import org.hibernate.search.util.common.annotation.Incubating; -public interface ElasticsearchSearchQueryOptionsStep +public interface ElasticsearchSearchQueryOptionsStep extends SearchQueryOptionsStep< - ElasticsearchSearchQueryOptionsStep, + SR, + ElasticsearchSearchQueryOptionsStep, H, LOS, - ElasticsearchSearchSortFactory, - ElasticsearchSearchAggregationFactory>, + ElasticsearchSearchSortFactory, + ElasticsearchSearchAggregationFactory>, ElasticsearchSearchFetchable { /** @@ -34,7 +35,7 @@ public interface ElasticsearchSearchQueryOptionsStep * @return {@code this}, for method chaining. */ @Incubating - ElasticsearchSearchQueryOptionsStep requestTransformer(ElasticsearchSearchRequestTransformer transformer); + ElasticsearchSearchQueryOptionsStep requestTransformer(ElasticsearchSearchRequestTransformer transformer); @Override ElasticsearchSearchQuery toQuery(); diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQuerySelectStep.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQuerySelectStep.java index 5677913b4de..d90bba0a8dd 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQuerySelectStep.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQuerySelectStep.java @@ -13,34 +13,35 @@ import org.hibernate.search.engine.search.projection.dsl.ProjectionFinalStep; import org.hibernate.search.engine.search.query.dsl.SearchQuerySelectStep; -public interface ElasticsearchSearchQuerySelectStep +public interface ElasticsearchSearchQuerySelectStep extends SearchQuerySelectStep< - ElasticsearchSearchQueryOptionsStep, + SR, + ElasticsearchSearchQueryOptionsStep, R, E, LOS, - ElasticsearchSearchProjectionFactory, - ElasticsearchSearchPredicateFactory>, - ElasticsearchSearchQueryWhereStep { + ElasticsearchSearchProjectionFactory, + ElasticsearchSearchPredicateFactory>, + ElasticsearchSearchQueryWhereStep { @Override - ElasticsearchSearchQueryWhereStep selectEntity(); + ElasticsearchSearchQueryWhereStep selectEntity(); @Override - ElasticsearchSearchQueryWhereStep selectEntityReference(); + ElasticsearchSearchQueryWhereStep selectEntityReference(); @Override -

ElasticsearchSearchQueryWhereStep select(Class

objectClass); +

ElasticsearchSearchQueryWhereStep select(Class

objectClass); @Override -

ElasticsearchSearchQueryWhereStep select( - Function, +

ElasticsearchSearchQueryWhereStep select( + Function, ? extends ProjectionFinalStep

> projectionContributor); @Override -

ElasticsearchSearchQueryWhereStep select(SearchProjection

projection); +

ElasticsearchSearchQueryWhereStep select(SearchProjection

projection); @Override - ElasticsearchSearchQueryWhereStep, LOS> select(SearchProjection... projections); + ElasticsearchSearchQueryWhereStep, LOS> select(SearchProjection... projections); } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQueryWhereStep.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQueryWhereStep.java index 1c6af20379d..531cbb4ce6b 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQueryWhereStep.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/ElasticsearchSearchQueryWhereStep.java @@ -7,7 +7,12 @@ import org.hibernate.search.backend.elasticsearch.search.predicate.dsl.ElasticsearchSearchPredicateFactory; import org.hibernate.search.engine.search.query.dsl.SearchQueryWhereStep; -public interface ElasticsearchSearchQueryWhereStep - extends SearchQueryWhereStep, H, LOS, ElasticsearchSearchPredicateFactory> { +public interface ElasticsearchSearchQueryWhereStep + extends + SearchQueryWhereStep, + H, + LOS, + ElasticsearchSearchPredicateFactory> { } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/impl/ElasticsearchSearchQueryOptionsStepImpl.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/impl/ElasticsearchSearchQueryOptionsStepImpl.java index 4ebf50685c9..6f346506453 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/impl/ElasticsearchSearchQueryOptionsStepImpl.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/impl/ElasticsearchSearchQueryOptionsStepImpl.java @@ -19,18 +19,19 @@ import org.hibernate.search.engine.search.loading.spi.SearchLoadingContextBuilder; import org.hibernate.search.engine.search.query.dsl.spi.AbstractExtendedSearchQueryOptionsStep; -class ElasticsearchSearchQueryOptionsStepImpl +class ElasticsearchSearchQueryOptionsStepImpl extends AbstractExtendedSearchQueryOptionsStep< - ElasticsearchSearchQueryOptionsStep, + SR, + ElasticsearchSearchQueryOptionsStep, H, ElasticsearchSearchResult, ElasticsearchSearchScroll, LOS, - ElasticsearchSearchPredicateFactory, - ElasticsearchSearchSortFactory, - ElasticsearchSearchAggregationFactory, + ElasticsearchSearchPredicateFactory, + ElasticsearchSearchSortFactory, + ElasticsearchSearchAggregationFactory, ElasticsearchSearchQueryIndexScope> - implements ElasticsearchSearchQueryWhereStep, ElasticsearchSearchQueryOptionsStep { + implements ElasticsearchSearchQueryWhereStep, ElasticsearchSearchQueryOptionsStep { private final ElasticsearchSearchQueryBuilder searchQueryBuilder; @@ -42,7 +43,8 @@ class ElasticsearchSearchQueryOptionsStepImpl } @Override - public ElasticsearchSearchQueryOptionsStep requestTransformer(ElasticsearchSearchRequestTransformer transformer) { + public ElasticsearchSearchQueryOptionsStep requestTransformer( + ElasticsearchSearchRequestTransformer transformer) { searchQueryBuilder.requestTransformer( transformer ); return thisAsS(); } @@ -53,22 +55,22 @@ public ElasticsearchSearchQuery toQuery() { } @Override - protected ElasticsearchSearchQueryOptionsStepImpl thisAsS() { + protected ElasticsearchSearchQueryOptionsStepImpl thisAsS() { return this; } @Override - protected ElasticsearchSearchPredicateFactory predicateFactory() { + protected ElasticsearchSearchPredicateFactory predicateFactory() { return scope.predicateFactory(); } @Override - protected ElasticsearchSearchSortFactory sortFactory() { + protected ElasticsearchSearchSortFactory sortFactory() { return scope.sortFactory(); } @Override - protected ElasticsearchSearchAggregationFactory aggregationFactory() { + protected ElasticsearchSearchAggregationFactory aggregationFactory() { return scope.aggregationFactory(); } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/impl/ElasticsearchSearchQuerySelectStepImpl.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/impl/ElasticsearchSearchQuerySelectStepImpl.java index 3321d81cfef..5e92de5b6fd 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/impl/ElasticsearchSearchQuerySelectStepImpl.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/dsl/impl/ElasticsearchSearchQuerySelectStepImpl.java @@ -27,15 +27,16 @@ import org.hibernate.search.engine.search.query.dsl.spi.AbstractSearchQuerySelectStep; import org.hibernate.search.engine.search.query.spi.SearchQueryIndexScope; -public class ElasticsearchSearchQuerySelectStepImpl +public class ElasticsearchSearchQuerySelectStepImpl extends AbstractSearchQuerySelectStep< - ElasticsearchSearchQueryOptionsStep, + SR, + ElasticsearchSearchQueryOptionsStep, R, E, LOS, - ElasticsearchSearchProjectionFactory, - ElasticsearchSearchPredicateFactory> - implements ElasticsearchSearchQuerySelectStep { + ElasticsearchSearchProjectionFactory, + ElasticsearchSearchPredicateFactory> + implements ElasticsearchSearchQuerySelectStep { private final ElasticsearchSearchQueryIndexScope scope; private final BackendSessionContext sessionContext; @@ -50,57 +51,57 @@ public ElasticsearchSearchQuerySelectStepImpl(ElasticsearchSearchQueryIndexScope } @Override - public ElasticsearchSearchQueryWhereStep selectEntity() { - return select( scope.projectionFactory().entity().toProjection() ); + public ElasticsearchSearchQueryWhereStep selectEntity() { + return select( scope.projectionFactory().entity().toProjection() ); } @Override - public ElasticsearchSearchQueryWhereStep selectEntityReference() { + public ElasticsearchSearchQueryWhereStep selectEntityReference() { return select( scope.projectionBuilders().entityReference() ); } @Override - public

ElasticsearchSearchQueryWhereStep select(Class

objectClass) { + public

ElasticsearchSearchQueryWhereStep select(Class

objectClass) { return select( scope.projectionFactory().composite().as( objectClass ).toProjection() ); } @Override - public

ElasticsearchSearchQueryWhereStep select( - Function, + public

ElasticsearchSearchQueryWhereStep select( + Function, ? extends ProjectionFinalStep

> projectionContributor) { SearchProjection

projection = projectionContributor.apply( scope.projectionFactory() ).toProjection(); return select( projection ); } @Override - public

ElasticsearchSearchQueryWhereStep select(SearchProjection

projection) { + public

ElasticsearchSearchQueryWhereStep select(SearchProjection

projection) { ElasticsearchSearchQueryBuilder

builder = scope.select( sessionContext, loadingContextBuilder, projection ); return new ElasticsearchSearchQueryOptionsStepImpl<>( scope, builder, loadingContextBuilder ); } @Override - public ElasticsearchSearchQueryWhereStep, LOS> select(SearchProjection... projections) { + public ElasticsearchSearchQueryWhereStep, LOS> select(SearchProjection... projections) { return select( scope.projectionBuilders().composite() .build( projections, ProjectionCompositor.fromList( projections.length ), ProjectionAccumulator.single() ) ); } @Override - public ElasticsearchSearchQueryOptionsStep where(SearchPredicate predicate) { + public ElasticsearchSearchQueryOptionsStep where(SearchPredicate predicate) { return selectEntity().where( predicate ); } @Override - public ElasticsearchSearchQueryOptionsStep where( - Function predicateContributor) { + public ElasticsearchSearchQueryOptionsStep where( + Function, ? extends PredicateFinalStep> predicateContributor) { return selectEntity().where( predicateContributor ); } @Override - public ElasticsearchSearchQueryOptionsStep where( - BiConsumer> predicateContributor) { + public ElasticsearchSearchQueryOptionsStep where( + BiConsumer, + ? super SimpleBooleanPredicateClausesCollector> predicateContributor) { return selectEntity().where( predicateContributor ); } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/impl/ElasticsearchSearchQueryIndexScope.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/impl/ElasticsearchSearchQueryIndexScope.java index f68f4412cc1..feed3352cd5 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/impl/ElasticsearchSearchQueryIndexScope.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/query/impl/ElasticsearchSearchQueryIndexScope.java @@ -27,15 +27,15 @@

ElasticsearchSearchQueryBuilder

select(BackendSessionContext sessionConte SearchLoadingContextBuilder loadingContextBuilder, SearchProjection

projection); @Override - ElasticsearchSearchPredicateFactory predicateFactory(); + ElasticsearchSearchPredicateFactory predicateFactory(); @Override - ElasticsearchSearchSortFactory sortFactory(); + ElasticsearchSearchSortFactory sortFactory(); @Override - ElasticsearchSearchProjectionFactory projectionFactory(); + ElasticsearchSearchProjectionFactory projectionFactory(); @Override - ElasticsearchSearchAggregationFactory aggregationFactory(); + ElasticsearchSearchAggregationFactory aggregationFactory(); } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/sort/dsl/ElasticsearchSearchSortFactory.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/sort/dsl/ElasticsearchSearchSortFactory.java index ae505cb6534..aa4cb7b42ae 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/sort/dsl/ElasticsearchSearchSortFactory.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/sort/dsl/ElasticsearchSearchSortFactory.java @@ -12,9 +12,10 @@ /** * A factory for search sorts with some Elasticsearch-specific methods. + * @param Scope root type. */ -public interface ElasticsearchSearchSortFactory - extends ExtendedSearchSortFactory { +public interface ElasticsearchSearchSortFactory + extends ExtendedSearchSortFactory, ElasticsearchSearchPredicateFactory> { /** * Order elements according to a JSON sort definition. @@ -25,7 +26,7 @@ public interface ElasticsearchSearchSortFactory * @return A {@link SortThenStep} allowing the retrieval of the sort * or the chaining of other sorts. */ - SortThenStep fromJson(String jsonString); + SortThenStep fromJson(String jsonString); /** * Order elements according to a JSON sort definition. @@ -36,6 +37,6 @@ public interface ElasticsearchSearchSortFactory * @return A {@link SortThenStep} allowing the retrieval of the sort * or the chaining of other sorts. */ - SortThenStep fromJson(JsonObject jsonObject); + SortThenStep fromJson(JsonObject jsonObject); } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/sort/dsl/impl/ElasticsearchSearchSortFactoryImpl.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/sort/dsl/impl/ElasticsearchSearchSortFactoryImpl.java index b5676f540a4..461291b27d0 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/sort/dsl/impl/ElasticsearchSearchSortFactoryImpl.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/sort/dsl/impl/ElasticsearchSearchSortFactoryImpl.java @@ -15,36 +15,39 @@ import com.google.gson.JsonObject; -public class ElasticsearchSearchSortFactoryImpl +public class ElasticsearchSearchSortFactoryImpl extends AbstractSearchSortFactory< - ElasticsearchSearchSortFactory, + SR, + ElasticsearchSearchSortFactory, ElasticsearchSearchSortIndexScope, - ElasticsearchSearchPredicateFactory> - implements ElasticsearchSearchSortFactory { + ElasticsearchSearchPredicateFactory> + implements ElasticsearchSearchSortFactory { public ElasticsearchSearchSortFactoryImpl( - SearchSortDslContext, ElasticsearchSearchPredicateFactory> dslContext) { + SearchSortDslContext, + ElasticsearchSearchPredicateFactory> dslContext) { super( dslContext ); } @Override - public ElasticsearchSearchSortFactory withRoot(String objectFieldPath) { - return new ElasticsearchSearchSortFactoryImpl( dslContext.rescope( + public ElasticsearchSearchSortFactory withRoot(String objectFieldPath) { + return new ElasticsearchSearchSortFactoryImpl( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ), dslContext.predicateFactory().withRoot( objectFieldPath ) ) ); } @Override - public SortThenStep fromJson(JsonObject jsonObject) { + public SortThenStep fromJson(JsonObject jsonObject) { return staticThenStep( dslContext.scope().sortBuilders().fromJson( jsonObject ) ); } @Override - public SortThenStep fromJson(String jsonString) { + public SortThenStep fromJson(String jsonString) { return staticThenStep( dslContext.scope().sortBuilders().fromJson( jsonString ) ); } - private SortThenStep staticThenStep(ElasticsearchSearchSort sort) { - return new StaticSortThenStep( dslContext, sort ); + private SortThenStep staticThenStep(ElasticsearchSearchSort sort) { + return new StaticSortThenStep( dslContext, sort ); } } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/LuceneExtension.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/LuceneExtension.java index 52bbffc235e..2b703a89b17 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/LuceneExtension.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/LuceneExtension.java @@ -65,24 +65,25 @@ * * @see #get() */ -public final class LuceneExtension - implements SearchQueryDslExtension, R, E, LOS>, +public final class LuceneExtension + implements SearchQueryDslExtension, R, E, LOS>, SearchQueryExtension, H>, - SearchPredicateFactoryExtension, - SearchSortFactoryExtension, - SearchProjectionFactoryExtension, R, E>, - SearchAggregationFactoryExtension, + SearchPredicateFactoryExtension>, + SearchSortFactoryExtension>, + SearchProjectionFactoryExtension, R, E>, + SearchAggregationFactoryExtension>, IndexFieldTypeFactoryExtension, IndexScopeExtension, SchemaExportExtension { private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() ); - private static final LuceneExtension INSTANCE = new LuceneExtension<>(); + private static final LuceneExtension INSTANCE = new LuceneExtension<>(); /** * Get the extension with generic parameters automatically set as appropriate for the context in which it's used. * + * @param Scope root type. * @param The type of query hits. * Users should not have to care about this, as the parameter will automatically take the appropriate value when calling * {@code .extension( LuceneExtension.get() }. @@ -98,8 +99,8 @@ public final class LuceneExtension * @return The extension. */ @SuppressWarnings("unchecked") // The instance works for any H, R and E - public static LuceneExtension get() { - return (LuceneExtension) INSTANCE; + public static LuceneExtension get() { + return (LuceneExtension) INSTANCE; } private LuceneExtension() { @@ -110,8 +111,8 @@ private LuceneExtension() { * {@inheritDoc} */ @Override - public Optional> extendOptional( - SearchQuerySelectStep original, + public Optional> extendOptional( + SearchQuerySelectStep original, SearchQueryIndexScope scope, BackendSessionContext sessionContext, SearchLoadingContextBuilder loadingContextBuilder) { @@ -143,9 +144,9 @@ public Optional> extendOptional(SearchQuery original, * {@inheritDoc} */ @Override - public Optional extendOptional(SearchPredicateFactory original) { + public Optional> extendOptional(SearchPredicateFactory original) { if ( original instanceof LuceneSearchPredicateFactory ) { - return Optional.of( (LuceneSearchPredicateFactory) original ); + return Optional.of( (LuceneSearchPredicateFactory) original ); } else { return Optional.empty(); @@ -156,10 +157,10 @@ public Optional extendOptional(SearchPredicateFact * {@inheritDoc} */ @Override - public Optional extendOptional( - SearchSortFactory original) { + public Optional> extendOptional( + SearchSortFactory original) { if ( original instanceof LuceneSearchSortFactory ) { - return Optional.of( (LuceneSearchSortFactory) original ); + return Optional.of( (LuceneSearchSortFactory) original ); } else { return Optional.empty(); @@ -170,9 +171,9 @@ public Optional extendOptional( * {@inheritDoc} */ @Override - public Optional> extendOptional(SearchProjectionFactory original) { + public Optional> extendOptional(SearchProjectionFactory original) { if ( original instanceof LuceneSearchProjectionFactory ) { - return Optional.of( (LuceneSearchProjectionFactory) original ); + return Optional.of( (LuceneSearchProjectionFactory) original ); } else { return Optional.empty(); @@ -183,9 +184,9 @@ public Optional> extendOptional(SearchProjec * {@inheritDoc} */ @Override - public Optional extendOptional(SearchAggregationFactory original) { + public Optional> extendOptional(SearchAggregationFactory original) { if ( original instanceof LuceneSearchAggregationFactory ) { - return Optional.of( (LuceneSearchAggregationFactory) original ); + return Optional.of( (LuceneSearchAggregationFactory) original ); } else { return Optional.empty(); diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/scope/model/impl/LuceneSearchIndexScopeImpl.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/scope/model/impl/LuceneSearchIndexScopeImpl.java index 08770115084..e0e1b54c943 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/scope/model/impl/LuceneSearchIndexScopeImpl.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/scope/model/impl/LuceneSearchIndexScopeImpl.java @@ -162,24 +162,24 @@ public

LuceneSearchQueryBuilder

select(BackendSessionContext sessionConte } @Override - public LuceneSearchPredicateFactory predicateFactory() { - return new LuceneSearchPredicateFactoryImpl( SearchPredicateDslContext.root( this ) ); + public LuceneSearchPredicateFactory predicateFactory() { + return new LuceneSearchPredicateFactoryImpl<>( SearchPredicateDslContext.root( this ) ); } @Override - public LuceneSearchSortFactory sortFactory() { - return new LuceneSearchSortFactoryImpl( SearchSortDslContext + public LuceneSearchSortFactory sortFactory() { + return new LuceneSearchSortFactoryImpl( SearchSortDslContext .root( this, LuceneSearchSortFactoryImpl::new, predicateFactory() ) ); } @Override - public LuceneSearchProjectionFactory projectionFactory() { + public LuceneSearchProjectionFactory projectionFactory() { return new LuceneSearchProjectionFactoryImpl<>( SearchProjectionDslContext.root( this ) ); } @Override - public LuceneSearchAggregationFactory aggregationFactory() { - return new LuceneSearchAggregationFactoryImpl( SearchAggregationDslContext.root( this, predicateFactory() ) ); + public LuceneSearchAggregationFactory aggregationFactory() { + return new LuceneSearchAggregationFactoryImpl( SearchAggregationDslContext.root( this, predicateFactory() ) ); } @Override diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/aggregation/dsl/LuceneSearchAggregationFactory.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/aggregation/dsl/LuceneSearchAggregationFactory.java index 672d8055ef7..3d7ab6f90bb 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/aggregation/dsl/LuceneSearchAggregationFactory.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/aggregation/dsl/LuceneSearchAggregationFactory.java @@ -7,7 +7,7 @@ import org.hibernate.search.backend.lucene.search.predicate.dsl.LuceneSearchPredicateFactory; import org.hibernate.search.engine.search.aggregation.dsl.ExtendedSearchAggregationFactory; -public interface LuceneSearchAggregationFactory - extends ExtendedSearchAggregationFactory { +public interface LuceneSearchAggregationFactory + extends ExtendedSearchAggregationFactory, LuceneSearchPredicateFactory> { } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/aggregation/dsl/impl/LuceneSearchAggregationFactoryImpl.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/aggregation/dsl/impl/LuceneSearchAggregationFactoryImpl.java index 88f7d780848..b22685c68a8 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/aggregation/dsl/impl/LuceneSearchAggregationFactoryImpl.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/aggregation/dsl/impl/LuceneSearchAggregationFactoryImpl.java @@ -10,21 +10,24 @@ import org.hibernate.search.engine.search.aggregation.dsl.spi.AbstractSearchAggregationFactory; import org.hibernate.search.engine.search.aggregation.dsl.spi.SearchAggregationDslContext; -public class LuceneSearchAggregationFactoryImpl +public class LuceneSearchAggregationFactoryImpl extends AbstractSearchAggregationFactory< - LuceneSearchAggregationFactory, + SR, + LuceneSearchAggregationFactory, LuceneSearchAggregationIndexScope, - LuceneSearchPredicateFactory> - implements LuceneSearchAggregationFactory { + LuceneSearchPredicateFactory> + implements LuceneSearchAggregationFactory { public LuceneSearchAggregationFactoryImpl( - SearchAggregationDslContext, LuceneSearchPredicateFactory> dslContext) { + SearchAggregationDslContext, + LuceneSearchPredicateFactory> dslContext) { super( dslContext ); } @Override - public LuceneSearchAggregationFactory withRoot(String objectFieldPath) { - return new LuceneSearchAggregationFactoryImpl( dslContext.rescope( + public LuceneSearchAggregationFactory withRoot(String objectFieldPath) { + return new LuceneSearchAggregationFactoryImpl( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ), dslContext.predicateFactory().withRoot( objectFieldPath ) ) ); } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/dsl/LuceneSearchPredicateFactory.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/dsl/LuceneSearchPredicateFactory.java index 5bfdfc80fad..9fc4d5f8c77 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/dsl/LuceneSearchPredicateFactory.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/dsl/LuceneSearchPredicateFactory.java @@ -12,7 +12,7 @@ /** * A factory for search predicates with some Lucene-specific methods. */ -public interface LuceneSearchPredicateFactory extends ExtendedSearchPredicateFactory { +public interface LuceneSearchPredicateFactory extends ExtendedSearchPredicateFactory> { /** * Create a predicate from a Lucene {@link Query}. diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/dsl/impl/LuceneSearchPredicateFactoryImpl.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/dsl/impl/LuceneSearchPredicateFactoryImpl.java index 121daec55d3..bb73666ba1b 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/dsl/impl/LuceneSearchPredicateFactoryImpl.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/dsl/impl/LuceneSearchPredicateFactoryImpl.java @@ -13,19 +13,20 @@ import org.apache.lucene.search.Query; -public class LuceneSearchPredicateFactoryImpl +public class LuceneSearchPredicateFactoryImpl extends AbstractSearchPredicateFactory< - LuceneSearchPredicateFactory, + SR, + LuceneSearchPredicateFactory, LuceneSearchPredicateIndexScope> - implements LuceneSearchPredicateFactory { + implements LuceneSearchPredicateFactory { public LuceneSearchPredicateFactoryImpl(SearchPredicateDslContext> dslContext) { super( dslContext ); } @Override - public LuceneSearchPredicateFactory withRoot(String objectFieldPath) { - return new LuceneSearchPredicateFactoryImpl( dslContext.rescope( + public LuceneSearchPredicateFactory withRoot(String objectFieldPath) { + return new LuceneSearchPredicateFactoryImpl( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ) ) ); } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/impl/LuceneNamedPredicate.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/impl/LuceneNamedPredicate.java index 3bdc1f0c96b..7579754f6fe 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/impl/LuceneNamedPredicate.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/predicate/impl/LuceneNamedPredicate.java @@ -74,7 +74,7 @@ private static class Builder extends AbstractBuilder implements NamedPredicateBu private final PredicateDefinition definition; private final String predicateName; private final LuceneSearchIndexCompositeNodeContext field; - private SearchPredicateFactory factory; + private SearchPredicateFactory factory; private final Map params = new LinkedHashMap<>(); Builder(PredicateDefinition definition, String predicateName, LuceneSearchIndexScope scope, @@ -86,7 +86,7 @@ private static class Builder extends AbstractBuilder implements NamedPredicateBu } @Override - public void factory(SearchPredicateFactory factory) { + public void factory(SearchPredicateFactory factory) { this.factory = factory; } @@ -97,8 +97,9 @@ public void param(String name, Object value) { @Override public SearchPredicate build() { - NamedValuesBasedPredicateDefinitionContext ctx = new NamedValuesBasedPredicateDefinitionContext( factory, params, - name -> log.paramNotDefined( name, predicateName, field.eventContext() ) ); + NamedValuesBasedPredicateDefinitionContext ctx = + new NamedValuesBasedPredicateDefinitionContext<>( factory, params, + name -> log.paramNotDefined( name, predicateName, field.eventContext() ) ); LuceneSearchPredicate providedPredicate = LuceneSearchPredicate.from( scope, definition.create( ctx ) ); diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/projection/dsl/LuceneSearchProjectionFactory.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/projection/dsl/LuceneSearchProjectionFactory.java index abf30741110..94d8717e4c0 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/projection/dsl/LuceneSearchProjectionFactory.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/projection/dsl/LuceneSearchProjectionFactory.java @@ -15,12 +15,13 @@ /** * A factory for search projections with some Lucene-specific methods. * + * @param Scope root type. * @param The type of entity references. * @param The type of entities. * @see SearchProjectionFactory */ -public interface LuceneSearchProjectionFactory - extends ExtendedSearchProjectionFactory, R, E> { +public interface LuceneSearchProjectionFactory + extends ExtendedSearchProjectionFactory, R, E> { /** * Project to a Lucene {@link Document} containing all the stored fields. diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/projection/dsl/impl/LuceneSearchProjectionFactoryImpl.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/projection/dsl/impl/LuceneSearchProjectionFactoryImpl.java index daf4eb4bfdd..8b1d8c2d554 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/projection/dsl/impl/LuceneSearchProjectionFactoryImpl.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/projection/dsl/impl/LuceneSearchProjectionFactoryImpl.java @@ -15,20 +15,21 @@ import org.apache.lucene.document.Document; import org.apache.lucene.search.Explanation; -public class LuceneSearchProjectionFactoryImpl +public class LuceneSearchProjectionFactoryImpl extends AbstractSearchProjectionFactory< - LuceneSearchProjectionFactory, + SR, + LuceneSearchProjectionFactory, LuceneSearchProjectionIndexScope, R, E> - implements LuceneSearchProjectionFactory { + implements LuceneSearchProjectionFactory { public LuceneSearchProjectionFactoryImpl(SearchProjectionDslContext> dslContext) { super( dslContext ); } @Override - public LuceneSearchProjectionFactory withRoot(String objectFieldPath) { + public LuceneSearchProjectionFactory withRoot(String objectFieldPath) { return new LuceneSearchProjectionFactoryImpl<>( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ) ) ); } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQueryOptionsStep.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQueryOptionsStep.java index fca7d25b2f6..df0f94d6d2d 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQueryOptionsStep.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQueryOptionsStep.java @@ -10,13 +10,14 @@ import org.hibernate.search.backend.lucene.search.sort.dsl.LuceneSearchSortFactory; import org.hibernate.search.engine.search.query.dsl.SearchQueryOptionsStep; -public interface LuceneSearchQueryOptionsStep +public interface LuceneSearchQueryOptionsStep extends SearchQueryOptionsStep< - LuceneSearchQueryOptionsStep, + SR, + LuceneSearchQueryOptionsStep, H, LOS, - LuceneSearchSortFactory, - LuceneSearchAggregationFactory>, + LuceneSearchSortFactory, + LuceneSearchAggregationFactory>, LuceneSearchFetchable { @Override diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQuerySelectStep.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQuerySelectStep.java index 0c64a658dd4..44d180ae731 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQuerySelectStep.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQuerySelectStep.java @@ -13,33 +13,34 @@ import org.hibernate.search.engine.search.projection.dsl.ProjectionFinalStep; import org.hibernate.search.engine.search.query.dsl.SearchQuerySelectStep; -public interface LuceneSearchQuerySelectStep +public interface LuceneSearchQuerySelectStep extends SearchQuerySelectStep< - LuceneSearchQueryOptionsStep, + SR, + LuceneSearchQueryOptionsStep, R, E, LOS, - LuceneSearchProjectionFactory, - LuceneSearchPredicateFactory>, - LuceneSearchQueryWhereStep { + LuceneSearchProjectionFactory, + LuceneSearchPredicateFactory>, + LuceneSearchQueryWhereStep { @Override - LuceneSearchQueryWhereStep selectEntity(); + LuceneSearchQueryWhereStep selectEntity(); @Override - LuceneSearchQueryWhereStep selectEntityReference(); + LuceneSearchQueryWhereStep selectEntityReference(); @Override -

LuceneSearchQueryWhereStep select(Class

objectClass); +

LuceneSearchQueryWhereStep select(Class

objectClass); @Override -

LuceneSearchQueryWhereStep select( - Function, ? extends ProjectionFinalStep

> projectionContributor); +

LuceneSearchQueryWhereStep select( + Function, ? extends ProjectionFinalStep

> projectionContributor); @Override -

LuceneSearchQueryWhereStep select(SearchProjection

projection); +

LuceneSearchQueryWhereStep select(SearchProjection

projection); @Override - LuceneSearchQueryWhereStep, LOS> select(SearchProjection... projections); + LuceneSearchQueryWhereStep, LOS> select(SearchProjection... projections); } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQueryWhereStep.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQueryWhereStep.java index 04aa09d4e43..cfe93fdeb8c 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQueryWhereStep.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/LuceneSearchQueryWhereStep.java @@ -7,7 +7,7 @@ import org.hibernate.search.backend.lucene.search.predicate.dsl.LuceneSearchPredicateFactory; import org.hibernate.search.engine.search.query.dsl.SearchQueryWhereStep; -public interface LuceneSearchQueryWhereStep - extends SearchQueryWhereStep, H, LOS, LuceneSearchPredicateFactory> { +public interface LuceneSearchQueryWhereStep + extends SearchQueryWhereStep, H, LOS, LuceneSearchPredicateFactory> { } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/impl/LuceneSearchQueryOptionsStepImpl.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/impl/LuceneSearchQueryOptionsStepImpl.java index b7eec76fa5e..3515b979882 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/impl/LuceneSearchQueryOptionsStepImpl.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/impl/LuceneSearchQueryOptionsStepImpl.java @@ -18,18 +18,19 @@ import org.hibernate.search.engine.search.loading.spi.SearchLoadingContextBuilder; import org.hibernate.search.engine.search.query.dsl.spi.AbstractExtendedSearchQueryOptionsStep; -class LuceneSearchQueryOptionsStepImpl +class LuceneSearchQueryOptionsStepImpl extends AbstractExtendedSearchQueryOptionsStep< - LuceneSearchQueryOptionsStep, + SR, + LuceneSearchQueryOptionsStep, H, LuceneSearchResult, LuceneSearchScroll, LOS, - LuceneSearchPredicateFactory, - LuceneSearchSortFactory, - LuceneSearchAggregationFactory, + LuceneSearchPredicateFactory, + LuceneSearchSortFactory, + LuceneSearchAggregationFactory, LuceneSearchQueryIndexScope> - implements LuceneSearchQueryWhereStep, LuceneSearchQueryOptionsStep { + implements LuceneSearchQueryWhereStep, LuceneSearchQueryOptionsStep { private final LuceneSearchQueryBuilder searchQueryBuilder; @@ -46,22 +47,22 @@ public LuceneSearchQuery toQuery() { } @Override - protected LuceneSearchQueryOptionsStepImpl thisAsS() { + protected LuceneSearchQueryOptionsStepImpl thisAsS() { return this; } @Override - protected LuceneSearchPredicateFactory predicateFactory() { + protected LuceneSearchPredicateFactory predicateFactory() { return scope.predicateFactory(); } @Override - protected LuceneSearchSortFactory sortFactory() { + protected LuceneSearchSortFactory sortFactory() { return scope.sortFactory(); } @Override - protected LuceneSearchAggregationFactory aggregationFactory() { + protected LuceneSearchAggregationFactory aggregationFactory() { return scope.aggregationFactory(); } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/impl/LuceneSearchQuerySelectStepImpl.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/impl/LuceneSearchQuerySelectStepImpl.java index abf894ceefa..d9309793f54 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/impl/LuceneSearchQuerySelectStepImpl.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/dsl/impl/LuceneSearchQuerySelectStepImpl.java @@ -26,15 +26,16 @@ import org.hibernate.search.engine.search.projection.spi.ProjectionCompositor; import org.hibernate.search.engine.search.query.dsl.spi.AbstractSearchQuerySelectStep; -public class LuceneSearchQuerySelectStepImpl +public class LuceneSearchQuerySelectStepImpl extends AbstractSearchQuerySelectStep< - LuceneSearchQueryOptionsStep, + SR, + LuceneSearchQueryOptionsStep, R, E, LOS, - LuceneSearchProjectionFactory, - LuceneSearchPredicateFactory> - implements LuceneSearchQuerySelectStep { + LuceneSearchProjectionFactory, + LuceneSearchPredicateFactory> + implements LuceneSearchQuerySelectStep { private final LuceneSearchQueryIndexScope scope; private final BackendSessionContext sessionContext; @@ -49,56 +50,56 @@ public LuceneSearchQuerySelectStepImpl(LuceneSearchQueryIndexScope scope, } @Override - public LuceneSearchQueryWhereStep selectEntity() { - return select( scope.projectionFactory().entity().toProjection() ); + public LuceneSearchQueryWhereStep selectEntity() { + return select( scope.projectionFactory().entity().toProjection() ); } @Override - public LuceneSearchQueryWhereStep selectEntityReference() { + public LuceneSearchQueryWhereStep selectEntityReference() { return select( scope.projectionBuilders().entityReference() ); } @Override - public

LuceneSearchQueryWhereStep select(Class

objectClass) { + public

LuceneSearchQueryWhereStep select(Class

objectClass) { return select( scope.projectionFactory().composite().as( objectClass ).toProjection() ); } @Override - public

LuceneSearchQueryWhereStep select( - Function, ? extends ProjectionFinalStep

> projectionContributor) { + public

LuceneSearchQueryWhereStep select( + Function, ? extends ProjectionFinalStep

> projectionContributor) { SearchProjection

projection = projectionContributor.apply( scope.projectionFactory() ).toProjection(); return select( projection ); } @Override - public

LuceneSearchQueryWhereStep select(SearchProjection

projection) { + public

LuceneSearchQueryWhereStep select(SearchProjection

projection) { LuceneSearchQueryBuilder

builder = scope.select( sessionContext, loadingContextBuilder, projection ); return new LuceneSearchQueryOptionsStepImpl<>( scope, builder, loadingContextBuilder ); } @Override - public LuceneSearchQueryWhereStep, LOS> select(SearchProjection... projections) { + public LuceneSearchQueryWhereStep, LOS> select(SearchProjection... projections) { return select( scope.projectionBuilders().composite() .build( projections, ProjectionCompositor.fromList( projections.length ), ProjectionAccumulator.single() ) ); } @Override - public LuceneSearchQueryOptionsStep where(SearchPredicate predicate) { + public LuceneSearchQueryOptionsStep where(SearchPredicate predicate) { return selectEntity().where( predicate ); } @Override - public LuceneSearchQueryOptionsStep where( - Function predicateContributor) { + public LuceneSearchQueryOptionsStep where( + Function, ? extends PredicateFinalStep> predicateContributor) { return selectEntity().where( predicateContributor ); } @Override - public LuceneSearchQueryOptionsStep where( - BiConsumer> predicateContributor) { + public LuceneSearchQueryOptionsStep where( + BiConsumer, + ? super SimpleBooleanPredicateClausesCollector> predicateContributor) { return selectEntity().where( predicateContributor ); } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/impl/LuceneSearchQueryIndexScope.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/impl/LuceneSearchQueryIndexScope.java index e9568937880..026703216b8 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/impl/LuceneSearchQueryIndexScope.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/query/impl/LuceneSearchQueryIndexScope.java @@ -36,16 +36,16 @@

LuceneSearchQueryBuilder

select(BackendSessionContext sessionContext, SearchLoadingContextBuilder loadingContextBuilder, SearchProjection

projection); @Override - LuceneSearchPredicateFactory predicateFactory(); + LuceneSearchPredicateFactory predicateFactory(); @Override - LuceneSearchSortFactory sortFactory(); + LuceneSearchSortFactory sortFactory(); @Override - LuceneSearchProjectionFactory projectionFactory(); + LuceneSearchProjectionFactory projectionFactory(); @Override - LuceneSearchAggregationFactory aggregationFactory(); + LuceneSearchAggregationFactory aggregationFactory(); Query filterOrNull(String tenantId); diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/sort/dsl/LuceneSearchSortFactory.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/sort/dsl/LuceneSearchSortFactory.java index 089b619e4c9..452199ba1dd 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/sort/dsl/LuceneSearchSortFactory.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/sort/dsl/LuceneSearchSortFactory.java @@ -14,8 +14,8 @@ /** * A factory for search sorts with some Lucene-specific methods. */ -public interface LuceneSearchSortFactory - extends ExtendedSearchSortFactory { +public interface LuceneSearchSortFactory + extends ExtendedSearchSortFactory, LuceneSearchPredicateFactory> { /** * Order elements by a given Lucene {@link SortField}. @@ -24,7 +24,7 @@ public interface LuceneSearchSortFactory * @return A {@link SortThenStep} allowing the retrieval of the sort * or the chaining of other sorts. */ - SortThenStep fromLuceneSortField(SortField luceneSortField); + SortThenStep fromLuceneSortField(SortField luceneSortField); /** * Order elements by a given Lucene {@link Sort}. @@ -33,6 +33,6 @@ public interface LuceneSearchSortFactory * @return A {@link SortThenStep} allowing the retrieval of the sort * or the chaining of other sorts. */ - SortThenStep fromLuceneSort(Sort luceneSort); + SortThenStep fromLuceneSort(Sort luceneSort); } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/sort/dsl/impl/LuceneSearchSortFactoryImpl.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/sort/dsl/impl/LuceneSearchSortFactoryImpl.java index 4281a1156d6..925879d6e3a 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/sort/dsl/impl/LuceneSearchSortFactoryImpl.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/search/sort/dsl/impl/LuceneSearchSortFactoryImpl.java @@ -14,32 +14,33 @@ import org.apache.lucene.search.Sort; import org.apache.lucene.search.SortField; -public class LuceneSearchSortFactoryImpl +public class LuceneSearchSortFactoryImpl extends AbstractSearchSortFactory< - LuceneSearchSortFactory, + SR, + LuceneSearchSortFactory, LuceneSearchSortIndexScope, - LuceneSearchPredicateFactory> - implements LuceneSearchSortFactory { + LuceneSearchPredicateFactory> + implements LuceneSearchSortFactory { public LuceneSearchSortFactoryImpl( - SearchSortDslContext, LuceneSearchPredicateFactory> dslContext) { + SearchSortDslContext, LuceneSearchPredicateFactory> dslContext) { super( dslContext ); } @Override - public LuceneSearchSortFactory withRoot(String objectFieldPath) { - return new LuceneSearchSortFactoryImpl( dslContext.rescope( + public LuceneSearchSortFactory withRoot(String objectFieldPath) { + return new LuceneSearchSortFactoryImpl( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ), dslContext.predicateFactory().withRoot( objectFieldPath ) ) ); } @Override - public SortThenStep fromLuceneSortField(SortField luceneSortField) { + public SortThenStep fromLuceneSortField(SortField luceneSortField) { return staticThenStep( dslContext.scope().sortBuilders().fromLuceneSortField( luceneSortField ) ); } @Override - public SortThenStep fromLuceneSort(Sort luceneSort) { + public SortThenStep fromLuceneSort(Sort luceneSort) { return staticThenStep( dslContext.scope().sortBuilders().fromLuceneSort( luceneSort ) ); } diff --git a/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/binding/namedpredicate/SkuIdentifierBinder.java b/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/binding/namedpredicate/SkuIdentifierBinder.java index 9d45be57b0c..da1f2cb468f 100644 --- a/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/binding/namedpredicate/SkuIdentifierBinder.java +++ b/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/binding/namedpredicate/SkuIdentifierBinder.java @@ -88,8 +88,8 @@ public void write(DocumentElement target, String skuId, PropertyBridgeWriteConte private static class SkuIdentifierMatchPredicateDefinition implements PredicateDefinition { // <1> @Override - public SearchPredicate create(PredicateDefinitionContext context) { - SearchPredicateFactory f = context.predicate(); // <2> + public SearchPredicate create(PredicateDefinitionContext context) { + SearchPredicateFactory f = context.predicate(); // <2> String pattern = context.params().get( "pattern", String.class ); // <3> diff --git a/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/entrypoints/HibernateOrmEntryPointsIT.java b/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/entrypoints/HibernateOrmEntryPointsIT.java index 8497e988e6f..e1c8df2b9f3 100644 --- a/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/entrypoints/HibernateOrmEntryPointsIT.java +++ b/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/entrypoints/HibernateOrmEntryPointsIT.java @@ -102,12 +102,13 @@ void searchScope_fromSearchMapping() { // end::searchScope-fromSearchMapping[] Search.mapping( theSessionFactory ); // tag::searchScope-fromSearchMapping[] - SearchScope bookScope = searchMapping.scope( Book.class ); // <2> - SearchScope associateAndManagerScope = searchMapping.scope( Arrays.asList( Associate.class, Manager.class ) ); // <3> - SearchScope personScope = searchMapping.scope( Person.class ); // <4> - SearchScope personSubTypesScope = searchMapping.scope( Person.class, + SearchScope bookScope = searchMapping.scope( Book.class ); // <2> + SearchScope associateAndManagerScope = + searchMapping.scope( Arrays.asList( Associate.class, Manager.class ) ); // <3> + SearchScope personScope = searchMapping.scope( Person.class ); // <4> + SearchScope personSubTypesScope = searchMapping.scope( Person.class, Arrays.asList( "Manager", "Associate" ) ); // <5> - SearchScope allScope = searchMapping.scope( Object.class ); // <6> + SearchScope allScope = searchMapping.scope( Object.class ); // <6> // end::searchScope-fromSearchMapping[] assertThat( bookScope.includedTypes() ) .extracting( SearchIndexedEntity::jpaName ) @@ -134,13 +135,13 @@ void searchScope_fromSearchSession() { // end::searchScope-fromSearchSession[] Search.session( theSession ); // tag::searchScope-fromSearchSession[] - SearchScope bookScope = searchSession.scope( Book.class ); // <2> - SearchScope associateAndManagerScope = + SearchScope bookScope = searchSession.scope( Book.class ); // <2> + SearchScope associateAndManagerScope = searchSession.scope( Arrays.asList( Associate.class, Manager.class ) ); // <3> - SearchScope personScope = searchSession.scope( Person.class ); // <4> - SearchScope personSubTypesScope = searchSession.scope( Person.class, + SearchScope personScope = searchSession.scope( Person.class ); // <4> + SearchScope personSubTypesScope = searchSession.scope( Person.class, Arrays.asList( "Manager", "Associate" ) ); // <5> - SearchScope allScope = searchSession.scope( Object.class ); // <6> + SearchScope allScope = searchSession.scope( Object.class ); // <6> // end::searchScope-fromSearchSession[] assertThat( bookScope.includedTypes() ) .extracting( SearchIndexedEntity::jpaName ) diff --git a/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/gettingstarted/withhsearch/defaultanalysis/GettingStartedDefaultAnalysisIT.java b/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/gettingstarted/withhsearch/defaultanalysis/GettingStartedDefaultAnalysisIT.java index 9372014968a..9ac10fc6ffd 100644 --- a/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/gettingstarted/withhsearch/defaultanalysis/GettingStartedDefaultAnalysisIT.java +++ b/documentation/src/test/java/org/hibernate/search/documentation/mapper/orm/gettingstarted/withhsearch/defaultanalysis/GettingStartedDefaultAnalysisIT.java @@ -99,7 +99,7 @@ void test() { // Not shown: get the entity manager and open a transaction SearchSession searchSession = Search.session( entityManager ); // <1> - SearchScope scope = searchSession.scope( Book.class ); // <2> + SearchScope scope = searchSession.scope( Book.class ); // <2> SearchResult result = searchSession.search( scope ) // <3> .where( scope.predicate().match() // <4> diff --git a/documentation/src/test/java/org/hibernate/search/documentation/mapper/pojo/standalone/entrypoints/StandalonePojoEntryPointsIT.java b/documentation/src/test/java/org/hibernate/search/documentation/mapper/pojo/standalone/entrypoints/StandalonePojoEntryPointsIT.java index ffa4a9fc55c..97d93a883c6 100644 --- a/documentation/src/test/java/org/hibernate/search/documentation/mapper/pojo/standalone/entrypoints/StandalonePojoEntryPointsIT.java +++ b/documentation/src/test/java/org/hibernate/search/documentation/mapper/pojo/standalone/entrypoints/StandalonePojoEntryPointsIT.java @@ -114,12 +114,13 @@ void searchSession_withOptions() { @Test void searchScope_fromSearchMapping() { SearchMapping searchMapping = theSearchMapping; - SearchScope bookScope = searchMapping.scope( Book.class ); - SearchScope associateAndManagerScope = searchMapping.scope( Arrays.asList( Associate.class, Manager.class ) ); - SearchScope personScope = searchMapping.scope( Person.class ); - SearchScope personSubTypesScope = searchMapping.scope( Person.class, + SearchScope bookScope = searchMapping.scope( Book.class ); + SearchScope associateAndManagerScope = + searchMapping.scope( Arrays.asList( Associate.class, Manager.class ) ); + SearchScope personScope = searchMapping.scope( Person.class ); + SearchScope personSubTypesScope = searchMapping.scope( Person.class, Arrays.asList( "Manager", "Associate" ) ); - SearchScope allScope = searchMapping.scope( Object.class ); + SearchScope allScope = searchMapping.scope( Object.class ); assertThat( bookScope.includedTypes() ) .extracting( SearchIndexedEntity::name ) .containsExactlyInAnyOrder( "Book" ); @@ -141,13 +142,13 @@ void searchScope_fromSearchMapping() { void searchScope_fromSearchSession() { SearchMapping searchMapping = theSearchMapping; try ( SearchSession searchSession = searchMapping.createSession() ) { - SearchScope bookScope = searchSession.scope( Book.class ); - SearchScope associateAndManagerScope = + SearchScope bookScope = searchSession.scope( Book.class ); + SearchScope associateAndManagerScope = searchSession.scope( Arrays.asList( Associate.class, Manager.class ) ); - SearchScope personScope = searchSession.scope( Person.class ); - SearchScope personSubTypesScope = searchSession.scope( Person.class, + SearchScope personScope = searchSession.scope( Person.class ); + SearchScope personSubTypesScope = searchSession.scope( Person.class, Arrays.asList( "Manager", "Associate" ) ); - SearchScope allScope = searchSession.scope( Object.class ); + SearchScope allScope = searchSession.scope( Object.class ); assertThat( bookScope.includedTypes() ) .extracting( SearchIndexedEntity::name ) .containsExactlyInAnyOrder( "Book" ); diff --git a/documentation/src/test/java/org/hibernate/search/documentation/mapper/pojo/standalone/gettingstarted/withhsearch/defaultanalysis/GettingStartedDefaultAnalysisIT.java b/documentation/src/test/java/org/hibernate/search/documentation/mapper/pojo/standalone/gettingstarted/withhsearch/defaultanalysis/GettingStartedDefaultAnalysisIT.java index 2ea915c665b..5d299f90fcc 100644 --- a/documentation/src/test/java/org/hibernate/search/documentation/mapper/pojo/standalone/gettingstarted/withhsearch/defaultanalysis/GettingStartedDefaultAnalysisIT.java +++ b/documentation/src/test/java/org/hibernate/search/documentation/mapper/pojo/standalone/gettingstarted/withhsearch/defaultanalysis/GettingStartedDefaultAnalysisIT.java @@ -102,7 +102,7 @@ void test() { // tag::searching-objects[] try ( SearchSession session = searchMapping.createSession() ) { // <1> - SearchScope scope = session.scope( Book.class ); // <2> + SearchScope scope = session.scope( Book.class ); // <2> SearchResult result = session.search( scope ) // <3> .select( f -> f.id( Integer.class ) ) // <4> diff --git a/documentation/src/test/java/org/hibernate/search/documentation/search/aggregation/AggregationDslIT.java b/documentation/src/test/java/org/hibernate/search/documentation/search/aggregation/AggregationDslIT.java index 8279e3c38b8..262f8676b59 100644 --- a/documentation/src/test/java/org/hibernate/search/documentation/search/aggregation/AggregationDslIT.java +++ b/documentation/src/test/java/org/hibernate/search/documentation/search/aggregation/AggregationDslIT.java @@ -85,7 +85,7 @@ void entryPoint() { Search.session( entityManager ); // tag::entryPoint-objects[] - SearchScope scope = searchSession.scope( Book.class ); + SearchScope scope = searchSession.scope( Book.class ); AggregationKey> countsByGenreKey = AggregationKey.of( "countsByGenre" ); diff --git a/documentation/src/test/java/org/hibernate/search/documentation/search/paths/FieldPathsIT.java b/documentation/src/test/java/org/hibernate/search/documentation/search/paths/FieldPathsIT.java index 57ff3bcde03..b8cb092ad01 100644 --- a/documentation/src/test/java/org/hibernate/search/documentation/search/paths/FieldPathsIT.java +++ b/documentation/src/test/java/org/hibernate/search/documentation/search/paths/FieldPathsIT.java @@ -114,7 +114,7 @@ void withRoot() { } // tag::withRoot_method[] - private SearchPredicate matchFirstAndLastName(SearchPredicateFactory f, + private SearchPredicate matchFirstAndLastName(SearchPredicateFactory f, String firstName, String lastName) { return f.and( f.match().field( "firstName" ) // <1> diff --git a/documentation/src/test/java/org/hibernate/search/documentation/search/predicate/FieldReferenceIT.java b/documentation/src/test/java/org/hibernate/search/documentation/search/predicate/FieldReferenceIT.java new file mode 100644 index 00000000000..d2d5d67b7e8 --- /dev/null +++ b/documentation/src/test/java/org/hibernate/search/documentation/search/predicate/FieldReferenceIT.java @@ -0,0 +1,587 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.documentation.search.predicate; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.hibernate.search.util.impl.integrationtest.mapper.orm.OrmUtils.with; + +import java.util.List; +import java.util.function.Consumer; + +import jakarta.persistence.DiscriminatorColumn; +import jakarta.persistence.DiscriminatorType; +import jakarta.persistence.Embeddable; +import jakarta.persistence.Embedded; +import jakarta.persistence.Entity; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Id; +import jakarta.persistence.MappedSuperclass; + +import org.hibernate.search.documentation.testsupport.BackendConfigurations; +import org.hibernate.search.documentation.testsupport.DocumentationSetupHelper; +import org.hibernate.search.engine.backend.types.Projectable; +import org.hibernate.search.engine.search.common.ValueConvert; +import org.hibernate.search.engine.search.predicate.dsl.PredicateFinalStep; +import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; +import org.hibernate.search.engine.search.reference.object.ObjectFieldReference; +import org.hibernate.search.engine.search.reference.predicate.ExistsPredicateFieldReference; +import org.hibernate.search.engine.search.reference.predicate.MatchPredicateFieldReference; +import org.hibernate.search.engine.search.reference.predicate.QueryStringPredicateFieldReference; +import org.hibernate.search.engine.search.reference.projection.FieldProjectionFieldReference; +import org.hibernate.search.mapper.orm.Search; +import org.hibernate.search.mapper.orm.scope.HibernateOrmRootReferenceScope; +import org.hibernate.search.mapper.orm.scope.SearchScope; +import org.hibernate.search.mapper.orm.scope.SearchScopeProvider; +import org.hibernate.search.mapper.orm.session.SearchSession; +import org.hibernate.search.mapper.pojo.mapping.definition.annotation.FullTextField; +import org.hibernate.search.mapper.pojo.mapping.definition.annotation.GenericField; +import org.hibernate.search.mapper.pojo.mapping.definition.annotation.Indexed; +import org.hibernate.search.mapper.pojo.mapping.definition.annotation.IndexedEmbedded; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +class FieldReferenceIT { + + @RegisterExtension + public DocumentationSetupHelper setupHelper = DocumentationSetupHelper.withSingleBackend( BackendConfigurations.simple() ); + + private EntityManagerFactory entityManagerFactory; + + @BeforeEach + void setup() { + entityManagerFactory = setupHelper.start().setup( + MappedSuperclassThing.class, ContainingA.class, ContainingB.class, EmbeddedThing1.class, EmbeddedThing2.class, + EmbeddedThing3.class, ContainingASub1.class, ContainingASub2.class + ); + initData(); + } + + @Test + void smoke() { + withinSearchSession( searchSession -> { + + SearchScope scope = ContainingA__.INDEX.scope( searchSession ); + + assertThat( + searchSession.search( scope ) + .select( f -> f.field( ContainingA__.INDEX.a ) ) + .where( f -> f.bool() + .should( utilMethodForPredicate( f, ContainingA__.INDEX ) ) + .should( utilMethodForPredicate( f, ContainingA__.INDEX.e1 ) ) + .should( utilMethodForPredicate( f, ContainingA__.INDEX.e2 ) ) + ) + .fetchHits( 20 ) + ).containsOnly( "a" ); + + assertThat( + searchSession.search( ContainingA__.INDEX ) + .select( f -> f.field( ContainingA__.INDEX.a ) ) + .where( f -> f.match().field( ContainingA__.INDEX.sub1 ).matching( "a1" ) ) + .fetchHits( 20 ) + ).containsOnly( "a1" ); + + assertThat( + searchSession.search( ContainingA__.INDEX ) + .select( f -> f.field( ContainingA__.INDEX.a ) ) + .where( f -> utilMethodForPredicateNoProjection( f, ContainingA__.INDEX.e3 ) ) + .fetchHits( 20 ) + ).containsOnly( "a" ); + + } ); + } + + + public static > PredicateFinalStep utilMethodForPredicate( + SearchPredicateFactory factory, ContainingA_e1_e2_Intersection reference) { + return factory.match().field( reference.a() ).matching( "a" ); + } + + + public static PredicateFinalStep utilMethodForPredicateNoProjection( + SearchPredicateFactory factory, ContainingA_e1_e2_e3_Intersection reference) { + return factory.match().field( reference.a() ).matching( "a" ); + } + + @Test + void smoke2() { + withinSearchSession( searchSession -> { + + SearchScope scope = searchSession.scope( List.of( ContainingA.class ) ); + + assertThat( + searchSession.search( scope ) + .select( f -> f.field( "a" ) ) + .where( f -> f.exists().field( "commonSub" ) ) + .fetchHits( 20 ) + ).containsOnly( "a1", "a2" ); + + } ); + } + + private void initData() { + with( entityManagerFactory ).runInTransaction( entityManager -> { + ContainingA a = new ContainingA(); + a.id = 1L; + a.a = "a"; + a.e1 = new EmbeddedThing1(); + a.e2 = new EmbeddedThing1(); + a.e3 = new EmbeddedThing2(); + a.e1.a = "a"; + a.e1.b = "b"; + + a.e2.a = "a"; + a.e2.b = "b"; + + a.e3.a = "a"; + + // ------------------- + ContainingASub1 a1 = new ContainingASub1(); + a1.id = 2L; + a1.a = "a1"; + a1.e1 = new EmbeddedThing1(); + a1.e2 = new EmbeddedThing1(); + a1.e1.a = "a1"; + a1.e1.b = "b1"; + + a1.e2.a = "a1"; + a1.e2.b = "b1"; + + a1.commonSub = "a1"; + a1.sub1 = "a1"; + + // ------------------- + ContainingASub2 a2 = new ContainingASub2(); + a2.id = 3L; + a2.a = "a2"; + a2.e1 = new EmbeddedThing1(); + a2.e2 = new EmbeddedThing1(); + a2.e1.a = "a2"; + a2.e1.b = "b2"; + + a2.e2.a = "a2"; + a2.e2.b = "b2"; + + a2.commonSub = "a2"; + a2.sub2 = "a2"; + + // ------------------- + ContainingB b = new ContainingB(); + b.id = 10L; + b.a = "b"; + b.e2 = new EmbeddedThing3(); + b.e2.a = -100; + b.e3 = new EmbeddedThing3(); + b.e3.a = -10; + + + entityManager.persist( a ); + entityManager.persist( a1 ); + entityManager.persist( a2 ); + entityManager.persist( b ); + } ); + } + + @MappedSuperclass + public static class MappedSuperclassThing { + @Id + Long id; + + @FullTextField(projectable = Projectable.YES) + String a; + } + + @Indexed + @Entity + @DiscriminatorColumn(discriminatorType = DiscriminatorType.INTEGER) + public static class ContainingA extends MappedSuperclassThing { + @IndexedEmbedded + @Embedded + EmbeddedThing1 e1; + @IndexedEmbedded + @Embedded + EmbeddedThing1 e2; + @IndexedEmbedded + @Embedded + EmbeddedThing2 e3; + } + + @Embeddable + public static class EmbeddedThing1 { + @FullTextField(projectable = Projectable.YES) + String a; + @FullTextField(projectable = Projectable.YES) + String b; + // some other fields + } + + @Embeddable + public static class EmbeddedThing2 { + @FullTextField + String a; + // some other fields maybe different from EmbeddedThing1 + } + + @Entity + public static class ContainingASub1 extends ContainingA { + @FullTextField(projectable = Projectable.YES) + String sub1; + @FullTextField(projectable = Projectable.YES) + String commonSub; + } + + @Entity + public static class ContainingASub2 extends ContainingA { + @FullTextField(projectable = Projectable.YES) + String sub2; + @FullTextField(projectable = Projectable.YES) + String commonSub; + } + + @Entity + @Indexed + public static class ContainingB extends MappedSuperclassThing { + @IndexedEmbedded + EmbeddedThing3 e2; + @IndexedEmbedded + EmbeddedThing3 e3; + } + + @Embeddable + public static class EmbeddedThing3 { + @GenericField + Integer a; + // some other fields maybe different from EmbeddedThing1/EmbeddedThing2 + } + + + // IMPL_NOTE: note cannot use the EntityClassName_ since ORM picks it up and tries to its thing... + // so we'd need to come up with a different naming strategy... + public static class ContainingA__ + implements HibernateOrmRootReferenceScope, + ContainingA_e1_e2_Intersection { + + // IMPL_NOTE: Maybe let's use the INDEX name? + // also I'm thinking we can make it configurable and let the user decide how to call this variable... + public static final ContainingA__ INDEX = new ContainingA__(); + + public final ValueFieldReference1 a; + public final e1_ e1; + public final e2_ e2; + public final e3_ e3; + + // ContainingASub1 + public final ValueFieldReference1 sub1; + + // ContainingASub2 + public final ValueFieldReference1 sub2; + + public final ValueFieldReference1 commonSub; + + + public ContainingA__() { + a = ValueFieldReference1.of( "e2.a", ContainingA__.class, String.class, String.class, String.class ); + e1 = new e1_(); + e2 = new e2_(); + e3 = new e3_(); + sub1 = ValueFieldReference1.of( "sub1", ContainingA__.class, String.class, String.class, String.class ); + sub2 = ValueFieldReference1.of( "sub2", ContainingA__.class, String.class, String.class, String.class ); + commonSub = ValueFieldReference1.of( "commonSub", ContainingA__.class, String.class, String.class, String.class ); + } + + @Override + public SearchScope scope(SearchScopeProvider scopeProvider) { + return scopeProvider.scope( ContainingA.class ); + } + + @Override + public Class rootReferenceType() { + return ContainingA__.class; + } + + @Override + public ValueFieldReference1 a() { + return a; + } + + public static class e1_ + implements ObjectFieldReference, + ContainingA_e1_e2_Intersection { + + public final ValueFieldReference1 a; + public final ValueFieldReference1 b; + + public e1_() { + a = ValueFieldReference1.of( "e1.a", ContainingA__.class, String.class, String.class, String.class ); + b = ValueFieldReference1.of( "e1.b", ContainingA__.class, String.class, String.class, String.class ); + } + + @Override + public String absolutePath() { + return "e1"; + } + + @Override + public Class scopeRootType() { + return ContainingA__.class; + } + + @Override + public ValueFieldReference1 a() { + return a; + } + } + + public static class e2_ + implements ObjectFieldReference, + ContainingA_e1_e2_Intersection, + ContainingA_e1_e2_e3_Intersection { + + public final ValueFieldReference1 a; + public final ValueFieldReference1 b; + + public e2_() { + a = ValueFieldReference1.of( "e2.a", ContainingA__.class, String.class, String.class, String.class ); + b = ValueFieldReference1.of( "e2.b", ContainingA__.class, String.class, String.class, String.class ); + } + + @Override + public String absolutePath() { + return "e2"; + } + + @Override + public Class scopeRootType() { + return ContainingA__.class; + } + + @Override + public ValueFieldReference1 a() { + return a; + } + } + + public static class e3_ + implements ObjectFieldReference, + ContainingA_e1_e2_e3_Intersection { + + public final ValueFieldReference2 a; + + public e3_() { + a = ValueFieldReference2.of( "e3.a", ContainingA__.class, String.class, String.class ); + } + + @Override + public String absolutePath() { + return "e3"; + } + + @Override + public Class scopeRootType() { + return ContainingA__.class; + } + + @Override + public ValueFieldReference2 a() { + return a; + } + } + } + + public interface ContainingA_e1_e2_e3_Intersection { + + TraitsIntersection a(); + + interface TraitsIntersection + extends MatchPredicateFieldReference, + ExistsPredicateFieldReference, + QueryStringPredicateFieldReference { + + @Override + default ValueConvert valueConvert() { + return ValueConvert.YES; + } + } + } + + // the same field with the same traits: + public interface ContainingA_e1_e2_Intersection { + + TraitsIntersection a(); + + interface TraitsIntersection + extends FieldProjectionFieldReference, + MatchPredicateFieldReference, + ExistsPredicateFieldReference, + QueryStringPredicateFieldReference { + + @Override + default ValueConvert valueConvert() { + return ValueConvert.YES; + } + } + } + + public static class ValueFieldReference1 extends TypedFieldReference1 { + + public static ValueFieldReference1 of( + String path, + Class documentReferenceClass, + Class t, + Class v, + Class

p) { + return new ValueFieldReference1<>( path, documentReferenceClass, t, v, p ); + } + + private final TypedFieldReference1 noConverter; + private final TypedFieldReference1 string; + + public ValueFieldReference1(String absolutePath, Class containing, Class inputType, Class indexType, + Class

projectionType) { + super( absolutePath, ValueConvert.YES, containing, inputType, projectionType ); + this.noConverter = new TypedFieldReference1<>( absolutePath, ValueConvert.NO, containing, indexType, indexType ); + this.string = + new TypedFieldReference1<>( absolutePath, ValueConvert.PARSE, containing, String.class, String.class ); + } + + public TypedFieldReference1 noConverter() { + return noConverter; + } + + + public TypedFieldReference1 asString() { + return string; + } + + } + + public static class TypedFieldReference1 + implements FieldProjectionFieldReference, + MatchPredicateFieldReference, + ExistsPredicateFieldReference, + QueryStringPredicateFieldReference, + ContainingA_e1_e2_Intersection.TraitsIntersection, + ContainingA_e1_e2_e3_Intersection.TraitsIntersection { + + private final String absolutePath; + private final ValueConvert valueConvert; + private final Class containing; + private final Class input; + private final Class

projection; + + public TypedFieldReference1(String absolutePath, ValueConvert valueConvert, Class containing, Class input, + Class

projection) { + this.absolutePath = absolutePath; + this.valueConvert = valueConvert; + this.containing = containing; + this.input = input; + this.projection = projection; + } + + @Override + public String absolutePath() { + return absolutePath; + } + + @Override + public Class scopeRootType() { + return containing; + } + + @Override + public Class predicateType() { + return input; + } + + @Override + public ValueConvert valueConvert() { + return valueConvert; + } + + @Override + public Class

projectionType() { + return projection; + } + + } + + public static class ValueFieldReference2 extends TypedFieldReference2 { + + public static ValueFieldReference2 of( + String path, + Class documentReferenceClass, + Class t, + Class v) { + return new ValueFieldReference2<>( path, documentReferenceClass, t, v ); + } + + private final TypedFieldReference2 noConverter; + private final TypedFieldReference2 string; + + public ValueFieldReference2(String absolutePath, Class containing, Class inputType, Class indexType) { + super( absolutePath, ValueConvert.YES, containing, inputType ); + this.noConverter = new TypedFieldReference2<>( absolutePath, ValueConvert.NO, containing, indexType ); + this.string = + new TypedFieldReference2<>( absolutePath, ValueConvert.PARSE, containing, String.class ); + } + + public TypedFieldReference2 noConverter() { + return noConverter; + } + + + public TypedFieldReference2 asString() { + return string; + } + + } + + public static class TypedFieldReference2 + implements MatchPredicateFieldReference, + ExistsPredicateFieldReference, + QueryStringPredicateFieldReference, + ContainingA_e1_e2_e3_Intersection.TraitsIntersection { + + private final String absolutePath; + private final ValueConvert valueConvert; + private final Class containing; + private final Class input; + + public TypedFieldReference2(String absolutePath, ValueConvert valueConvert, Class containing, Class input) { + this.absolutePath = absolutePath; + this.valueConvert = valueConvert; + this.containing = containing; + this.input = input; + } + + @Override + public String absolutePath() { + return absolutePath; + } + + @Override + public Class scopeRootType() { + return containing; + } + + @Override + public Class predicateType() { + return input; + } + + @Override + public ValueConvert valueConvert() { + return valueConvert; + } + } + + private void withinSearchSession(Consumer action) { + with( entityManagerFactory ).runInTransaction( entityManager -> { + SearchSession searchSession = Search.session( entityManager ); + action.accept( searchSession ); + } ); + } +} diff --git a/documentation/src/test/java/org/hibernate/search/documentation/search/predicate/PredicateDslIT.java b/documentation/src/test/java/org/hibernate/search/documentation/search/predicate/PredicateDslIT.java index 382f16f035b..b74f6b0f333 100644 --- a/documentation/src/test/java/org/hibernate/search/documentation/search/predicate/PredicateDslIT.java +++ b/documentation/src/test/java/org/hibernate/search/documentation/search/predicate/PredicateDslIT.java @@ -118,7 +118,7 @@ void entryPoint() { Search.session( entityManager ); // tag::entryPoint-objects[] - SearchScope scope = searchSession.scope( Book.class ); + SearchScope scope = searchSession.scope( Book.class ); List result = searchSession.search( scope ) .where( scope.predicate().match().field( "title" ) diff --git a/documentation/src/test/java/org/hibernate/search/documentation/search/projection/ProjectionDslIT.java b/documentation/src/test/java/org/hibernate/search/documentation/search/projection/ProjectionDslIT.java index 51f29d3c9df..e60c8155a8b 100644 --- a/documentation/src/test/java/org/hibernate/search/documentation/search/projection/ProjectionDslIT.java +++ b/documentation/src/test/java/org/hibernate/search/documentation/search/projection/ProjectionDslIT.java @@ -95,7 +95,7 @@ void entryPoint() { Search.session( entityManager ); // tag::entryPoint-objects[] - SearchScope scope = searchSession.scope( Book.class ); + SearchScope scope = searchSession.scope( Book.class ); List result = searchSession.search( scope ) .select( scope.projection().field( "title", String.class ) diff --git a/documentation/src/test/java/org/hibernate/search/documentation/search/sort/SortDslIT.java b/documentation/src/test/java/org/hibernate/search/documentation/search/sort/SortDslIT.java index 637ef0454c4..dd974590a56 100644 --- a/documentation/src/test/java/org/hibernate/search/documentation/search/sort/SortDslIT.java +++ b/documentation/src/test/java/org/hibernate/search/documentation/search/sort/SortDslIT.java @@ -74,7 +74,7 @@ void entryPoint() { Search.session( entityManager ); // tag::entryPoint-objects[] - SearchScope scope = searchSession.scope( Book.class ); + SearchScope scope = searchSession.scope( Book.class ); List result = searchSession.search( scope ) .where( scope.predicate().matchAll().toPredicate() ) diff --git a/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/constructorparameter/MyFieldProjectionBinder.java b/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/constructorparameter/MyFieldProjectionBinder.java index c465bce7738..b7ecbd508bc 100644 --- a/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/constructorparameter/MyFieldProjectionBinder.java +++ b/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/constructorparameter/MyFieldProjectionBinder.java @@ -31,7 +31,7 @@ private MyProjectionDefinition(String fieldName) { } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.field( fieldName, String.class ) // <3> .toProjection(); diff --git a/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/multi/MyFieldProjectionBinder.java b/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/multi/MyFieldProjectionBinder.java index be6328e06e1..48fd458acae 100644 --- a/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/multi/MyFieldProjectionBinder.java +++ b/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/multi/MyFieldProjectionBinder.java @@ -31,7 +31,7 @@ public void bind(ProjectionBindingContext context) { private static class MyProjectionDefinition implements ProjectionDefinition> { // <4> @Override - public SearchProjection> create(SearchProjectionFactory factory, + public SearchProjection> create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.field( "tags", String.class ) .multi() // <4> diff --git a/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/param/annotation/MyFieldProjectionBinder.java b/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/param/annotation/MyFieldProjectionBinder.java index 84f89334d30..5c3317e60fb 100644 --- a/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/param/annotation/MyFieldProjectionBinder.java +++ b/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/param/annotation/MyFieldProjectionBinder.java @@ -39,7 +39,7 @@ public MyProjectionDefinition(String fieldName) { // <2> } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.field( fieldName, String.class ) // <3> .toProjection(); diff --git a/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/param/string/MyFieldProjectionBinder.java b/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/param/string/MyFieldProjectionBinder.java index 2ac61df482c..f98e6497247 100644 --- a/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/param/string/MyFieldProjectionBinder.java +++ b/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/param/string/MyFieldProjectionBinder.java @@ -32,7 +32,7 @@ public MyProjectionDefinition(String fieldName) { // <2> } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.field( fieldName, String.class ) // <3> .toProjection(); diff --git a/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/simple/MyFieldProjectionBinder.java b/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/simple/MyFieldProjectionBinder.java index 0260f47e7fb..e8b3cfdecc2 100644 --- a/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/simple/MyFieldProjectionBinder.java +++ b/documentation/src/test/java17/org/hibernate/search/documentation/mapper/orm/binding/projectionbinder/simple/MyFieldProjectionBinder.java @@ -29,7 +29,7 @@ public void bind(ProjectionBindingContext context) { // <2> private static class MyProjectionDefinition // <1> implements ProjectionDefinition { // <2> @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.field( "title", String.class ) // <3> .toProjection(); // <4> diff --git a/engine/src/main/java/org/hibernate/search/engine/mapper/mapping/impl/MappedIndexManagerImpl.java b/engine/src/main/java/org/hibernate/search/engine/mapper/mapping/impl/MappedIndexManagerImpl.java index c8291e96b78..64a9cd9bf9c 100644 --- a/engine/src/main/java/org/hibernate/search/engine/mapper/mapping/impl/MappedIndexManagerImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/mapper/mapping/impl/MappedIndexManagerImpl.java @@ -62,14 +62,14 @@ public IndexWorkspace createWorkspace(BackendMappingContext mappingContext, Set< } @Override - public MappedIndexScopeBuilder createScopeBuilder(BackendMappingContext mappingContext) { + public MappedIndexScopeBuilder createScopeBuilder(BackendMappingContext mappingContext) { return new MappedIndexScopeBuilderImpl<>( implementor, mappingContext ); } @Override - public void addTo(MappedIndexScopeBuilder builder) { - ( (MappedIndexScopeBuilderImpl) builder ).add( implementor ); + public void addTo(MappedIndexScopeBuilder builder) { + ( (MappedIndexScopeBuilderImpl) builder ).add( implementor ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/mapper/mapping/spi/MappedIndexManager.java b/engine/src/main/java/org/hibernate/search/engine/mapper/mapping/spi/MappedIndexManager.java index 3fc4e464eec..af672c96252 100644 --- a/engine/src/main/java/org/hibernate/search/engine/mapper/mapping/spi/MappedIndexManager.java +++ b/engine/src/main/java/org/hibernate/search/engine/mapper/mapping/spi/MappedIndexManager.java @@ -35,7 +35,7 @@ IndexIndexingPlan createIndexingPlan(BackendSessionContext sessionContext, IndexWorkspace createWorkspace(BackendMappingContext mappingContext, Set tenantId); - MappedIndexScopeBuilder createScopeBuilder(BackendMappingContext mappingContext); + MappedIndexScopeBuilder createScopeBuilder(BackendMappingContext mappingContext); - void addTo(MappedIndexScopeBuilder builder); + void addTo(MappedIndexScopeBuilder builder); } diff --git a/engine/src/main/java/org/hibernate/search/engine/mapper/scope/impl/MappedIndexScopeBuilderImpl.java b/engine/src/main/java/org/hibernate/search/engine/mapper/scope/impl/MappedIndexScopeBuilderImpl.java index 5496f1b6958..9efef954e10 100644 --- a/engine/src/main/java/org/hibernate/search/engine/mapper/scope/impl/MappedIndexScopeBuilderImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/mapper/scope/impl/MappedIndexScopeBuilderImpl.java @@ -10,7 +10,7 @@ import org.hibernate.search.engine.mapper.scope.spi.MappedIndexScope; import org.hibernate.search.engine.mapper.scope.spi.MappedIndexScopeBuilder; -public class MappedIndexScopeBuilderImpl implements MappedIndexScopeBuilder { +public class MappedIndexScopeBuilderImpl implements MappedIndexScopeBuilder { private final IndexScopeBuilder delegate; public MappedIndexScopeBuilderImpl(IndexManagerImplementor firstIndexManager, @@ -23,7 +23,7 @@ public void add(IndexManagerImplementor indexManager) { } @Override - public MappedIndexScope build() { + public MappedIndexScope build() { return new MappedIndexScopeImpl<>( delegate.build() ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/mapper/scope/impl/MappedIndexScopeImpl.java b/engine/src/main/java/org/hibernate/search/engine/mapper/scope/impl/MappedIndexScopeImpl.java index ef8150e3a9e..73666e53d9b 100644 --- a/engine/src/main/java/org/hibernate/search/engine/mapper/scope/impl/MappedIndexScopeImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/mapper/scope/impl/MappedIndexScopeImpl.java @@ -17,7 +17,7 @@ import org.hibernate.search.engine.search.query.dsl.impl.DefaultSearchQuerySelectStep; import org.hibernate.search.engine.search.sort.dsl.SearchSortFactory; -class MappedIndexScopeImpl implements MappedIndexScope { +class MappedIndexScopeImpl implements MappedIndexScope { private final IndexScope delegate; @@ -31,29 +31,29 @@ public String toString() { } @Override - public SearchQuerySelectStep, ?> search( + public SearchQuerySelectStep, ?> search( BackendSessionContext sessionContext, SearchLoadingContextBuilder loadingContextBuilder) { return new DefaultSearchQuerySelectStep<>( delegate.searchScope(), sessionContext, loadingContextBuilder ); } @Override - public SearchPredicateFactory predicate() { + public SearchPredicateFactory predicate() { return delegate.searchScope().predicateFactory(); } @Override - public SearchSortFactory sort() { + public SearchSortFactory sort() { return delegate.searchScope().sortFactory(); } @Override - public SearchProjectionFactory projection() { + public SearchProjectionFactory projection() { return delegate.searchScope().projectionFactory(); } @Override - public SearchAggregationFactory aggregation() { + public SearchAggregationFactory aggregation() { return delegate.searchScope().aggregationFactory(); } diff --git a/engine/src/main/java/org/hibernate/search/engine/mapper/scope/spi/MappedIndexScope.java b/engine/src/main/java/org/hibernate/search/engine/mapper/scope/spi/MappedIndexScope.java index 3c0d20969b8..c9e85aaf2a0 100644 --- a/engine/src/main/java/org/hibernate/search/engine/mapper/scope/spi/MappedIndexScope.java +++ b/engine/src/main/java/org/hibernate/search/engine/mapper/scope/spi/MappedIndexScope.java @@ -15,6 +15,7 @@ import org.hibernate.search.engine.search.sort.dsl.SearchSortFactory; /** + * @param Scope root type. * @param The type of entity references, i.e. the type of hits returned by * {@link SearchQuerySelectStep#selectEntityReference() reference queries}, * or the type of objects returned for {@link SearchProjectionFactory#entityReference() entity reference projections}. @@ -22,7 +23,7 @@ * {@link SearchQuerySelectStep#selectEntity() entity queries} * or the type of objects returned for {@link SearchProjectionFactory#entity() entity projections}. */ -public interface MappedIndexScope { +public interface MappedIndexScope { /* * IMPLEMENTATION NOTE: we *must* only accept a loading context with the same R/E type parameters as this class, @@ -30,22 +31,22 @@ public interface MappedIndexScope { * will be wrong. * In particular, we cannot accept a LoadingContextBuilder with any T. */ - SearchQuerySelectStep, ?> search( + SearchQuerySelectStep, ?> search( BackendSessionContext sessionContext, SearchLoadingContextBuilder loadingContextBuilder); - SearchPredicateFactory predicate(); + SearchPredicateFactory predicate(); - SearchSortFactory sort(); + SearchSortFactory sort(); /* * IMPLEMENTATION NOTE: we *must* return a factory with the same R/E type arguments as this class, * otherwise some casts in EntityProjectionOptionsStepImpl and EntityReferenceProjectionOptionsStepImpl * will be wrong. */ - SearchProjectionFactory projection(); + SearchProjectionFactory projection(); - SearchAggregationFactory aggregation(); + SearchAggregationFactory aggregation(); SearchHighlighterFactory highlighter(); diff --git a/engine/src/main/java/org/hibernate/search/engine/mapper/scope/spi/MappedIndexScopeBuilder.java b/engine/src/main/java/org/hibernate/search/engine/mapper/scope/spi/MappedIndexScopeBuilder.java index 485aa5b0006..415a8c8318f 100644 --- a/engine/src/main/java/org/hibernate/search/engine/mapper/scope/spi/MappedIndexScopeBuilder.java +++ b/engine/src/main/java/org/hibernate/search/engine/mapper/scope/spi/MappedIndexScopeBuilder.java @@ -5,8 +5,8 @@ package org.hibernate.search.engine.mapper.scope.spi; -public interface MappedIndexScopeBuilder { +public interface MappedIndexScopeBuilder { - MappedIndexScope build(); + MappedIndexScope build(); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/AggregationFilterStep.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/AggregationFilterStep.java index bb7430e7d1d..09fc32d46a6 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/AggregationFilterStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/AggregationFilterStep.java @@ -14,10 +14,11 @@ * The step in an aggregation definition where a filter can be set * to select nested objects from which values will be extracted for this aggregation. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step) * @param The type of factory used to create predicates in {@link #filter(Function)}. */ -public interface AggregationFilterStep { +public interface AggregationFilterStep> { /** * Filter nested objects from which values will be extracted for this aggregation. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/ExtendedSearchAggregationFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/ExtendedSearchAggregationFactory.java index 4d19b9f378e..0c0f0fd1132 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/ExtendedSearchAggregationFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/ExtendedSearchAggregationFactory.java @@ -13,22 +13,24 @@ * easily override the self type and predicate factory type for all relevant methods. *

* Warning: Generic parameters of this type are subject to change, - * so this type should not be referenced directtly in user code. + * so this type should not be referenced directly in user code. * + * @param Scope root type. * @param The self type, i.e. the exposed type of this factory. * @param The type of factory used to create predicates in {@link AggregationFilterStep#filter(Function)}. */ public interface ExtendedSearchAggregationFactory< - S extends ExtendedSearchAggregationFactory, - PDF extends SearchPredicateFactory> - extends SearchAggregationFactory { + SR, + S extends ExtendedSearchAggregationFactory, + PDF extends SearchPredicateFactory> + extends SearchAggregationFactory { @Override S withRoot(String objectFieldPath); @Override - RangeAggregationFieldStep range(); + RangeAggregationFieldStep range(); @Override - TermsAggregationFieldStep terms(); + TermsAggregationFieldStep terms(); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationFieldStep.java index cadaf620e04..45cfb8ecfc0 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationFieldStep.java @@ -8,13 +8,15 @@ import org.hibernate.search.engine.search.common.ValueModel; import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; +import org.hibernate.search.engine.search.reference.aggregation.RangeAggregationFieldReference; /** * The initial step in a "range" aggregation definition, where the target field can be set. * + * @param Scope root type. * @param The type of factory used to create predicates in {@link AggregationFilterStep#filter(Function)}. */ -public interface RangeAggregationFieldStep { +public interface RangeAggregationFieldStep> { /** * Target the given field in the range aggregation. @@ -24,7 +26,7 @@ public interface RangeAggregationFieldStep { * @param The type of field values. * @return The next step. */ - default RangeAggregationRangeStep field(String fieldPath, Class type) { + default RangeAggregationRangeStep field(String fieldPath, Class type) { return field( fieldPath, type, ValueModel.MAPPING ); } @@ -40,7 +42,7 @@ default RangeAggregationRangeStep field(String fieldPath, Class RangeAggregationRangeStep field(String fieldPath, Class type, + default RangeAggregationRangeStep field(String fieldPath, Class type, org.hibernate.search.engine.search.common.ValueConvert convert) { return field( fieldPath, type, org.hibernate.search.engine.search.common.ValueConvert.toValueModel( convert ) ); @@ -56,6 +58,17 @@ default RangeAggregationRangeStep field(String fieldPath, Class RangeAggregationRangeStep field(String fieldPath, Class type, ValueModel valueModel); + RangeAggregationRangeStep field(String fieldPath, Class type, ValueModel valueModel); + + /** + * Target the given field in the range aggregation. + * + * @param fieldReference The field reference representing a path to the index field to aggregate. + * @param The type of field values. + * @return The next step. + */ + default RangeAggregationRangeStep field(RangeAggregationFieldReference fieldReference) { + return field( fieldReference.absolutePath(), fieldReference.aggregationType(), fieldReference.valueModel() ); + } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationOptionsStep.java index 685fd23c546..2f6cef5c793 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationOptionsStep.java @@ -11,16 +11,18 @@ /** * The final step in a "range" aggregation definition, where optional parameters can be set. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). * @param The type of factory used to create predicates in {@link #filter(Function)}. * @param The type of the targeted field. * @param The type of result for this aggregation. */ public interface RangeAggregationOptionsStep< - S extends RangeAggregationOptionsStep, - PDF extends SearchPredicateFactory, + SR, + S extends RangeAggregationOptionsStep, + PDF extends SearchPredicateFactory, F, A> - extends AggregationFinalStep, AggregationFilterStep { + extends AggregationFinalStep, AggregationFilterStep { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationRangeMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationRangeMoreStep.java index bd3b127f4c0..3e04669fedd 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationRangeMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationRangeMoreStep.java @@ -15,17 +15,19 @@ * (see the superinterface {@link RangeAggregationOptionsStep}), * or more ranges can be added. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). * @param The type of factory used to create predicates in {@link #filter(Function)}. * @param The type of the next step. * @param The type of the targeted field. */ public interface RangeAggregationRangeMoreStep< - S extends RangeAggregationRangeMoreStep, - N extends RangeAggregationOptionsStep, Long>>, - PDF extends SearchPredicateFactory, + SR, + S extends RangeAggregationRangeMoreStep, + N extends RangeAggregationOptionsStep, Long>>, + PDF extends SearchPredicateFactory, F> - extends RangeAggregationOptionsStep, Long>>, - RangeAggregationRangeStep { + extends RangeAggregationOptionsStep, Long>>, + RangeAggregationRangeStep { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationRangeStep.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationRangeStep.java index 90f63322c27..2bfb337ce9b 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationRangeStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/RangeAggregationRangeStep.java @@ -13,13 +13,15 @@ /** * The step in a "range" aggregation definition where the ranges can be set. * + * @param Scope root type. * @param The type of the next step. * @param The type of factory used to create predicates in {@link AggregationFilterStep#filter(Function)}. * @param The type of the targeted field. */ public interface RangeAggregationRangeStep< - N extends RangeAggregationRangeMoreStep, - PDF extends SearchPredicateFactory, + SR, + N extends RangeAggregationRangeMoreStep, + PDF extends SearchPredicateFactory, F> { /** diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/SearchAggregationFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/SearchAggregationFactory.java index 3d33bc626a9..ac18b726dfa 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/SearchAggregationFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/SearchAggregationFactory.java @@ -27,9 +27,11 @@ * Such a factory can also transform relative paths into absolute paths using {@link #toAbsolutePath(String)}; * this can be useful for native aggregations in particular. * + * @param Scope root type. + * * @author Emmanuel Bernard emmanuel@hibernate.org */ -public interface SearchAggregationFactory { +public interface SearchAggregationFactory { /** * Perform aggregation in range buckets. @@ -44,7 +46,7 @@ public interface SearchAggregationFactory { * * @return The next step. */ - RangeAggregationFieldStep range(); + RangeAggregationFieldStep range(); /** * Perform aggregation in term buckets. @@ -59,7 +61,7 @@ public interface SearchAggregationFactory { * * @return The next step. */ - TermsAggregationFieldStep terms(); + TermsAggregationFieldStep terms(); /** @@ -83,7 +85,7 @@ AggregationFinalStep withParameters( * @return The extended factory. * @throws SearchException If the extension cannot be applied (wrong underlying backend, ...). */ - T extension(SearchAggregationFactoryExtension extension); + T extension(SearchAggregationFactoryExtension extension); /** * Create a new aggregation factory whose root for all paths passed to the DSL @@ -95,7 +97,7 @@ AggregationFinalStep withParameters( * @return A new aggregation factory using the given object field as root. */ @Incubating - SearchAggregationFactory withRoot(String objectFieldPath); + SearchAggregationFactory withRoot(String objectFieldPath); /** * @param relativeFieldPath The path to a field, relative to the {@link #withRoot(String) root} of this factory. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/SearchAggregationFactoryExtension.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/SearchAggregationFactoryExtension.java index 2797fac943b..c0efcede5cd 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/SearchAggregationFactoryExtension.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/SearchAggregationFactoryExtension.java @@ -14,13 +14,14 @@ * In short, users are only expected to get instances of this type from an API ({@code SomeExtension.get()}) * and pass it to another API. * + * @param Scope root type. * @param The type of extended aggregation factories. Should generally extend * {@link SearchAggregationFactory}. * * @see SearchAggregationFactory#extension(SearchAggregationFactoryExtension) * @see ExtendedSearchAggregationFactory */ -public interface SearchAggregationFactoryExtension { +public interface SearchAggregationFactoryExtension { /** * Attempt to extend a given factory, returning an empty {@link Optional} in case of failure. @@ -31,6 +32,6 @@ public interface SearchAggregationFactoryExtension { * @return An optional containing the extended aggregation factory ({@link T}) in case * of success, or an empty optional otherwise. */ - Optional extendOptional(SearchAggregationFactory original); + Optional extendOptional(SearchAggregationFactory original); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/TermsAggregationFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/TermsAggregationFieldStep.java index 25feec796f6..8b88af62dfb 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/TermsAggregationFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/TermsAggregationFieldStep.java @@ -9,13 +9,15 @@ import org.hibernate.search.engine.search.common.ValueModel; import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; +import org.hibernate.search.engine.search.reference.aggregation.TermsAggregationFieldReference; /** * The initial step in a "terms" aggregation definition, where the target field can be set. * + * @param Scope root type. * @param The type of factory used to create predicates in {@link AggregationFilterStep#filter(Function)}. */ -public interface TermsAggregationFieldStep { +public interface TermsAggregationFieldStep> { /** * Target the given field in the terms aggregation. @@ -25,7 +27,7 @@ public interface TermsAggregationFieldStep { * @param The type of field values. * @return The next step. */ - default TermsAggregationOptionsStep> field(String fieldPath, Class type) { + default TermsAggregationOptionsStep> field(String fieldPath, Class type) { return field( fieldPath, type, ValueModel.MAPPING ); } @@ -41,7 +43,7 @@ default TermsAggregationOptionsStep> field(String fi * @deprecated Use {@link #field(String, Class, ValueModel)} instead. */ @Deprecated - default TermsAggregationOptionsStep> field(String fieldPath, Class type, + default TermsAggregationOptionsStep> field(String fieldPath, Class type, org.hibernate.search.engine.search.common.ValueConvert convert) { return field( fieldPath, type, org.hibernate.search.engine.search.common.ValueConvert.toValueModel( convert ) ); @@ -57,7 +59,19 @@ default TermsAggregationOptionsStep> field(String fi * See {@link ValueModel}. * @return The next step. */ - TermsAggregationOptionsStep> field(String fieldPath, Class type, + TermsAggregationOptionsStep> field(String fieldPath, Class type, ValueModel valueModel); + /** + * Target the given field in the terms aggregation. + * + * @param fieldReference The field reference representing a path to the index field to aggregate. + * @param The type of field values. + * @return The next step. + */ + default TermsAggregationOptionsStep> field( + TermsAggregationFieldReference fieldReference) { + return field( fieldReference.absolutePath(), fieldReference.aggregationType(), fieldReference.valueModel() ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/TermsAggregationOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/TermsAggregationOptionsStep.java index fb558d40662..22fbf84f1ca 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/TermsAggregationOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/TermsAggregationOptionsStep.java @@ -17,11 +17,12 @@ * @param The type of result for this aggregation. */ public interface TermsAggregationOptionsStep< - S extends TermsAggregationOptionsStep, - PDF extends SearchPredicateFactory, + SR, + S extends TermsAggregationOptionsStep, + PDF extends SearchPredicateFactory, F, A> - extends AggregationFinalStep, AggregationFilterStep { + extends AggregationFinalStep, AggregationFilterStep { /** * Order buckets by descending document count in the aggregation result. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/RangeAggregationFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/RangeAggregationFieldStepImpl.java index 235ccc6eba8..f97b7f07088 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/RangeAggregationFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/RangeAggregationFieldStepImpl.java @@ -13,15 +13,16 @@ import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; import org.hibernate.search.util.common.impl.Contracts; -public class RangeAggregationFieldStepImpl implements RangeAggregationFieldStep { - private final SearchAggregationDslContext dslContext; +public class RangeAggregationFieldStepImpl> + implements RangeAggregationFieldStep { + private final SearchAggregationDslContext dslContext; - public RangeAggregationFieldStepImpl(SearchAggregationDslContext dslContext) { + public RangeAggregationFieldStepImpl(SearchAggregationDslContext dslContext) { this.dslContext = dslContext; } @Override - public RangeAggregationRangeStep field(String fieldPath, Class type, + public RangeAggregationRangeStep field(String fieldPath, Class type, ValueModel valueModel) { Contracts.assertNotNull( fieldPath, "fieldPath" ); Contracts.assertNotNull( type, "type" ); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/RangeAggregationRangeStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/RangeAggregationRangeStepImpl.java index b24883857fd..454a6c00ac2 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/RangeAggregationRangeStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/RangeAggregationRangeStepImpl.java @@ -19,27 +19,31 @@ import org.hibernate.search.util.common.data.Range; import org.hibernate.search.util.common.impl.Contracts; -class RangeAggregationRangeStepImpl - implements RangeAggregationRangeStep, PDF, F>, - RangeAggregationRangeMoreStep, RangeAggregationRangeStepImpl, PDF, F> { +class RangeAggregationRangeStepImpl, F> + implements RangeAggregationRangeStep, PDF, F>, + RangeAggregationRangeMoreStep, + RangeAggregationRangeStepImpl, + PDF, + F> { private final RangeAggregationBuilder builder; - private final SearchAggregationDslContext dslContext; + private final SearchAggregationDslContext dslContext; RangeAggregationRangeStepImpl(RangeAggregationBuilder builder, - SearchAggregationDslContext dslContext) { + SearchAggregationDslContext dslContext) { this.builder = builder; this.dslContext = dslContext; } @Override - public RangeAggregationRangeStepImpl range(Range range) { + public RangeAggregationRangeStepImpl range(Range range) { Contracts.assertNotNull( range, "range" ); builder.range( range ); return this; } @Override - public RangeAggregationRangeStepImpl ranges(Collection> ranges) { + public RangeAggregationRangeStepImpl ranges(Collection> ranges) { Contracts.assertNotNull( ranges, "ranges" ); for ( Range range : ranges ) { range( range ); @@ -48,7 +52,7 @@ public RangeAggregationRangeStepImpl ranges(Collection filter( + public RangeAggregationRangeStepImpl filter( Function clauseContributor) { SearchPredicate predicate = clauseContributor.apply( dslContext.predicateFactory() ).toPredicate(); @@ -56,7 +60,7 @@ public RangeAggregationRangeStepImpl filter( } @Override - public RangeAggregationRangeStepImpl filter(SearchPredicate searchPredicate) { + public RangeAggregationRangeStepImpl filter(SearchPredicate searchPredicate) { builder.filter( searchPredicate ); return this; } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/TermsAggregationFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/TermsAggregationFieldStepImpl.java index 04457e78af5..a0d735b13fa 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/TermsAggregationFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/TermsAggregationFieldStepImpl.java @@ -15,15 +15,16 @@ import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; import org.hibernate.search.util.common.impl.Contracts; -public class TermsAggregationFieldStepImpl implements TermsAggregationFieldStep { - private final SearchAggregationDslContext dslContext; +public class TermsAggregationFieldStepImpl> + implements TermsAggregationFieldStep { + private final SearchAggregationDslContext dslContext; - public TermsAggregationFieldStepImpl(SearchAggregationDslContext dslContext) { + public TermsAggregationFieldStepImpl(SearchAggregationDslContext dslContext) { this.dslContext = dslContext; } @Override - public TermsAggregationOptionsStep> field(String fieldPath, Class type, + public TermsAggregationOptionsStep> field(String fieldPath, Class type, ValueModel valueModel) { Contracts.assertNotNull( fieldPath, "fieldPath" ); Contracts.assertNotNull( type, "type" ); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/TermsAggregationOptionsStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/TermsAggregationOptionsStepImpl.java index 6e17df085f0..e0ddea57e2f 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/TermsAggregationOptionsStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/TermsAggregationOptionsStepImpl.java @@ -16,57 +16,57 @@ import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; import org.hibernate.search.util.common.impl.Contracts; -class TermsAggregationOptionsStepImpl - implements TermsAggregationOptionsStep, PDF, F, Map> { +class TermsAggregationOptionsStepImpl, F> + implements TermsAggregationOptionsStep, PDF, F, Map> { private final TermsAggregationBuilder builder; - private final SearchAggregationDslContext dslContext; + private final SearchAggregationDslContext dslContext; TermsAggregationOptionsStepImpl(TermsAggregationBuilder builder, - SearchAggregationDslContext dslContext) { + SearchAggregationDslContext dslContext) { this.builder = builder; this.dslContext = dslContext; } @Override - public TermsAggregationOptionsStepImpl orderByCountDescending() { + public TermsAggregationOptionsStepImpl orderByCountDescending() { builder.orderByCountDescending(); return this; } @Override - public TermsAggregationOptionsStepImpl orderByCountAscending() { + public TermsAggregationOptionsStepImpl orderByCountAscending() { builder.orderByCountAscending(); return this; } @Override - public TermsAggregationOptionsStepImpl orderByTermAscending() { + public TermsAggregationOptionsStepImpl orderByTermAscending() { builder.orderByTermAscending(); return this; } @Override - public TermsAggregationOptionsStepImpl orderByTermDescending() { + public TermsAggregationOptionsStepImpl orderByTermDescending() { builder.orderByTermDescending(); return this; } @Override - public TermsAggregationOptionsStepImpl minDocumentCount(int minDocumentCount) { + public TermsAggregationOptionsStepImpl minDocumentCount(int minDocumentCount) { Contracts.assertPositiveOrZero( minDocumentCount, "minDocumentCount" ); builder.minDocumentCount( minDocumentCount ); return this; } @Override - public TermsAggregationOptionsStepImpl maxTermCount(int maxTermCount) { + public TermsAggregationOptionsStepImpl maxTermCount(int maxTermCount) { Contracts.assertStrictlyPositive( maxTermCount, "maxTermCount" ); builder.maxTermCount( maxTermCount ); return this; } @Override - public TermsAggregationOptionsStepImpl filter( + public TermsAggregationOptionsStepImpl filter( Function clauseContributor) { SearchPredicate predicate = clauseContributor.apply( dslContext.predicateFactory() ).toPredicate(); @@ -74,7 +74,7 @@ public TermsAggregationOptionsStepImpl filter( } @Override - public TermsAggregationOptionsStepImpl filter(SearchPredicate searchPredicate) { + public TermsAggregationOptionsStepImpl filter(SearchPredicate searchPredicate) { builder.filter( searchPredicate ); return this; } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/WithParametersAggregationFinalStep.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/WithParametersAggregationFinalStep.java index 911cb41717a..c6f67dd7e70 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/WithParametersAggregationFinalStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/impl/WithParametersAggregationFinalStep.java @@ -17,7 +17,7 @@ public class WithParametersAggregationFinalStep implements AggregationFinalSt private final WithParametersAggregationBuilder builder; public WithParametersAggregationFinalStep( - SearchAggregationDslContext dslContext, + SearchAggregationDslContext dslContext, Function> aggregationCreator) { builder = dslContext.scope().aggregationBuilders().withParameters(); builder.creator( aggregationCreator ); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/spi/AbstractSearchAggregationFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/spi/AbstractSearchAggregationFactory.java index 7f88ffaa996..b8c690a8519 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/spi/AbstractSearchAggregationFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/spi/AbstractSearchAggregationFactory.java @@ -20,24 +20,25 @@ import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; public abstract class AbstractSearchAggregationFactory< - S extends ExtendedSearchAggregationFactory, + SR, + S extends ExtendedSearchAggregationFactory, SC extends SearchAggregationIndexScope, - PDF extends SearchPredicateFactory> - implements ExtendedSearchAggregationFactory { + PDF extends SearchPredicateFactory> + implements ExtendedSearchAggregationFactory { - protected final SearchAggregationDslContext dslContext; + protected final SearchAggregationDslContext dslContext; - public AbstractSearchAggregationFactory(SearchAggregationDslContext dslContext) { + public AbstractSearchAggregationFactory(SearchAggregationDslContext dslContext) { this.dslContext = dslContext; } @Override - public RangeAggregationFieldStep range() { + public RangeAggregationFieldStep range() { return new RangeAggregationFieldStepImpl<>( dslContext ); } @Override - public TermsAggregationFieldStep terms() { + public TermsAggregationFieldStep terms() { return new TermsAggregationFieldStepImpl<>( dslContext ); } @@ -48,7 +49,7 @@ public AggregationFinalStep withParameters( } @Override - public T extension(SearchAggregationFactoryExtension extension) { + public T extension(SearchAggregationFactoryExtension extension) { return DslExtensionState.returnIfSupported( extension, extension.extendOptional( this ) ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/spi/SearchAggregationDslContext.java b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/spi/SearchAggregationDslContext.java index f8b5e2f0c34..aaff67aded2 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/spi/SearchAggregationDslContext.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/aggregation/dsl/spi/SearchAggregationDslContext.java @@ -14,13 +14,19 @@ * Represents the current context in the search DSL, * including in particular the search scope and the aggregation builder factory. * + * @param Scope root type. * * @param The type of the backend-specific search scope. * @param The type of factory used to create predicates in {@link FieldSortOptionsStep#filter(Function)}. */ -public class SearchAggregationDslContext, PDF extends SearchPredicateFactory> { +public class SearchAggregationDslContext< + SR, + SC extends SearchAggregationIndexScope, + PDF extends SearchPredicateFactory> { public static < + SR, SC extends SearchAggregationIndexScope, - PDF extends SearchPredicateFactory> SearchAggregationDslContext root(SC scope, PDF predicateFactory) { + PDF extends SearchPredicateFactory> SearchAggregationDslContext root(SC scope, + PDF predicateFactory) { return new SearchAggregationDslContext<>( scope, predicateFactory ); } @@ -44,7 +50,7 @@ public SC scope() { * @param newPredicateFactory The new predicate factory for the new DSL context. * @return A copy of this DSL context with its scope and predicate factory replaced with the given ones. */ - public SearchAggregationDslContext rescope(SC newScope, PDF newPredicateFactory) { + public SearchAggregationDslContext rescope(SC newScope, PDF newPredicateFactory) { return new SearchAggregationDslContext<>( newScope, newPredicateFactory ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/definition/PredicateDefinition.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/definition/PredicateDefinition.java index 6ee6cc84d17..421aee77969 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/definition/PredicateDefinition.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/definition/PredicateDefinition.java @@ -28,6 +28,6 @@ public interface PredicateDefinition { * @param context The context, exposing in particular a {@link SearchPredicateFactory}. * @return The created {@link SearchPredicate}. */ - SearchPredicate create(PredicateDefinitionContext context); + SearchPredicate create(PredicateDefinitionContext context); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/definition/PredicateDefinitionContext.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/definition/PredicateDefinitionContext.java index 83861652a72..d29731dfe97 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/definition/PredicateDefinitionContext.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/definition/PredicateDefinitionContext.java @@ -13,21 +13,22 @@ import org.hibernate.search.util.common.annotation.Incubating; /** - * The context passed to {@link PredicateDefinition#create(PredicateDefinitionContext)}. + * The context passed to {@link PredicateDefinition#create(PredicateDefinitionContext)}. + * @param Scope root type. * @see PredicateDefinition#create(PredicateDefinitionContext) */ @Incubating -public interface PredicateDefinitionContext { +public interface PredicateDefinitionContext { /** * @return A predicate factory. * If the named predicate was registered on an object field, * this factory expects field paths to be provided relative to that same object field. * This factory is only valid in the present context and must not be used after - * {@link PredicateDefinition#create(PredicateDefinitionContext)} returns. + * {@link PredicateDefinition#create(PredicateDefinitionContext)} returns. * @see SearchPredicateFactory */ - SearchPredicateFactory predicate(); + SearchPredicateFactory predicate(); /** * @param name The name of the parameter. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/BooleanPredicateClausesStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/BooleanPredicateClausesStep.java index 11d9a733a05..d02a0613a2c 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/BooleanPredicateClausesStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/BooleanPredicateClausesStep.java @@ -9,9 +9,10 @@ *

* Different types of clauses have different effects, see {@link BooleanPredicateOptionsCollector}. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). */ -public interface BooleanPredicateClausesStep> - extends GenericBooleanPredicateClausesStep> { +public interface BooleanPredicateClausesStep> + extends GenericBooleanPredicateClausesStep> { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/BooleanPredicateOptionsCollector.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/BooleanPredicateOptionsCollector.java index 05e3376ec5b..1f2c3c00031 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/BooleanPredicateOptionsCollector.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/BooleanPredicateOptionsCollector.java @@ -60,7 +60,7 @@ * * @param The "self" type (the actual exposed type of this collector). */ -public interface BooleanPredicateOptionsCollector> +public interface BooleanPredicateOptionsCollector> extends CommonMinimumShouldMatchOptionsStep { /** @@ -167,7 +167,7 @@ default S filter(PredicateFinalStep dslFinalStep) { * Should generally be a lambda expression. * @return {@code this}, for method chaining. */ - S must(Function clauseContributor); + S must(Function, ? extends PredicateFinalStep> clauseContributor); /** * Add a "must not" clause to be defined by the given function. @@ -179,7 +179,7 @@ default S filter(PredicateFinalStep dslFinalStep) { * Should generally be a lambda expression. * @return {@code this}, for method chaining. */ - S mustNot(Function clauseContributor); + S mustNot(Function, ? extends PredicateFinalStep> clauseContributor); /** * Add a "should" clause to be defined by the given function. @@ -191,7 +191,7 @@ default S filter(PredicateFinalStep dslFinalStep) { * Should generally be a lambda expression. * @return {@code this}, for method chaining. */ - S should(Function clauseContributor); + S should(Function, ? extends PredicateFinalStep> clauseContributor); /** * Add a "filter" clause to be defined by the given function. @@ -203,7 +203,7 @@ default S filter(PredicateFinalStep dslFinalStep) { * Should generally be a lambda expression. * @return {@code this}, for method chaining. */ - S filter(Function clauseContributor); + S filter(Function, ? extends PredicateFinalStep> clauseContributor); /** * Checks if this predicate contains at least one clause. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/CommonQueryStringPredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/CommonQueryStringPredicateFieldMoreStep.java index 6e73e55b8ef..b00f8c1bbfc 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/CommonQueryStringPredicateFieldMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/CommonQueryStringPredicateFieldMoreStep.java @@ -4,18 +4,25 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.TypedPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The step in a query string predicate definition, where the query string to match can be set * (see the superinterface {@link CommonQueryStringPredicateMatchingStep}), * or optional parameters for the last targeted field(s) can be set, * or more target fields can be added. * + * @param Scope root type. + * @param Type of the field references. * @param The "self" type (the actual exposed type of this step). * @param The type of the next step. */ public interface CommonQueryStringPredicateFieldMoreStep< - S extends CommonQueryStringPredicateFieldMoreStep, - N extends CommonQueryStringPredicateOptionsStep> + SR, + S extends CommonQueryStringPredicateFieldMoreStep, + N extends CommonQueryStringPredicateOptionsStep, + FR extends TypedPredicateFieldReference> extends CommonQueryStringPredicateMatchingStep, MultiFieldPredicateFieldBoostStep { /** @@ -52,4 +59,48 @@ default S field(String fieldPath) { */ S fields(String... fieldPaths); + /** + * Target the given field in the query string predicate, + * as an alternative to the already-targeted fields. + *

+ * Only text fields are supported. + *

+ * See {@link CommonQueryStringPredicateFieldStep#field(String)} for more information on targeted fields. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + * + * @see CommonQueryStringPredicateFieldStep#field(String) + */ + @Incubating + @SuppressWarnings("unchecked") + default S field(FR field) { + return fields( field ); + } + + /** + * Target the given fields in the query string predicate, + * as an alternative to the already-targeted fields. + *

+ * Only text fields are supported. + *

+ * See {@link CommonQueryStringPredicateFieldStep#fields(String...)} for more information on targeted fields. + * + * @param fields The field reference representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see CommonQueryStringPredicateFieldStep#fields(String...) + */ + @Incubating + @SuppressWarnings("unchecked") + default S fields(FR... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/CommonQueryStringPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/CommonQueryStringPredicateFieldStep.java index 52fd912eb7d..d9c5e5e4892 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/CommonQueryStringPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/CommonQueryStringPredicateFieldStep.java @@ -4,12 +4,20 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.TypedPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The initial step in a query string predicate definition, where the target field can be set. * + * @param Scope root type. + * @param Type of the field references. * @param The type of the next step. */ -public interface CommonQueryStringPredicateFieldStep> { +public interface CommonQueryStringPredicateFieldStep< + SR, + N extends CommonQueryStringPredicateFieldMoreStep, + FR extends TypedPredicateFieldReference> { /** * Target the given field in the query string predicate. @@ -49,4 +57,52 @@ default N field(String fieldPath) { */ N fields(String... fieldPaths); + + /** + * Target the given field in the query string predicate. + *

+ * Only text fields are supported. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + @Incubating + @SuppressWarnings("unchecked") + default N field(FR field) { + return fields( field ); + } + + /** + * Target the given fields in the query string predicate. + *

+ * Only text fields are supported. + *

+ * Equivalent to {@link #field(String)} followed by multiple calls to + * {@link #field(String)}, + * the only difference being that calls to {@link CommonQueryStringPredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field reference representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(String) + */ + @Incubating + @SuppressWarnings("unchecked") + default N fields(FR... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/ExistsPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/ExistsPredicateFieldStep.java index 69c17053f55..f04305db1bc 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/ExistsPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/ExistsPredicateFieldStep.java @@ -4,13 +4,15 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.ExistsPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; /** * The initial step in an "exists" predicate definition, where the target field can be set. * * @param The type of the next step. */ -public interface ExistsPredicateFieldStep> { +public interface ExistsPredicateFieldStep> { /** * Target the given field in the "exists" predicate. @@ -21,4 +23,16 @@ public interface ExistsPredicateFieldSteppath to the index field + * to apply the predicate on. + * @return The next step. + */ + @Incubating + default N field(ExistsPredicateFieldReference field) { + return field( field.absolutePath() ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/ExtendedSearchPredicateFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/ExtendedSearchPredicateFactory.java index 8025129a887..111ee223fc6 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/ExtendedSearchPredicateFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/ExtendedSearchPredicateFactory.java @@ -11,10 +11,11 @@ * Warning: Generic parameters of this type are subject to change, * so this type should not be referenced directly in user code. * + * @param Scope root type. * @param The self type, i.e. the exposed type of this factory. */ -public interface ExtendedSearchPredicateFactory> - extends SearchPredicateFactory { +public interface ExtendedSearchPredicateFactory> + extends SearchPredicateFactory { @Override S withRoot(String objectFieldPath); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/GenericBooleanPredicateClausesStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/GenericBooleanPredicateClausesStep.java index 5009d2ef75a..e7f6a93e6ee 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/GenericBooleanPredicateClausesStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/GenericBooleanPredicateClausesStep.java @@ -16,13 +16,15 @@ * refer to {@link BooleanPredicateOptionsCollector}, {@link PredicateScoreStep} or {@link PredicateFinalStep} * for meaningful documentation. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this collector). * @param The "collector" type (the type of collector passed to the consumer in {@link #with(Consumer)}. */ public interface GenericBooleanPredicateClausesStep< + SR, S extends C, - C extends BooleanPredicateOptionsCollector> - extends BooleanPredicateOptionsCollector, PredicateScoreStep, PredicateFinalStep { + C extends BooleanPredicateOptionsCollector> + extends BooleanPredicateOptionsCollector, PredicateScoreStep, PredicateFinalStep { @Override S with(Consumer contributor); @@ -60,16 +62,16 @@ default S filter(PredicateFinalStep dslFinalStep) { } @Override - S must(Function clauseContributor); + S must(Function, ? extends PredicateFinalStep> clauseContributor); @Override - S mustNot(Function clauseContributor); + S mustNot(Function, ? extends PredicateFinalStep> clauseContributor); @Override - S should(Function clauseContributor); + S should(Function, ? extends PredicateFinalStep> clauseContributor); @Override - S filter(Function clauseContributor); + S filter(Function, ? extends PredicateFinalStep> clauseContributor); @Override default S minimumShouldMatchNumber(int matchingClausesNumber) { diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/GenericSimpleBooleanPredicateClausesStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/GenericSimpleBooleanPredicateClausesStep.java index 61b5b9fa521..4255dd5e7dc 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/GenericSimpleBooleanPredicateClausesStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/GenericSimpleBooleanPredicateClausesStep.java @@ -15,13 +15,15 @@ *

* See also {@link PredicateScoreStep} or {@link PredicateFinalStep}. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this collector). * @param The "collector" type (the type of collector passed to the consumer in {@link #with(Consumer)}). */ public interface GenericSimpleBooleanPredicateClausesStep< + SR, S extends C, - C extends SimpleBooleanPredicateClausesCollector> - extends SimpleBooleanPredicateClausesCollector, PredicateFinalStep { + C extends SimpleBooleanPredicateClausesCollector> + extends SimpleBooleanPredicateClausesCollector, PredicateFinalStep { @Override default S add(PredicateFinalStep searchPredicate) { return add( searchPredicate.toPredicate() ); @@ -31,7 +33,7 @@ default S add(PredicateFinalStep searchPredicate) { S add(SearchPredicate searchPredicate); @Override - S add(Function clauseContributor); + S add(Function, ? extends PredicateFinalStep> clauseContributor); @Override S with(Consumer contributor); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateFieldStep.java index f7cfa918df0..992b3c1cb2c 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateFieldStep.java @@ -4,10 +4,13 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.KnnPredicateFieldReference; + /** * The initial step in a "knn" predicate definition, where the target field can be set. + * @param Scope root type. */ -public interface KnnPredicateFieldStep { +public interface KnnPredicateFieldStep { /** * Target the given field in the match predicate. @@ -15,5 +18,7 @@ public interface KnnPredicateFieldStep { * @param fieldPath The path to the index field to apply the predicate on. * @return The next step in the knn predicate DSL. */ - KnnPredicateVectorStep field(String fieldPath); + KnnPredicateVectorStep field(String fieldPath); + + KnnPredicateVectorGenericStep field(KnnPredicateFieldReference field); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateOptionsStep.java index 4adeaf19f2a..f3b78f332e2 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateOptionsStep.java @@ -12,23 +12,24 @@ /** * The final step in a "knn" predicate definition, where optional parameters can be set. */ -public interface KnnPredicateOptionsStep - extends PredicateScoreStep, PredicateFinalStep { +public interface KnnPredicateOptionsStep + extends PredicateScoreStep>, PredicateFinalStep { - KnnPredicateOptionsStep filter(SearchPredicate searchPredicate); + KnnPredicateOptionsStep filter(SearchPredicate searchPredicate); - default KnnPredicateOptionsStep filter(PredicateFinalStep searchPredicate) { + default KnnPredicateOptionsStep filter(PredicateFinalStep searchPredicate) { return filter( searchPredicate.toPredicate() ); } - KnnPredicateOptionsStep filter(Function clauseContributor); + KnnPredicateOptionsStep filter( + Function, ? extends PredicateFinalStep> clauseContributor); /** * @param similarity A similarity limit: documents with vectors distance to which, according to the configured similarity function, * is further than this limit will be filtered out from the results. * @return {@code this}, for method chaining. */ - KnnPredicateOptionsStep requiredMinimumSimilarity(float similarity); + KnnPredicateOptionsStep requiredMinimumSimilarity(float similarity); /** * @param score The minimum sore limit: documents with vectors for which the similarity score is lower than the limit diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateVectorGenericStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateVectorGenericStep.java new file mode 100644 index 00000000000..812ab0720ea --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateVectorGenericStep.java @@ -0,0 +1,17 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.predicate.dsl; + +/** + * The step in a "knn" predicate definition where the vector to match is defined. + */ +public interface KnnPredicateVectorGenericStep { + /** + * @param vector The vector from which to compute the distance to vectors in the indexed field. + * @return The next step in the knn predicate DSL. + */ + KnnPredicateOptionsStep matching(T vector); + +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateVectorStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateVectorStep.java index 0143daae32e..17b07582989 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateVectorStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/KnnPredicateVectorStep.java @@ -6,18 +6,19 @@ /** * The step in a "knn" predicate definition where the vector to match is defined. + * @param Scope root type. */ -public interface KnnPredicateVectorStep { +public interface KnnPredicateVectorStep { /** * @param vector The vector from which to compute the distance to vectors in the indexed field. * @return The next step in the knn predicate DSL. */ - KnnPredicateOptionsStep matching(byte... vector); + KnnPredicateOptionsStep matching(byte... vector); /** * @param vector The vector from which to compute the distance to vectors in the indexed field. * @return The next step in the knn predicate DSL. */ - KnnPredicateOptionsStep matching(float... vector); + KnnPredicateOptionsStep matching(float... vector); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchAllPredicateOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchAllPredicateOptionsStep.java index faec5e992eb..fa672272cf5 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchAllPredicateOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchAllPredicateOptionsStep.java @@ -13,7 +13,7 @@ * * @param The "self" type (the actual exposed type of this step). */ -public interface MatchAllPredicateOptionsStep> +public interface MatchAllPredicateOptionsStep> extends PredicateFinalStep, PredicateScoreStep { /** @@ -61,6 +61,6 @@ default S except(PredicateFinalStep dslFinalStep) { * Should generally be a lambda expression. * @return {@code this}, for method chaining. */ - S except(Function clauseContributor); + S except(Function, ? extends PredicateFinalStep> clauseContributor); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldMoreGenericStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldMoreGenericStep.java new file mode 100644 index 00000000000..a9eb4cba625 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldMoreGenericStep.java @@ -0,0 +1,54 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.predicate.dsl; + +/** + * The step in a "match" predicate definition where the value to match can be set + * (see the superinterface {@link MatchPredicateMatchingStep}), + * or optional parameters for the last targeted field(s) can be set, + * or more target fields can be added. + * + * @param The "self" type (the actual exposed type of this step). + * @param The type of the next step. + * @param The type of the match value. + * @param The type representing the fields. + */ +public interface MatchPredicateFieldMoreGenericStep< + S extends MatchPredicateFieldMoreGenericStep, + N extends MatchPredicateOptionsStep, + T, + V> + extends MatchPredicateMatchingGenericStep, MultiFieldPredicateFieldBoostStep { + + /** + * Target the given field in the match predicate, + * as an alternative to the already-targeted fields. + *

+ * See {@link MatchPredicateFieldStep#field(String)} for more information about targeting fields. + * + * @param field The field with a path to the index field + * to apply the predicate on. + * @return The next step. + * + * @see MatchPredicateFieldStep#field(String) + */ + S field(V field); + + /** + * Target the given fields in the match predicate, + * as an alternative to the already-targeted fields. + *

+ * See {@link MatchPredicateFieldStep#fields(String...)} for more information about targeting fields. + * + * @param fieldPaths The fields with paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see MatchPredicateFieldStep#fields(String...) + */ + @SuppressWarnings("unchecked") + S fields(V... fieldPaths); + +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldMoreStep.java index 5cb30f8cf02..2a39bc8efdc 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldMoreStep.java @@ -16,36 +16,6 @@ public interface MatchPredicateFieldMoreStep< S extends MatchPredicateFieldMoreStep, N extends MatchPredicateOptionsStep> - extends MatchPredicateMatchingStep, MultiFieldPredicateFieldBoostStep { - - /** - * Target the given field in the match predicate, - * as an alternative to the already-targeted fields. - *

- * See {@link MatchPredicateFieldStep#field(String)} for more information about targeting fields. - * - * @param fieldPath The path to the index field - * to apply the predicate on. - * @return The next step. - * - * @see MatchPredicateFieldStep#field(String) - */ - default S field(String fieldPath) { - return fields( fieldPath ); - } - - /** - * Target the given fields in the match predicate, - * as an alternative to the already-targeted fields. - *

- * See {@link MatchPredicateFieldStep#fields(String...)} for more information about targeting fields. - * - * @param fieldPaths The paths to the index fields - * to apply the predicate on. - * @return The next step. - * - * @see MatchPredicateFieldStep#fields(String...) - */ - S fields(String... fieldPaths); + extends MatchPredicateMatchingStep, MatchPredicateFieldMoreGenericStep { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldStep.java index 850b39660f0..270cbda2f1f 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateFieldStep.java @@ -4,11 +4,12 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.MatchPredicateFieldReference; /** * The initial step in a "match" predicate definition, where the target field can be set. */ -public interface MatchPredicateFieldStep> { +public interface MatchPredicateFieldStep> { /** * Target the given field in the match predicate. @@ -31,7 +32,7 @@ default N field(String fieldPath) { * Target the given fields in the match predicate. *

* Equivalent to {@link #field(String)} followed by multiple calls to - * {@link MatchPredicateFieldMoreStep#field(String)}, + * {@link MatchPredicateFieldMoreStep#field(Object)}, * the only difference being that calls to {@link MatchPredicateFieldMoreStep#boost(float)} * and other field-specific settings on the returned step will only need to be done once * and will apply to all the fields passed to this method. @@ -43,4 +44,42 @@ default N field(String fieldPath) { * @see #field(String) */ N fields(String... fieldPaths); + + /** + * Target the given field in the match predicate. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param fieldReference The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + @SuppressWarnings("unchecked") + default MatchPredicateFieldMoreGenericStep> field( + MatchPredicateFieldReference fieldReference) { + return fields( fieldReference ); + } + + /** + * Target the given fields in the match predicate. + *

+ * Equivalent to {@link #field(String)} followed by multiple calls to + * {@link MatchPredicateFieldMoreStep#field(Object)}, + * the only difference being that calls to {@link MatchPredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fieldReferences The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(MatchPredicateFieldReference) + */ + @SuppressWarnings("unchecked") + MatchPredicateFieldMoreGenericStep> fields( + MatchPredicateFieldReference... fieldReferences); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateMatchingGenericStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateMatchingGenericStep.java new file mode 100644 index 00000000000..85fd9369099 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateMatchingGenericStep.java @@ -0,0 +1,24 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.predicate.dsl; + +/** + * The step in a "match" predicate definition where the value to match can be set. + * + * @param The type of the next step. + * @param The type of the match value. + */ +public interface MatchPredicateMatchingGenericStep, T> { + + /** + * Require at least one of the targeted fields to match the given value. + * + * @param value The value to match. + * The signature of this method defines this parameter as an {@code T}, + * but a specific type is expected depending on the targeted field. + * @return The next step. + */ + N matching(T value); +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateMatchingStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateMatchingStep.java index a51b555deef..d90980ab2a1 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateMatchingStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/MatchPredicateMatchingStep.java @@ -11,7 +11,8 @@ * * @param The type of the next step. */ -public interface MatchPredicateMatchingStep> { +public interface MatchPredicateMatchingStep> + extends MatchPredicateMatchingGenericStep { /** * Require at least one of the targeted fields to match the given value. @@ -20,7 +21,7 @@ public interface MatchPredicateMatchingStep * The resulting nested predicate must match all inner clauses, * similarly to an {@link SearchPredicateFactory#and() "and" predicate}. + * + * @param Scope root type. */ -public interface NestedPredicateClausesCollector> - extends SimpleBooleanPredicateClausesCollector { +public interface NestedPredicateClausesCollector> + extends SimpleBooleanPredicateClausesCollector { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateClausesStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateClausesStep.java index 355b620bd2c..af61eb2b7de 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateClausesStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateClausesStep.java @@ -11,11 +11,12 @@ * The resulting nested predicate must match all inner clauses, * similarly to an {@link SearchPredicateFactory#and() "and" predicate}. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). */ -public interface NestedPredicateClausesStep> - extends GenericSimpleBooleanPredicateClausesStep>, - NestedPredicateClausesCollector> { +public interface NestedPredicateClausesStep> + extends GenericSimpleBooleanPredicateClausesStep>, + NestedPredicateClausesCollector> { // TODO HSEARCH-3090 add tuning methods, like the "score_mode" in Elasticsearch (avg, min, ...) diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateFieldStep.java index 1f375406adc..27d54f43117 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateFieldStep.java @@ -5,15 +5,17 @@ package org.hibernate.search.engine.search.predicate.dsl; import org.hibernate.search.engine.backend.types.ObjectStructure; +import org.hibernate.search.engine.search.reference.predicate.NestedPredicateFieldReference; /** * The initial step in a "nested" predicate definition, where the target field can be set. * + * @param Scope root type. * @param The type of the next step. * @deprecated Use {@link SearchPredicateFactory#nested(String)} instead. */ @Deprecated -public interface NestedPredicateFieldStep> { +public interface NestedPredicateFieldStep> { /** * Set the object field to "nest" on. @@ -25,4 +27,17 @@ public interface NestedPredicateFieldStep> */ N objectField(String fieldPath); + /** + * Set the object field to "nest" on. + *

+ * The selected field must have a {@link ObjectStructure#NESTED nested structure} in the targeted indexes. + * + * @param field The field reference representing a path to the object field + * to apply the predicate on. + * @return The next step. + */ + default N objectField(NestedPredicateFieldReference field) { + return objectField( field.absolutePath() ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateNestStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateNestStep.java index b8143957236..888426d61d4 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateNestStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/NestedPredicateNestStep.java @@ -15,7 +15,7 @@ * @deprecated Use {@link SearchPredicateFactory#nested(String)} instead. */ @Deprecated -public interface NestedPredicateNestStep> { +public interface NestedPredicateNestStep> { /** * Set the inner predicate to a previously-built {@link SearchPredicate}. @@ -65,6 +65,6 @@ default N nest(PredicateFinalStep dslFinalStep) { * Should generally be a lambda expression. * @return The next step. */ - N nest(Function predicateContributor); + N nest(Function, ? extends PredicateFinalStep> predicateContributor); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PhrasePredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PhrasePredicateFieldMoreStep.java index 2900ec671e6..25a81dfba9e 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PhrasePredicateFieldMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PhrasePredicateFieldMoreStep.java @@ -4,17 +4,22 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.PhrasePredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The step in a "phrase" predicate definition where the phrase to match can be set * (see the superinterface {@link PhrasePredicateMatchingStep}), * or optional parameters for the last targeted field(s) can be set, * or more target fields can be added. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). * @param The type of the next step. */ public interface PhrasePredicateFieldMoreStep< - S extends PhrasePredicateFieldMoreStep, + SR, + S extends PhrasePredicateFieldMoreStep, N extends PhrasePredicateOptionsStep> extends PhrasePredicateMatchingStep, MultiFieldPredicateFieldBoostStep { @@ -52,4 +57,48 @@ default S field(String fieldPath) { */ S fields(String... fieldPaths); + /** + * Target the given field in the phrase predicate, + * as an alternative to the already-targeted fields. + *

+ * Only text fields are supported. + *

+ * See {@link PhrasePredicateFieldStep#field(PhrasePredicateFieldReference)} for more information on targeted fields. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + * + * @see PhrasePredicateFieldStep#field(PhrasePredicateFieldReference) + */ + @Incubating + @SuppressWarnings("unchecked") + default S field(PhrasePredicateFieldReference field) { + return fields( field ); + } + + /** + * Target the given fields in the phrase predicate, + * as an alternative to the already-targeted fields. + *

+ * Only text fields are supported. + *

+ * See {@link PhrasePredicateFieldStep#fields(PhrasePredicateFieldReference...)} for more information on targeted fields. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see PhrasePredicateFieldStep#fields(PhrasePredicateFieldReference...) + */ + @Incubating + @SuppressWarnings("unchecked") + default S fields(PhrasePredicateFieldReference... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PhrasePredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PhrasePredicateFieldStep.java index 41570281a00..d105409c21e 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PhrasePredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PhrasePredicateFieldStep.java @@ -4,12 +4,16 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.PhrasePredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The initial step in a "phrase" predicate definition, where the target field can be set. * + * @param Scope root type. * @param The type of the next step. */ -public interface PhrasePredicateFieldStep> { +public interface PhrasePredicateFieldStep> { /** * Target the given field in the phrase predicate. @@ -49,4 +53,54 @@ default N field(String fieldPath) { */ N fields(String... fieldPaths); + /** + * Target the given field in the phrase predicate. + *

+ * Only text fields are supported. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + * + * @see PhrasePredicateFieldStep#field(PhrasePredicateFieldReference) + */ + @Incubating + @SuppressWarnings("unchecked") + default N field(PhrasePredicateFieldReference field) { + return fields( field ); + } + + /** + * Target the given fields in the phrase predicate. + *

+ * Only text fields are supported. + *

+ * Equivalent to {@link #field(PhrasePredicateFieldReference)} followed by multiple calls to + * {@link PhrasePredicateFieldMoreStep#field(PhrasePredicateFieldReference)}, + * the only difference being that calls to {@link PhrasePredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see PhrasePredicateFieldStep#fields(PhrasePredicateFieldReference...) + */ + @Incubating + @SuppressWarnings("unchecked") + default N fields(PhrasePredicateFieldReference... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PrefixPredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PrefixPredicateFieldMoreStep.java index 4a202649111..61b768afea0 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PrefixPredicateFieldMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PrefixPredicateFieldMoreStep.java @@ -4,6 +4,9 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.PrefixPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The step in a "prefix" predicate definition where the pattern to match can be set * (see the superinterface {@link PrefixPredicateMatchingStep}), @@ -14,7 +17,8 @@ * @param The type of the next step. */ public interface PrefixPredicateFieldMoreStep< - S extends PrefixPredicateFieldMoreStep, + SR, + S extends PrefixPredicateFieldMoreStep, N extends PrefixPredicateOptionsStep> extends PrefixPredicateMatchingStep, MultiFieldPredicateFieldBoostStep { @@ -52,4 +56,50 @@ default S field(String fieldPath) { */ S fields(String... fieldPaths); + /** + * Target the given field in the prefix predicate. + *

+ * Only text fields are supported. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + @Incubating + default S field(PrefixPredicateFieldReference field) { + return fields( field.absolutePath() ); + } + + /** + * Target the given fields in the prefix predicate. + *

+ * Only text fields are supported. + *

+ * Equivalent to {@link #field(String)} followed by multiple calls to + * {@link PrefixPredicateFieldMoreStep#field(String)}, + * the only difference being that calls to {@link PrefixPredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(String) + */ + @Incubating + @SuppressWarnings("unchecked") + default S fields(PrefixPredicateFieldReference... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PrefixPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PrefixPredicateFieldStep.java index 46117c8e1e8..51ebb51618e 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PrefixPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/PrefixPredicateFieldStep.java @@ -4,12 +4,15 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.PrefixPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The initial step in a "prefix" predicate definition, where the target field can be set. * * @param The type of the next step. */ -public interface PrefixPredicateFieldStep> { +public interface PrefixPredicateFieldStep> { /** * Target the given field in the prefix predicate. @@ -49,4 +52,51 @@ default N field(String fieldPath) { */ N fields(String... fieldPaths); + /** + * Target the given field in the prefix predicate. + *

+ * Only text fields are supported. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + @Incubating + default N field(PrefixPredicateFieldReference field) { + return fields( field.absolutePath() ); + } + + /** + * Target the given fields in the prefix predicate. + *

+ * Only text fields are supported. + *

+ * Equivalent to {@link #field(String)} followed by multiple calls to + * {@link PrefixPredicateFieldMoreStep#field(String)}, + * the only difference being that calls to {@link PrefixPredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(String) + */ + @Incubating + @SuppressWarnings("unchecked") + default N fields(PrefixPredicateFieldReference... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/QueryStringPredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/QueryStringPredicateFieldMoreStep.java index 7f367799cde..7fae417fd8a 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/QueryStringPredicateFieldMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/QueryStringPredicateFieldMoreStep.java @@ -4,18 +4,22 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.QueryStringPredicateFieldReference; + /** * The step in a "query string" predicate definition where the query string to match can be set * (see the superinterface {@link QueryStringPredicateMatchingStep}), * or optional parameters for the last targeted field(s) can be set, * or more target fields can be added. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). * @param The type of the next step. */ public interface QueryStringPredicateFieldMoreStep< - S extends QueryStringPredicateFieldMoreStep, + SR, + S extends QueryStringPredicateFieldMoreStep, N extends QueryStringPredicateOptionsStep> - extends CommonQueryStringPredicateFieldMoreStep { + extends CommonQueryStringPredicateFieldMoreStep> { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/QueryStringPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/QueryStringPredicateFieldStep.java index 1a8c2c33bf5..77ef68d7b41 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/QueryStringPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/QueryStringPredicateFieldStep.java @@ -4,12 +4,14 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.QueryStringPredicateFieldReference; + /** * The initial step in a "query string" predicate definition, where the target field can be set. * * @param The type of the next step. */ -public interface QueryStringPredicateFieldStep> - extends CommonQueryStringPredicateFieldStep { +public interface QueryStringPredicateFieldStep> + extends CommonQueryStringPredicateFieldStep> { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldMoreGenericStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldMoreGenericStep.java new file mode 100644 index 00000000000..c111f1f7427 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldMoreGenericStep.java @@ -0,0 +1,58 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.predicate.dsl; + +import org.hibernate.search.engine.search.reference.predicate.RangePredicateFieldReference; + +/** + * The step in a "range" predicate definition where the limits of the range to match can be set + * (see the superinterface {@link RangePredicateMatchingStep}), + * or optional parameters for the last targeted field(s) can be set, + * or more target fields can be added. + * + * @param Scope root type. + * @param The "self" type (the actual exposed type of this step). + * @param The type of the next step. + * @param The type representing the fields. + * @param The type of the boundary values. + */ +public interface RangePredicateFieldMoreGenericStep< + SR, + S extends RangePredicateFieldMoreGenericStep, + N extends RangePredicateOptionsStep, + V, + T> + extends RangePredicateMatchingGenericStep, MultiFieldPredicateFieldBoostStep { + + /** + * Target the given field in the range predicate, + * as an alternative to the already-targeted fields. + *

+ * See {@link RangePredicateFieldStep#field(RangePredicateFieldReference)} for more information about targeting fields. + * + * @param field The field with a path to the index field + * to apply the predicate on. + * @return The next step. + * + * @see RangePredicateFieldStep#field(RangePredicateFieldReference) + */ + S field(V field); + + /** + * Target the given fields in the range predicate, + * as an alternative to the already-targeted fields. + *

+ * See {@link RangePredicateFieldStep#fields(RangePredicateFieldReference...)} for more information about targeting fields. + * + * @param fields The fields with paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see RangePredicateFieldStep#fields(RangePredicateFieldReference...) + */ + @SuppressWarnings("unchecked") + S fields(V... fields); + +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldMoreStep.java index 79ec56a578b..ae031f65861 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldMoreStep.java @@ -10,13 +10,16 @@ * or optional parameters for the last targeted field(s) can be set, * or more target fields can be added. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). * @param The type of the next step. */ public interface RangePredicateFieldMoreStep< - S extends RangePredicateFieldMoreStep, + SR, + S extends RangePredicateFieldMoreStep, N extends RangePredicateOptionsStep> - extends RangePredicateMatchingStep, MultiFieldPredicateFieldBoostStep { + extends RangePredicateFieldMoreGenericStep, + RangePredicateMatchingStep { /** * Target the given field in the range predicate, @@ -47,5 +50,4 @@ default S field(String fieldPath) { * @see RangePredicateFieldStep#fields(String...) */ S fields(String... fieldPaths); - } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldStep.java index 172db4486a6..f9565096bdc 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateFieldStep.java @@ -4,13 +4,17 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.RangePredicateFieldReference; /** * The initial step in a "range" predicate definition, where the target field can be set. * + * @param Scope root type. * @param The type of the next step. */ -public interface RangePredicateFieldStep> { +public interface RangePredicateFieldStep< + SR, + N extends RangePredicateFieldMoreStep> { /** * Target the given field in the range predicate. @@ -45,4 +49,43 @@ default N field(String fieldPath) { * @see #field(String) */ N fields(String... fieldPaths); + + /** + * Target the given field in the range predicate. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + @SuppressWarnings("unchecked") + default RangePredicateFieldMoreGenericStep, T> field( + RangePredicateFieldReference field) { + return fields( field ); + } + + /** + * Target the given fields in the range predicate. + *

+ * Equivalent to {@link #field(RangePredicateFieldReference)} followed by multiple calls to + * {@link RangePredicateFieldMoreGenericStep#field(Object)}, + * the only difference being that calls to {@link RangePredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(RangePredicateFieldReference) + */ + @SuppressWarnings("unchecked") + RangePredicateFieldMoreGenericStep, T> fields( + RangePredicateFieldReference... fields); + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateMatchingGenericStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateMatchingGenericStep.java new file mode 100644 index 00000000000..0871b937f26 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateMatchingGenericStep.java @@ -0,0 +1,158 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.predicate.dsl; + +import java.util.Arrays; +import java.util.Collection; + +import org.hibernate.search.engine.search.common.ValueModel; +import org.hibernate.search.util.common.data.Range; +import org.hibernate.search.util.common.data.RangeBoundInclusion; + +/** + * The step in a "range" predicate definition where the range to match can be set. + * + * @param The type of the next step. + * @param The type of the boundary values. + */ +public interface RangePredicateMatchingGenericStep> { + + /** + * Require at least one of the targeted fields to be in the range + * defined by the given bounds. + * + * @param lowerBound The lower bound of the range. {@code null} means {@code -Infinity} (no lower bound). + * The signature of this method defines this parameter as an {@link Object}, + * but a specific type is expected depending on the targeted field. + * @param upperBound The upper bound of the range. {@code null} means {@code +Infinity} (no upper bound). + * The signature of this method defines this parameter as an {@link Object}, + * but a specific type is expected depending on the targeted field. + * @return The next step. + */ + default N between(T lowerBound, T upperBound) { + return within( Range.between( lowerBound, upperBound ) ); + } + + /** + * Require at least one of the targeted fields to be in the range + * defined by the given bounds. + * + * @param lowerBound The lower bound of the range. {@code null} means {@code -Infinity} (no lower bound). + * The signature of this method defines this parameter as an {@link Object}, + * but a specific type is expected depending on the targeted field. + * @param lowerBoundInclusion Whether the lower bound is included in the range or excluded. + * @param upperBound The upper bound of the range. {@code null} means {@code +Infinity} (no upper bound). + * The signature of this method defines this parameter as an {@link Object}, + * but a specific type is expected depending on the targeted field. + * @param upperBoundInclusion Whether the upper bound is included in the range or excluded. + * @return The next step. + */ + default N between(T lowerBound, RangeBoundInclusion lowerBoundInclusion, + T upperBound, RangeBoundInclusion upperBoundInclusion) { + return within( Range.between( lowerBound, lowerBoundInclusion, upperBound, upperBoundInclusion ) ); + } + + /** + * Require at least one of the targeted fields to be "greater than or equal to" the given value, + * with no limit as to how high it can be. + * + * @param lowerBoundValue The lower bound of the range, included. Must not be null. + * The signature of this method defines this parameter as an {@link Object}, + * but a specific type is expected depending on the targeted field. + * @return The next step. + */ + default N atLeast(T lowerBoundValue) { + return within( Range.atLeast( lowerBoundValue ) ); + } + + /** + * Require at least one of the targeted fields to be "strictly greater than" the given value, + * with no limit as to how high it can be. + * + * @param lowerBoundValue The lower bound of the range, excluded. Must not be null. + * The signature of this method defines this parameter as an {@link Object}, + * but a specific type is expected depending on the targeted field. + * @return The next step. + */ + default N greaterThan(T lowerBoundValue) { + return within( Range.greaterThan( lowerBoundValue ) ); + } + + /** + * Require at least one of the targeted fields to be "lesser than or equal to" the given value, + * with no limit as to how low it can be. + * + * @param upperBoundValue The upper bound of the range, included. Must not be null. + * The signature of this method defines this parameter as an {@link Object}, + * but a specific type is expected depending on the targeted field. + * @return The next step. + */ + default N atMost(T upperBoundValue) { + return within( Range.atMost( upperBoundValue ) ); + } + + /** + * Require at least one of the targeted fields to be "lesser than" the given value, + * with no limit as to how low it can be. + * + * @param upperBoundValue The upper bound of the range, excluded. Must not be null. + * The signature of this method defines this parameter as an {@link Object}, + * but a specific type is expected depending on the targeted field. + * @return The next step. + */ + default N lessThan(T upperBoundValue) { + return within( Range.lessThan( upperBoundValue ) ); + } + + /** + * Require at least one of the targeted fields to be in the given range. + * + * @param range The range to match. + * The signature of this method defines this parameter as a range with bounds of any type, + * but a specific type is expected depending on the targeted field. + * @return The next step. + */ + N within(Range range); + + /** + * Require at least one of the targeted fields to be in any of the given ranges. + * + * @param ranges The ranges to match. + * The signature of this method defines this parameter as a range with bounds of any type, + * but a specific type is expected depending on the targeted field. + * See {@link ValueModel#MAPPING} for more information. + * @return The next step. + */ + default N withinAny(Range... ranges) { + return withinAny( Arrays.asList( ranges ) ); + } + + /** + * Require at least one of the targeted fields to be in any of the given ranges. + * + * @param ranges The ranges to match. + * The signature of this method defines this parameter as a range with bounds of any type, + * but a specific type is expected depending on the targeted field. + * See {@link ValueModel#MAPPING} for more information. + * @return The next step. + */ + default N withinAny(Collection> ranges) { + return withinAny( ranges, ValueModel.MAPPING ); + } + + /** + * Require at least one of the targeted fields to be in any of the given ranges. + * + * @param ranges The ranges to match. + * The signature of this method defines this parameter as a range with bounds of any type, + * but a specific type is expected depending on the targeted field and on the {@code valueModel} parameter. + * See {@link ValueModel} for more information. + * @param valueModel The model value, determines how the range bounds should be converted + * before Hibernate Search attempts to interpret them as a field value. + * See {@link ValueModel} for more information. + * @return The next step. + */ + N withinAny(Collection> ranges, ValueModel valueModel); +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateMatchingStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateMatchingStep.java index 4be7780a736..09252a7083e 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateMatchingStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RangePredicateMatchingStep.java @@ -16,7 +16,8 @@ * * @param The type of the next step. */ -public interface RangePredicateMatchingStep> { +public interface RangePredicateMatchingStep> + extends RangePredicateMatchingGenericStep { /** * Require at least one of the targeted fields to be in the range diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RegexpPredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RegexpPredicateFieldMoreStep.java index 311c9707200..1b97600d04e 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RegexpPredicateFieldMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RegexpPredicateFieldMoreStep.java @@ -4,6 +4,9 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.RegexpPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The step in a "regexp" predicate definition where the pattern to match can be set * (see the superinterface {@link RegexpPredicateMatchingStep}), @@ -14,7 +17,8 @@ * @param The type of the next step. */ public interface RegexpPredicateFieldMoreStep< - S extends RegexpPredicateFieldMoreStep, + SR, + S extends RegexpPredicateFieldMoreStep, N extends RegexpPredicateOptionsStep> extends RegexpPredicateMatchingStep, MultiFieldPredicateFieldBoostStep { @@ -52,4 +56,51 @@ default S field(String fieldPath) { */ S fields(String... fieldPaths); + /** + * Target the given field in the regexp predicate. + *

+ * Only text fields are supported. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + @Incubating + default S field(RegexpPredicateFieldReference field) { + return fields( field.absolutePath() ); + } + + /** + * Target the given fields in the regexp predicate. + *

+ * Only text fields are supported. + *

+ * Equivalent to {@link #field(String)} followed by multiple calls to + * {@link RegexpPredicateFieldMoreStep#field(String)}, + * the only difference being that calls to {@link RegexpPredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(String) + */ + @Incubating + @SuppressWarnings("unchecked") + default S fields(RegexpPredicateFieldReference... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RegexpPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RegexpPredicateFieldStep.java index 613c34cb1b3..2b39db1f0de 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RegexpPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/RegexpPredicateFieldStep.java @@ -4,12 +4,15 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.RegexpPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The initial step in a "regexp" predicate definition, where the target field can be set. * * @param The type of the next step. */ -public interface RegexpPredicateFieldStep> { +public interface RegexpPredicateFieldStep> { /** * Target the given field in the regexp predicate. @@ -49,4 +52,51 @@ default N field(String fieldPath) { */ N fields(String... fieldPaths); + /** + * Target the given field in the regexp predicate. + *

+ * Only text fields are supported. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + @Incubating + default N field(RegexpPredicateFieldReference field) { + return fields( field.absolutePath() ); + } + + /** + * Target the given fields in the regexp predicate. + *

+ * Only text fields are supported. + *

+ * Equivalent to {@link #field(String)} followed by multiple calls to + * {@link RegexpPredicateFieldMoreStep#field(String)}, + * the only difference being that calls to {@link RegexpPredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(String) + */ + @Incubating + @SuppressWarnings("unchecked") + default N fields(RegexpPredicateFieldReference... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactory.java index 82bb2aa0b7f..79a7deacb81 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactory.java @@ -11,6 +11,7 @@ import org.hibernate.search.engine.search.common.BooleanOperator; import org.hibernate.search.engine.search.common.NamedValues; import org.hibernate.search.engine.search.predicate.SearchPredicate; +import org.hibernate.search.engine.search.reference.predicate.NestedPredicateFieldReference; import org.hibernate.search.util.common.SearchException; import org.hibernate.search.util.common.annotation.Incubating; @@ -32,8 +33,10 @@ *

* Such a factory can also transform relative paths into absolute paths using {@link #toAbsolutePath(String)}; * this can be useful for native predicates in particular. + * + * @param Scope root type. */ -public interface SearchPredicateFactory { +public interface SearchPredicateFactory { /** * Match all documents. @@ -41,7 +44,7 @@ public interface SearchPredicateFactory { * @return The initial step of a DSL where the "match all" predicate can be defined. * @see MatchAllPredicateOptionsStep */ - MatchAllPredicateOptionsStep matchAll(); + MatchAllPredicateOptionsStep matchAll(); /** * Match none of the documents. @@ -65,7 +68,7 @@ public interface SearchPredicateFactory { * @return The initial step of a DSL where the "boolean" predicate can be defined. * @see BooleanPredicateClausesStep */ - BooleanPredicateClausesStep bool(); + BooleanPredicateClausesStep bool(); /** * Match documents if they match a combination of boolean clauses, @@ -80,7 +83,7 @@ public interface SearchPredicateFactory { * @see BooleanPredicateClausesStep#with(Consumer) */ @Deprecated - PredicateFinalStep bool(Consumer> clauseContributor); + PredicateFinalStep bool(Consumer> clauseContributor); /** * Match documents if they match all inner clauses. @@ -88,7 +91,7 @@ public interface SearchPredicateFactory { * @return The initial step of a DSL where predicates that must match can be added and options can be set. * @see GenericSimpleBooleanPredicateClausesStep */ - SimpleBooleanPredicateClausesStep and(); + SimpleBooleanPredicateClausesStep and(); /** * Match documents if they match all previously-built {@link SearchPredicate}. @@ -113,7 +116,7 @@ SimpleBooleanPredicateOptionsStep and(PredicateFinalStep firstSearchPredicate * @return The initial step of a DSL where predicates that should match can be added and options can be set. * @see GenericSimpleBooleanPredicateClausesStep */ - SimpleBooleanPredicateClausesStep or(); + SimpleBooleanPredicateClausesStep or(); /** * Match documents if they match any previously-built {@link SearchPredicate}. @@ -161,7 +164,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "match" predicate can be defined. * @see MatchPredicateFieldStep */ - MatchPredicateFieldStep match(); + MatchPredicateFieldStep match(); /** * Match documents where targeted fields have a value within lower and upper bounds. @@ -169,7 +172,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "range" predicate can be defined. * @see RangePredicateFieldStep */ - RangePredicateFieldStep range(); + RangePredicateFieldStep range(); /** * Match documents where targeted fields have a value that contains a given phrase. @@ -177,7 +180,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "phrase" predicate can be defined. * @see PhrasePredicateFieldStep */ - PhrasePredicateFieldStep phrase(); + PhrasePredicateFieldStep phrase(); /** * Match documents where targeted fields contain a term that matches a given pattern, @@ -190,7 +193,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "wildcard" predicate can be defined. * @see WildcardPredicateFieldStep */ - WildcardPredicateFieldStep wildcard(); + WildcardPredicateFieldStep wildcard(); /** * Match documents where targeted fields have a value that starts with a given string. @@ -198,7 +201,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "prefix" predicate can be defined. * @see PrefixPredicateFieldStep */ - PrefixPredicateFieldStep prefix(); + PrefixPredicateFieldStep prefix(); /** * Match documents where targeted fields contain a term that matches a given regular expression. @@ -206,7 +209,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "regexp" predicate can be defined. * @see RegexpPredicateFieldStep */ - RegexpPredicateFieldStep regexp(); + RegexpPredicateFieldStep regexp(); /** * Match documents where targeted fields contain a term that matches some terms of a given series of terms. @@ -214,7 +217,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "terms" predicate can be defined. * @see TermsPredicateFieldStep */ - TermsPredicateFieldStep terms(); + TermsPredicateFieldStep terms(); /** * Match documents where a {@link ObjectStructure#NESTED nested object} matches a given predicate. @@ -224,7 +227,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @deprecated Use {@link #nested(String)} instead. */ @Deprecated - NestedPredicateFieldStep nested(); + NestedPredicateFieldStep nested(); /** * Match documents where a {@link ObjectStructure#NESTED nested object} matches inner predicates @@ -237,7 +240,23 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "nested" predicate can be defined. * @see NestedPredicateFieldStep */ - NestedPredicateClausesStep nested(String objectFieldPath); + NestedPredicateClausesStep nested(String objectFieldPath); + + /** + * Match documents where a {@link ObjectStructure#NESTED nested object} matches inner predicates + * to be defined in the next steps. + *

+ * The resulting nested predicate must match all inner clauses, + * similarly to an {@link #and() "and" predicate}. + * + * @param field The field reference representing a path to the object field + * to apply the predicate on. + * @return The initial step of a DSL where the "nested" predicate can be defined. + * @see NestedPredicateFieldStep + */ + default NestedPredicateClausesStep nested(NestedPredicateFieldReference field) { + return nested( field.absolutePath() ); + } /** * Match documents according to a given query string, @@ -251,7 +270,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "simple query string" predicate can be defined. * @see SimpleQueryStringPredicateFieldStep */ - SimpleQueryStringPredicateFieldStep simpleQueryString(); + SimpleQueryStringPredicateFieldStep simpleQueryString(); /** * Match documents according to a given query string, @@ -265,7 +284,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "query string" predicate can be defined. * @see QueryStringPredicateFieldStep */ - QueryStringPredicateFieldStep queryString(); + QueryStringPredicateFieldStep queryString(); /** * Match documents where a given field exists. @@ -275,7 +294,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @return The initial step of a DSL where the "exists" predicate can be defined. * @see ExistsPredicateFieldStep */ - ExistsPredicateFieldStep exists(); + ExistsPredicateFieldStep exists(); /** * Access the different types of spatial predicates. @@ -307,7 +326,7 @@ SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, * @see KnnPredicateVectorStep * @see KnnPredicateOptionsStep */ - KnnPredicateFieldStep knn(int k); + KnnPredicateFieldStep knn(int k); /** * Delegating predicate that creates the actual predicate at query create time and provides access to query parameters. @@ -330,7 +349,7 @@ PredicateFinalStep withParameters( * @return The extended factory. * @throws SearchException If the extension cannot be applied (wrong underlying backend, ...). */ - T extension(SearchPredicateFactoryExtension extension); + T extension(SearchPredicateFactoryExtension extension); /** * Create a DSL step allowing multiple attempts to apply extensions one after the other, @@ -341,7 +360,7 @@ PredicateFinalStep withParameters( * * @return A DSL step. */ - SearchPredicateFactoryExtensionIfSupportedStep extension(); + SearchPredicateFactoryExtensionIfSupportedStep extension(); /** * Create a new predicate factory whose root for all paths passed to the DSL @@ -354,7 +373,7 @@ PredicateFinalStep withParameters( * @return A new predicate factory using the given object field as root. */ @Incubating - SearchPredicateFactory withRoot(String objectFieldPath); + SearchPredicateFactory withRoot(String objectFieldPath); /** * @param relativeFieldPath The path to a field, relative to the {@link #withRoot(String) root} of this factory. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtension.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtension.java index b5e89395dc5..77ee8c42cd6 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtension.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtension.java @@ -20,7 +20,7 @@ * @see SearchPredicateFactory#extension(SearchPredicateFactoryExtension) * @see ExtendedSearchPredicateFactory */ -public interface SearchPredicateFactoryExtension { +public interface SearchPredicateFactoryExtension { /** * Attempt to extend a given factory, returning an empty {@link Optional} in case of failure. @@ -31,6 +31,6 @@ public interface SearchPredicateFactoryExtension { * @return An optional containing the extended search predicate factory ({@link T}) in case * of success, or an empty optional otherwise. */ - Optional extendOptional(SearchPredicateFactory original); + Optional extendOptional(SearchPredicateFactory original); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtensionIfSupportedMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtensionIfSupportedMoreStep.java index 8414a4d58cf..52a14e107b2 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtensionIfSupportedMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtensionIfSupportedMoreStep.java @@ -14,8 +14,8 @@ * * @see SearchPredicateFactory#extension() */ -public interface SearchPredicateFactoryExtensionIfSupportedMoreStep - extends SearchPredicateFactoryExtensionIfSupportedStep { +public interface SearchPredicateFactoryExtensionIfSupportedMoreStep + extends SearchPredicateFactoryExtensionIfSupportedStep { /** * If no extension passed to {@link #ifSupported(SearchPredicateFactoryExtension, Function)} @@ -29,7 +29,7 @@ public interface SearchPredicateFactoryExtensionIfSupportedMoreStep * @return The final step in the DSL of the resulting predicate. */ PredicateFinalStep orElse( - Function predicateContributor); + Function, ? extends PredicateFinalStep> predicateContributor); /** * If no extension passed to {@link #ifSupported(SearchPredicateFactoryExtension, Function)} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtensionIfSupportedStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtensionIfSupportedStep.java index 25829b3b36b..ecbc144c4ee 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtensionIfSupportedStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactoryExtensionIfSupportedStep.java @@ -12,7 +12,7 @@ * * @see SearchPredicateFactory#extension() */ -public interface SearchPredicateFactoryExtensionIfSupportedStep { +public interface SearchPredicateFactoryExtensionIfSupportedStep { /** * If the given extension is supported, and none of the previous extensions passed to @@ -31,8 +31,8 @@ public interface SearchPredicateFactoryExtensionIfSupportedStep { * @param The type of the extended factory. * @return The next step. */ - SearchPredicateFactoryExtensionIfSupportedMoreStep ifSupported( - SearchPredicateFactoryExtension extension, + SearchPredicateFactoryExtensionIfSupportedMoreStep ifSupported( + SearchPredicateFactoryExtension extension, Function predicateContributor ); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleBooleanPredicateClausesCollector.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleBooleanPredicateClausesCollector.java index 76c3278cd2e..ff1ffd83bc0 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleBooleanPredicateClausesCollector.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleBooleanPredicateClausesCollector.java @@ -40,9 +40,10 @@ * * * + * @param Scope root type. * @param The "self" type (the actual exposed type of this collector). */ -public interface SimpleBooleanPredicateClausesCollector> { +public interface SimpleBooleanPredicateClausesCollector> { /** * Adds the specified predicate to the list of clauses. * @@ -68,7 +69,7 @@ public interface SimpleBooleanPredicateClausesCollector clauseContributor); + S add(Function, ? extends PredicateFinalStep> clauseContributor); /** * Delegates setting clauses and options to a given consumer. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleBooleanPredicateClausesStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleBooleanPredicateClausesStep.java index 7679388f02b..851c06fa514 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleBooleanPredicateClausesStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleBooleanPredicateClausesStep.java @@ -9,10 +9,11 @@ * where clauses * can be added and options can be set. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). */ -public interface SimpleBooleanPredicateClausesStep> - extends GenericSimpleBooleanPredicateClausesStep>, +public interface SimpleBooleanPredicateClausesStep> + extends GenericSimpleBooleanPredicateClausesStep>, SimpleBooleanPredicateOptionsStep { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleQueryStringPredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleQueryStringPredicateFieldMoreStep.java index c4e2ffa46d1..3110c2d13d3 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleQueryStringPredicateFieldMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleQueryStringPredicateFieldMoreStep.java @@ -4,18 +4,22 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.SimpleQueryStringPredicateFieldReference; + /** * The step in a "simple query string" predicate definition where the query string to match can be set * (see the superinterface {@link SimpleQueryStringPredicateMatchingStep}), * or optional parameters for the last targeted field(s) can be set, * or more target fields can be added. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). * @param The type of the next step. */ public interface SimpleQueryStringPredicateFieldMoreStep< - S extends SimpleQueryStringPredicateFieldMoreStep, + SR, + S extends SimpleQueryStringPredicateFieldMoreStep, N extends SimpleQueryStringPredicateOptionsStep> - extends CommonQueryStringPredicateFieldMoreStep { + extends CommonQueryStringPredicateFieldMoreStep> { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleQueryStringPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleQueryStringPredicateFieldStep.java index 51aee41ee8a..84acbf8d20d 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleQueryStringPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SimpleQueryStringPredicateFieldStep.java @@ -4,13 +4,15 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.SimpleQueryStringPredicateFieldReference; + /** * The initial step in a "simple query string" predicate definition, where the target field can be set. * + * @param Scope root type. * @param The type of the next step. */ -public interface SimpleQueryStringPredicateFieldStep> - extends CommonQueryStringPredicateFieldStep { - +public interface SimpleQueryStringPredicateFieldStep> + extends CommonQueryStringPredicateFieldStep> { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/TermsPredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/TermsPredicateFieldMoreStep.java index 256e89d6326..a02f2950b10 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/TermsPredicateFieldMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/TermsPredicateFieldMoreStep.java @@ -4,6 +4,9 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.TermsPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The step in a "terms" predicate definition where the terms to match can be set * (see the superinterface {@link TermsPredicateMatchingStep}), @@ -14,7 +17,8 @@ * @param The type of the next step. */ public interface TermsPredicateFieldMoreStep< - S extends TermsPredicateFieldMoreStep, + SR, + S extends TermsPredicateFieldMoreStep, N extends TermsPredicateOptionsStep> extends TermsPredicateMatchingStep, MultiFieldPredicateFieldBoostStep { @@ -52,4 +56,49 @@ default S field(String fieldPath) { */ S fields(String... fieldPaths); + /** + * Target the given field in the terms predicate. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + @Incubating + default S field(TermsPredicateFieldReference field) { + return fields( field.absolutePath() ); + } + + /** + * Target the given fields in the terms predicate. + *

+ * Only text fields are supported. + *

+ * Equivalent to {@link #field(String)} followed by multiple calls to + * {@link TermsPredicateFieldMoreStep#field(String)}, + * the only difference being that calls to {@link TermsPredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(String) + */ + @Incubating + @SuppressWarnings("unchecked") + default S fields(TermsPredicateFieldReference... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/TermsPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/TermsPredicateFieldStep.java index 08296895867..028b8779f7d 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/TermsPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/TermsPredicateFieldStep.java @@ -4,12 +4,15 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.TermsPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The initial step in a "terms" predicate definition, where the target field can be set. * * @param The type of the next step. */ -public interface TermsPredicateFieldStep> { +public interface TermsPredicateFieldStep> { /** * Target the given field in the terms predicate. @@ -47,4 +50,49 @@ default N field(String fieldPath) { */ N fields(String... fieldPaths); + /** + * Target the given field in the terms predicate. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + @Incubating + default N field(TermsPredicateFieldReference field) { + return fields( field.absolutePath() ); + } + + /** + * Target the given fields in the terms predicate. + *

+ * Only text fields are supported. + *

+ * Equivalent to {@link #field(String)} followed by multiple calls to + * {@link TermsPredicateFieldMoreStep#field(String)}, + * the only difference being that calls to {@link TermsPredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(String) + */ + @Incubating + @SuppressWarnings("unchecked") + default N fields(TermsPredicateFieldReference... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/WildcardPredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/WildcardPredicateFieldMoreStep.java index 90189a64018..59120eaa0c1 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/WildcardPredicateFieldMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/WildcardPredicateFieldMoreStep.java @@ -4,6 +4,9 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.WildcardPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The step in a "wildcard" predicate definition where the pattern to match can be set * (see the superinterface {@link WildcardPredicateMatchingStep}), @@ -14,7 +17,8 @@ * @param The type of the next step. */ public interface WildcardPredicateFieldMoreStep< - S extends WildcardPredicateFieldMoreStep, + SR, + S extends WildcardPredicateFieldMoreStep, N extends WildcardPredicateOptionsStep> extends WildcardPredicateMatchingStep, MultiFieldPredicateFieldBoostStep { @@ -52,4 +56,50 @@ default S field(String fieldPath) { */ S fields(String... fieldPaths); + /** + * Target the given field in the wildcard predicate. + *

+ * Only text fields are supported. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + default S field(WildcardPredicateFieldReference field) { + return fields( field.absolutePath() ); + } + + /** + * Target the given fields in the wildcard predicate. + *

+ * Only text fields are supported. + *

+ * Equivalent to {@link #field(String)} followed by multiple calls to + * {@link WildcardPredicateFieldMoreStep#field(String)}, + * the only difference being that calls to {@link WildcardPredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(String) + */ + @Incubating + @SuppressWarnings("unchecked") + default S fields(WildcardPredicateFieldReference... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/WildcardPredicateFieldStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/WildcardPredicateFieldStep.java index a951617e3d0..b1d2605793f 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/WildcardPredicateFieldStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/WildcardPredicateFieldStep.java @@ -4,12 +4,15 @@ */ package org.hibernate.search.engine.search.predicate.dsl; +import org.hibernate.search.engine.search.reference.predicate.WildcardPredicateFieldReference; +import org.hibernate.search.util.common.annotation.Incubating; + /** * The initial step in a "wildcard" predicate definition, where the target field can be set. * * @param The type of the next step. */ -public interface WildcardPredicateFieldStep> { +public interface WildcardPredicateFieldStep> { /** * Target the given field in the wildcard predicate. @@ -49,4 +52,50 @@ default N field(String fieldPath) { */ N fields(String... fieldPaths); + /** + * Target the given field in the wildcard predicate. + *

+ * Only text fields are supported. + *

+ * Multiple fields may be targeted by the same predicate: + * the predicate will match if any targeted field matches. + *

+ * When targeting multiple fields, those fields must have compatible types. + * Please refer to the reference documentation for more information. + * + * @param field The field reference representing a path to the index field + * to apply the predicate on. + * @return The next step. + */ + default N field(WildcardPredicateFieldReference field) { + return fields( field.absolutePath() ); + } + + /** + * Target the given fields in the wildcard predicate. + *

+ * Only text fields are supported. + *

+ * Equivalent to {@link #field(String)} followed by multiple calls to + * {@link WildcardPredicateFieldMoreStep#field(String)}, + * the only difference being that calls to {@link WildcardPredicateFieldMoreStep#boost(float)} + * and other field-specific settings on the returned step will only need to be done once + * and will apply to all the fields passed to this method. + * + * @param fields The field references representing paths to the index fields + * to apply the predicate on. + * @return The next step. + * + * @see #field(String) + */ + @Incubating + @SuppressWarnings("unchecked") + default N fields(WildcardPredicateFieldReference... fields) { + String[] paths = new String[fields.length]; + for ( int i = 0; i < fields.length; i++ ) { + paths[i] = fields[i].absolutePath(); + } + return fields( paths ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractBooleanPredicateClausesStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractBooleanPredicateClausesStep.java index 27b16ea922e..4f32d54851c 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractBooleanPredicateClausesStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractBooleanPredicateClausesStep.java @@ -17,18 +17,18 @@ import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; import org.hibernate.search.engine.search.predicate.spi.BooleanPredicateBuilder; -abstract class AbstractBooleanPredicateClausesStep> +abstract class AbstractBooleanPredicateClausesStep> extends AbstractPredicateFinalStep - implements GenericBooleanPredicateClausesStep { + implements GenericBooleanPredicateClausesStep { - private final SearchPredicateFactory factory; + private final SearchPredicateFactory factory; private final BooleanPredicateBuilder builder; private final MinimumShouldMatchConditionStepImpl minimumShouldMatchStep; public AbstractBooleanPredicateClausesStep(SearchPredicateDslContext dslContext, - SearchPredicateFactory factory) { + SearchPredicateFactory factory) { super( dslContext ); this.factory = factory; this.builder = dslContext.scope().predicateBuilders().bool(); @@ -81,28 +81,28 @@ public S filter(SearchPredicate searchPredicate) { @Override public S must( - Function clauseContributor) { + Function, ? extends PredicateFinalStep> clauseContributor) { must( clauseContributor.apply( factory ) ); return self(); } @Override public S mustNot( - Function clauseContributor) { + Function, ? extends PredicateFinalStep> clauseContributor) { mustNot( clauseContributor.apply( factory ) ); return self(); } @Override public S should( - Function clauseContributor) { + Function, ? extends PredicateFinalStep> clauseContributor) { should( clauseContributor.apply( factory ) ); return self(); } @Override public S filter( - Function clauseContributor) { + Function, ? extends PredicateFinalStep> clauseContributor) { filter( clauseContributor.apply( factory ) ); return self(); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractMatchPredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractMatchPredicateFieldMoreStep.java new file mode 100644 index 00000000000..cd4efec9308 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractMatchPredicateFieldMoreStep.java @@ -0,0 +1,314 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.predicate.dsl.impl; + +import java.lang.invoke.MethodHandles; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +import org.hibernate.search.engine.logging.impl.Log; +import org.hibernate.search.engine.search.common.ValueModel; +import org.hibernate.search.engine.search.common.spi.SearchIndexScope; +import org.hibernate.search.engine.search.predicate.SearchPredicate; +import org.hibernate.search.engine.search.predicate.dsl.MatchPredicateFieldMoreGenericStep; +import org.hibernate.search.engine.search.predicate.dsl.MatchPredicateFieldMoreStep; +import org.hibernate.search.engine.search.predicate.dsl.MatchPredicateOptionsStep; +import org.hibernate.search.engine.search.predicate.dsl.MinimumShouldMatchConditionStep; +import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; +import org.hibernate.search.engine.search.predicate.spi.MatchPredicateBuilder; +import org.hibernate.search.engine.search.predicate.spi.MinimumShouldMatchBuilder; +import org.hibernate.search.engine.search.predicate.spi.PredicateTypeKeys; +import org.hibernate.search.engine.search.reference.predicate.MatchPredicateFieldReference; +import org.hibernate.search.util.common.impl.Contracts; +import org.hibernate.search.util.common.logging.impl.LoggerFactory; + +abstract class AbstractMatchPredicateFieldMoreStep< + CS extends AbstractMatchPredicateFieldMoreStep.GenericCommonState, + S extends AbstractMatchPredicateFieldMoreStep, + T, + V> + implements AbstractBooleanMultiFieldPredicateCommonState.FieldSetState { + + private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() ); + + protected final CS commonState; + + protected final Map predicateBuilders = new LinkedHashMap<>(); + + private Float fieldSetBoost; + + public static MatchPredicateFieldMoreStep create( + SearchPredicateDslContext dslContext, String[] fields) { + return new MatchPredicateFieldMoreStepString( + dslContext, + Arrays.asList( fields ) + ); + } + + public static MatchPredicateFieldMoreGenericStep> create( + SearchPredicateDslContext dslContext, MatchPredicateFieldReference[] fields) { + List> fieldList = Arrays.asList( fields ); + return new MatchPredicateFieldMoreStepFieldReference<>( + dslContext, + fieldList + ); + } + + protected AbstractMatchPredicateFieldMoreStep(CS commonState, List fieldPaths) { + this.commonState = commonState; + this.commonState.add( thisAsS() ); + SearchIndexScope scope = commonState.scope(); + for ( V fieldPath : fieldPaths ) { + predicateBuilders.put( fieldPath, scope.fieldQueryElement( fieldPath( fieldPath ), PredicateTypeKeys.MATCH ) ); + } + } + + protected abstract S thisAsS(); + + protected abstract String fieldPath(V field); + + public S boost(float boost) { + this.fieldSetBoost = boost; + return thisAsS(); + } + + @Override + public void contributePredicates(Consumer collector) { + for ( MatchPredicateBuilder predicateBuilder : predicateBuilders.values() ) { + // Perform last-minute changes, since it's the last call that will be made on this field set state + commonState.applyBoostAndConstantScore( fieldSetBoost, predicateBuilder ); + + collector.accept( predicateBuilder.build() ); + } + } + + private static class MatchPredicateFieldMoreStepString + extends + AbstractMatchPredicateFieldMoreStep + implements + MatchPredicateFieldMoreStep { + + MatchPredicateFieldMoreStepString(SearchPredicateDslContext dslContext, List fieldPaths) { + super( new CommonState( dslContext ), fieldPaths ); + } + + private MatchPredicateFieldMoreStepString(CommonState commonState, List fieldPaths) { + super( commonState, fieldPaths ); + } + + @Override + protected MatchPredicateFieldMoreStepString thisAsS() { + return this; + } + + @Override + protected String fieldPath(String field) { + return field; + } + + @Override + public MatchPredicateFieldMoreStepString field(String field) { + return new MatchPredicateFieldMoreStepString( commonState, Arrays.asList( field ) ); + } + + @Override + public MatchPredicateFieldMoreStepString fields(String... fieldPaths) { + return new MatchPredicateFieldMoreStepString( commonState, Arrays.asList( fieldPaths ) ); + } + + @Override + public CommonState matching(Object value, ValueModel valueModel) { + return commonState.matching( value, valueModel ); + } + + + private static class CommonState extends GenericCommonState { + + CommonState(SearchPredicateDslContext dslContext) { + super( dslContext ); + } + + CommonState matching(Object value, ValueModel valueModel) { + Contracts.assertNotNull( value, "value" ); + Contracts.assertNotNull( valueModel, "valueModel" ); + + for ( MatchPredicateFieldMoreStepString fieldSetState : getFieldSetStates() ) { + for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders.values() ) { + predicateBuilder.value( value, valueModel ); + } + } + return this; + } + + } + } + + private static class MatchPredicateFieldMoreStepFieldReference + extends + AbstractMatchPredicateFieldMoreStep, + MatchPredicateFieldMoreStepFieldReference, + T, + MatchPredicateFieldReference> + implements + MatchPredicateFieldMoreGenericStep, + MatchPredicateFieldMoreStepFieldReference.CommonState, + T, + MatchPredicateFieldReference> { + + MatchPredicateFieldMoreStepFieldReference(SearchPredicateDslContext dslContext, + List> fieldPaths) { + super( new CommonState<>( dslContext ), fieldPaths ); + } + + private MatchPredicateFieldMoreStepFieldReference(CommonState commonState, + List> fieldPaths) { + super( commonState, fieldPaths ); + } + + @Override + public MatchPredicateFieldMoreStepFieldReference field(MatchPredicateFieldReference field) { + return new MatchPredicateFieldMoreStepFieldReference<>( commonState, Collections.singletonList( field ) ); + } + + @Override + @SuppressWarnings("unchecked") + public MatchPredicateFieldMoreStepFieldReference fields( + MatchPredicateFieldReference... fieldPaths) { + return new MatchPredicateFieldMoreStepFieldReference<>( commonState, Arrays.asList( fieldPaths ) ); + } + + @Override + public CommonState matching(T value) { + return commonState.matching( value ); + } + + @Override + protected MatchPredicateFieldMoreStepFieldReference thisAsS() { + return this; + } + + @Override + protected String fieldPath(MatchPredicateFieldReference field) { + return field.absolutePath(); + } + + private static class CommonState + extends + GenericCommonState, + MatchPredicateFieldMoreStepFieldReference> { + CommonState(SearchPredicateDslContext dslContext) { + super( dslContext ); + } + + CommonState matching(T value) { + Contracts.assertNotNull( value, "value" ); + + for ( MatchPredicateFieldMoreStepFieldReference fieldSetState : getFieldSetStates() ) { + for ( Map.Entry, + MatchPredicateBuilder> entry : fieldSetState.predicateBuilders + .entrySet() ) { + entry.getValue().value( value, entry.getKey().valueModel() ); + } + } + return this; + } + } + } + + static class GenericCommonState> + extends AbstractBooleanMultiFieldPredicateCommonState, S> + implements MatchPredicateOptionsStep> { + + private final MinimumShouldMatchConditionStepImpl> minimumShouldMatchStep; + + GenericCommonState(SearchPredicateDslContext dslContext) { + super( dslContext ); + minimumShouldMatchStep = new MinimumShouldMatchConditionStepImpl<>( new MatchMinimumShouldMatchBuilder(), this ); + } + + @Override + public GenericCommonState fuzzy(int maxEditDistance, int exactPrefixLength) { + if ( maxEditDistance < 0 || 2 < maxEditDistance ) { + throw log.invalidFuzzyMaximumEditDistance( maxEditDistance ); + } + if ( exactPrefixLength < 0 ) { + throw log.invalidExactPrefixLength( exactPrefixLength ); + } + + for ( AbstractMatchPredicateFieldMoreStep fieldSetState : getFieldSetStates() ) { + for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders.values() ) { + predicateBuilder.fuzzy( maxEditDistance, exactPrefixLength ); + } + } + return this; + } + + @Override + public GenericCommonState analyzer(String analyzerName) { + for ( AbstractMatchPredicateFieldMoreStep fieldSetState : getFieldSetStates() ) { + for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders.values() ) { + predicateBuilder.analyzer( analyzerName ); + } + } + return this; + } + + @Override + public GenericCommonState skipAnalysis() { + for ( AbstractMatchPredicateFieldMoreStep fieldSetState : getFieldSetStates() ) { + for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders.values() ) { + predicateBuilder.skipAnalysis(); + } + } + return this; + } + + @Override + protected GenericCommonState thisAsS() { + return this; + } + + @Override + public MinimumShouldMatchConditionStep> minimumShouldMatch() { + return minimumShouldMatchStep; + } + + @Override + public GenericCommonState minimumShouldMatch( + Consumer> constraintContributor) { + constraintContributor.accept( minimumShouldMatchStep ); + return this; + } + + private class MatchMinimumShouldMatchBuilder implements MinimumShouldMatchBuilder { + @Override + public void minimumShouldMatchNumber(int ignoreConstraintCeiling, int matchingClausesNumber) { + for ( AbstractMatchPredicateFieldMoreStep fieldSetState : getFieldSetStates() ) { + for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders.values() ) { + predicateBuilder.minimumShouldMatchNumber( ignoreConstraintCeiling, matchingClausesNumber ); + } + } + } + + @Override + public void minimumShouldMatchPercent(int ignoreConstraintCeiling, int matchingClausesPercent) { + for ( AbstractMatchPredicateFieldMoreStep fieldSetState : getFieldSetStates() ) { + for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders.values() ) { + predicateBuilder.minimumShouldMatchPercent( ignoreConstraintCeiling, matchingClausesPercent ); + } + } + } + } + } + +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractRangePredicateFieldMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractRangePredicateFieldMoreStep.java new file mode 100644 index 00000000000..1bfc6f3825d --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractRangePredicateFieldMoreStep.java @@ -0,0 +1,294 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.predicate.dsl.impl; + +import java.lang.invoke.MethodHandles; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.stream.Collectors; + +import org.hibernate.search.engine.logging.impl.Log; +import org.hibernate.search.engine.reporting.spi.EventContexts; +import org.hibernate.search.engine.search.common.ValueModel; +import org.hibernate.search.engine.search.predicate.SearchPredicate; +import org.hibernate.search.engine.search.predicate.dsl.RangePredicateFieldMoreGenericStep; +import org.hibernate.search.engine.search.predicate.dsl.RangePredicateFieldMoreStep; +import org.hibernate.search.engine.search.predicate.dsl.RangePredicateOptionsStep; +import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; +import org.hibernate.search.engine.search.predicate.spi.PredicateTypeKeys; +import org.hibernate.search.engine.search.predicate.spi.RangePredicateBuilder; +import org.hibernate.search.engine.search.reference.predicate.RangePredicateFieldReference; +import org.hibernate.search.util.common.data.Range; +import org.hibernate.search.util.common.impl.Contracts; +import org.hibernate.search.util.common.logging.impl.LoggerFactory; +import org.hibernate.search.util.common.reporting.EventContext; + +abstract class AbstractRangePredicateFieldMoreStep< + SR, + CS extends AbstractRangePredicateFieldMoreStep.GenericCommonState, + S extends AbstractRangePredicateFieldMoreStep, + T, + V> + implements + AbstractBooleanMultiFieldPredicateCommonState.FieldSetState { + + private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() ); + + protected final CS commonState; + + private final List fields; + private final List predicateBuilders = new ArrayList<>(); + + private Float fieldSetBoost; + + public static RangePredicateFieldMoreStepString create( + SearchPredicateDslContext dslContext, String[] fields) { + return new RangePredicateFieldMoreStepString<>( + dslContext, + Arrays.asList( fields ) + ); + } + + public static RangePredicateFieldMoreStepReference create( + SearchPredicateDslContext dslContext, RangePredicateFieldReference[] fields) { + List> fieldsList = Arrays.asList( fields ); + return new RangePredicateFieldMoreStepReference<>( + dslContext, + fieldsList + ); + } + + private AbstractRangePredicateFieldMoreStep(CS commonState, List fields) { + this.commonState = commonState; + this.commonState.add( this ); + this.fields = fields; + for ( V field : fields ) { + // only check that the range predicate can be applied to the requested field: + commonState.scope().fieldQueryElement( fieldPath( field ), PredicateTypeKeys.RANGE ); + } + } + + protected abstract String fieldPath(V field); + + protected abstract S thisAsS(); + + public S boost(float boost) { + this.fieldSetBoost = boost; + return thisAsS(); + } + + @Override + public void contributePredicates(Consumer collector) { + for ( RangePredicateBuilder predicateBuilder : predicateBuilders ) { + // Perform last-minute changes, since it's the last call that will be made on this field set state + commonState.applyBoostAndConstantScore( fieldSetBoost, predicateBuilder ); + + collector.accept( predicateBuilder.build() ); + } + } + + private static class RangePredicateFieldMoreStepString + extends + AbstractRangePredicateFieldMoreStep, + RangePredicateFieldMoreStepString, + Object, + String> + implements + RangePredicateFieldMoreStep, + RangePredicateFieldMoreStepString.CommonState> { + + private RangePredicateFieldMoreStepString(SearchPredicateDslContext dslContext, List fields) { + this( new CommonState<>( dslContext ), fields ); + } + + private RangePredicateFieldMoreStepString(CommonState commonState, List fields) { + super( commonState, fields ); + } + + @Override + protected String fieldPath(String field) { + return field; + } + + @Override + protected RangePredicateFieldMoreStepString thisAsS() { + return this; + } + + @Override + public RangePredicateFieldMoreStepString fields(String... fieldPaths) { + return new RangePredicateFieldMoreStepString<>( commonState, Arrays.asList( fieldPaths ) ); + } + + @Override + public CommonState within(Range range, ValueModel convert) { + Contracts.assertNotNull( range, "range" ); + Contracts.assertNotNull( convert, "convert" ); + return (CommonState) commonState.within( range, v -> convert ); + } + + @Override + public CommonState withinAny(Collection> ranges, ValueModel valueModel) { + Contracts.assertNotNull( ranges, "ranges" ); + Contracts.assertNotNull( valueModel, "convert" ); + return (CommonState) commonState.withinAny( ranges, v -> valueModel ); + } + + public static class CommonState + extends GenericCommonState> { + CommonState(SearchPredicateDslContext dslContext) { + super( dslContext ); + } + + @Override + protected String fieldPath(String field) { + return field; + } + } + } + + private static class RangePredicateFieldMoreStepReference + extends + AbstractRangePredicateFieldMoreStep, + RangePredicateFieldMoreStepReference, + T, + RangePredicateFieldReference> + implements + RangePredicateFieldMoreGenericStep, + RangePredicateFieldMoreStepReference.CommonState, + RangePredicateFieldReference, + T> { + + private RangePredicateFieldMoreStepReference(SearchPredicateDslContext dslContext, + List> fields) { + this( new CommonState<>( dslContext ), fields ); + } + + private RangePredicateFieldMoreStepReference(CommonState commonState, + List> fields) { + super( commonState, fields ); + } + + @Override + protected String fieldPath(RangePredicateFieldReference field) { + return field.absolutePath(); + } + + @Override + protected RangePredicateFieldMoreStepReference thisAsS() { + return this; + } + + @Override + public RangePredicateFieldMoreStepReference field(RangePredicateFieldReference field) { + return new RangePredicateFieldMoreStepReference<>( commonState, List.of( field ) ); + } + + @Override + @SuppressWarnings("unchecked") + public RangePredicateFieldMoreStepReference fields(RangePredicateFieldReference... fields) { + return new RangePredicateFieldMoreStepReference<>( commonState, Arrays.asList( fields ) ); + } + + @Override + public CommonState within(Range range) { + return (CommonState) commonState.within( range, RangePredicateFieldReference::valueModel ); + } + + @Override + public CommonState withinAny(Collection> ranges, ValueModel valueModel) { + return (CommonState) commonState.withinAny( ranges, RangePredicateFieldReference::valueModel ); + } + + + public static class CommonState + extends + GenericCommonState, + RangePredicateFieldMoreStepReference> { + CommonState(SearchPredicateDslContext dslContext) { + super( dslContext ); + } + + @Override + protected String fieldPath(RangePredicateFieldReference field) { + return field.absolutePath(); + } + } + } + + abstract static class GenericCommonState> + extends + AbstractBooleanMultiFieldPredicateCommonState, + AbstractRangePredicateFieldMoreStep> + implements RangePredicateOptionsStep> { + + GenericCommonState(SearchPredicateDslContext dslContext) { + super( dslContext ); + } + + @Override + protected GenericCommonState thisAsS() { + return this; + } + + protected abstract String fieldPath(V field); + + GenericCommonState within(Range range, Function valueModelFunction) { + + if ( range.lowerBoundValue().isEmpty() && range.upperBoundValue().isEmpty() ) { + throw log.rangePredicateCannotMatchNullValue( getEventContext() ); + } + for ( var fieldSetState : getFieldSetStates() ) { + for ( V field : fieldSetState.fields ) { + ValueModel valueModel = valueModelFunction.apply( field ); + RangePredicateBuilder builder = scope().fieldQueryElement( fieldPath( field ), PredicateTypeKeys.RANGE ); + builder.within( range, valueModel, valueModel ); + fieldSetState.predicateBuilders.add( builder ); + } + } + return this; + } + + public GenericCommonState withinAny(Collection> ranges, + Function valueModelFunction) { + for ( var fieldSetState : getFieldSetStates() ) { + for ( V field : fieldSetState.fields ) { + for ( var range : ranges ) { + Contracts.assertNotNull( range, "range" ); + if ( range.lowerBoundValue().isEmpty() && range.upperBoundValue().isEmpty() ) { + throw log.rangePredicateCannotMatchNullValue( getEventContext() ); + } + ValueModel valueModel = valueModelFunction.apply( field ); + RangePredicateBuilder builder = + scope().fieldQueryElement( fieldPath( field ), PredicateTypeKeys.RANGE ); + builder.within( range, valueModel, valueModel ); + fieldSetState.predicateBuilders.add( builder ); + } + } + } + + return this; + } + + protected final EventContext getEventContext() { + return EventContexts.fromIndexFieldAbsolutePaths( + getFieldSetStates().stream().flatMap( f -> f.fields.stream() ) + .map( this::fieldPath ) + .collect( Collectors.toList() ) + ); + } + } + +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractSimpleBooleanPredicateClausesStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractSimpleBooleanPredicateClausesStep.java index cb39dc012fe..221bb4cb890 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractSimpleBooleanPredicateClausesStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/AbstractSimpleBooleanPredicateClausesStep.java @@ -18,10 +18,11 @@ import org.hibernate.search.engine.search.predicate.spi.BooleanPredicateBuilder; public abstract class AbstractSimpleBooleanPredicateClausesStep< + SR, S extends C, - C extends SimpleBooleanPredicateClausesCollector> + C extends SimpleBooleanPredicateClausesCollector> extends AbstractPredicateFinalStep - implements GenericSimpleBooleanPredicateClausesStep { + implements GenericSimpleBooleanPredicateClausesStep { public enum SimpleBooleanPredicateOperator implements BiConsumer { @@ -45,11 +46,11 @@ public void accept(BooleanPredicateBuilder builder, private final BooleanPredicateBuilder builder; - private final SearchPredicateFactory factory; + private final SearchPredicateFactory factory; AbstractSimpleBooleanPredicateClausesStep(SimpleBooleanPredicateOperator operator, SearchPredicateDslContext dslContext, - SearchPredicateFactory factory) { + SearchPredicateFactory factory) { super( dslContext ); this.operator = operator; this.builder = dslContext.scope().predicateBuilders().bool(); @@ -65,7 +66,7 @@ public S add(SearchPredicate searchPredicate) { } @Override - public S add(Function clauseContributor) { + public S add(Function, ? extends PredicateFinalStep> clauseContributor) { return add( clauseContributor.apply( factory ) ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/BooleanPredicateClausesStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/BooleanPredicateClausesStepImpl.java index a7d24c18b90..6dff18442b7 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/BooleanPredicateClausesStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/BooleanPredicateClausesStepImpl.java @@ -9,17 +9,18 @@ import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -public final class BooleanPredicateClausesStepImpl - extends AbstractBooleanPredicateClausesStep> - implements BooleanPredicateClausesStep { +public final class BooleanPredicateClausesStepImpl + extends + AbstractBooleanPredicateClausesStep, BooleanPredicateOptionsCollector> + implements BooleanPredicateClausesStep> { public BooleanPredicateClausesStepImpl(SearchPredicateDslContext dslContext, - SearchPredicateFactory factory) { + SearchPredicateFactory factory) { super( dslContext, factory ); } @Override - protected BooleanPredicateClausesStepImpl self() { + protected BooleanPredicateClausesStepImpl self() { return this; } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/ExistsPredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/ExistsPredicateFieldStepImpl.java index 2e5978506ab..74726e4d611 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/ExistsPredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/ExistsPredicateFieldStepImpl.java @@ -12,9 +12,9 @@ import org.hibernate.search.engine.search.predicate.spi.ExistsPredicateBuilder; import org.hibernate.search.engine.search.predicate.spi.PredicateTypeKeys; -public final class ExistsPredicateFieldStepImpl +public final class ExistsPredicateFieldStepImpl extends AbstractPredicateFinalStep - implements ExistsPredicateFieldStep>, + implements ExistsPredicateFieldStep>, ExistsPredicateOptionsStep> { private ExistsPredicateBuilder builder; diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/KnnPredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/KnnPredicateFieldStepImpl.java index 87e69fa3376..c42913dc01e 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/KnnPredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/KnnPredicateFieldStepImpl.java @@ -9,6 +9,7 @@ import org.hibernate.search.engine.search.predicate.SearchPredicate; import org.hibernate.search.engine.search.predicate.dsl.KnnPredicateFieldStep; import org.hibernate.search.engine.search.predicate.dsl.KnnPredicateOptionsStep; +import org.hibernate.search.engine.search.predicate.dsl.KnnPredicateVectorGenericStep; import org.hibernate.search.engine.search.predicate.dsl.KnnPredicateVectorStep; import org.hibernate.search.engine.search.predicate.dsl.PredicateFinalStep; import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; @@ -17,64 +18,63 @@ import org.hibernate.search.engine.search.predicate.spi.BooleanPredicateBuilder; import org.hibernate.search.engine.search.predicate.spi.KnnPredicateBuilder; import org.hibernate.search.engine.search.predicate.spi.PredicateTypeKeys; +import org.hibernate.search.engine.search.reference.predicate.KnnPredicateFieldReference; -public class KnnPredicateFieldStepImpl +public class KnnPredicateFieldStepImpl extends AbstractPredicateFinalStep - implements KnnPredicateFieldStep, KnnPredicateVectorStep, KnnPredicateOptionsStep { + implements KnnPredicateFieldStep, KnnPredicateVectorStep, KnnPredicateOptionsStep { - private final SearchPredicateFactory factory; + private final SearchPredicateFactory factory; private final int k; private BooleanPredicateBuilder booleanBuilder; protected KnnPredicateBuilder builder; - public KnnPredicateFieldStepImpl(SearchPredicateFactory factory, SearchPredicateDslContext dslContext, int k) { + public KnnPredicateFieldStepImpl(SearchPredicateFactory factory, SearchPredicateDslContext dslContext, int k) { super( dslContext ); this.factory = factory; this.k = k; } @Override - public KnnPredicateVectorStep field(String fieldPath) { + public KnnPredicateVectorStep field(String fieldPath) { this.builder = dslContext.scope().fieldQueryElement( fieldPath, PredicateTypeKeys.KNN ); this.builder.k( k ); return this; } @Override - protected SearchPredicate build() { - if ( this.booleanBuilder != null ) { - builder.filter( booleanBuilder.build() ); - } - return builder.build(); + public KnnPredicateVectorGenericStep field(KnnPredicateFieldReference field) { + this.field( field.absolutePath() ); + return new KnnPredicateVectorGenericStepImpl<>(); } @Override - public KnnPredicateOptionsStep filter(SearchPredicate searchPredicate) { + public KnnPredicateOptionsStep filter(SearchPredicate searchPredicate) { this.booleanPredicateBuilder().must( searchPredicate ); return this; } @Override - public KnnPredicateOptionsStep filter( - Function clauseContributor) { + public KnnPredicateOptionsStep filter( + Function, ? extends PredicateFinalStep> clauseContributor) { this.booleanPredicateBuilder().must( clauseContributor.apply( factory ).toPredicate() ); return this; } @Override - public KnnPredicateOptionsStep matching(byte... vector) { + public KnnPredicateOptionsStep matching(byte... vector) { this.builder.vector( vector ); return this; } @Override - public KnnPredicateOptionsStep matching(float... vector) { + public KnnPredicateOptionsStep matching(float... vector) { this.builder.vector( vector ); return this; } @Override - public KnnPredicateOptionsStep requiredMinimumSimilarity(float similarity) { + public KnnPredicateOptionsStep requiredMinimumSimilarity(float similarity) { this.builder.requiredMinimumSimilarity( similarity ); return this; } @@ -86,17 +86,25 @@ public KnnPredicateOptionsStep requiredMinimumScore(float score) { } @Override - public KnnPredicateOptionsStep boost(float boost) { + public KnnPredicateOptionsStep boost(float boost) { this.builder.boost( boost ); return this; } @Override - public KnnPredicateOptionsStep constantScore() { + public KnnPredicateOptionsStep constantScore() { this.builder.constantScore(); return this; } + @Override + protected SearchPredicate build() { + if ( this.booleanBuilder != null ) { + builder.filter( booleanBuilder.build() ); + } + return builder.build(); + } + private BooleanPredicateBuilder booleanPredicateBuilder() { if ( this.booleanBuilder == null ) { this.booleanBuilder = dslContext.scope().predicateBuilders().bool(); @@ -104,4 +112,13 @@ private BooleanPredicateBuilder booleanPredicateBuilder() { return this.booleanBuilder; } + private class KnnPredicateVectorGenericStepImpl implements KnnPredicateVectorGenericStep { + + @Override + public KnnPredicateOptionsStep matching(T vector) { + KnnPredicateFieldStepImpl.this.builder.vector( vector ); + return KnnPredicateFieldStepImpl.this; + } + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchAllPredicateOptionsStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchAllPredicateOptionsStepImpl.java index 2adc99a3e4a..8d197471945 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchAllPredicateOptionsStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchAllPredicateOptionsStepImpl.java @@ -16,11 +16,11 @@ import org.hibernate.search.engine.search.predicate.spi.MatchAllPredicateBuilder; import org.hibernate.search.engine.search.predicate.spi.SearchPredicateBuilder; -public final class MatchAllPredicateOptionsStepImpl +public final class MatchAllPredicateOptionsStepImpl extends AbstractPredicateFinalStep - implements MatchAllPredicateOptionsStep> { + implements MatchAllPredicateOptionsStep> { - private final SearchPredicateFactory factory; + private final SearchPredicateFactory factory; private final MatchAllPredicateBuilder matchAllBuilder; private MatchAllExceptState exceptState; @@ -28,33 +28,33 @@ public final class MatchAllPredicateOptionsStepImpl private boolean constantScore = false; public MatchAllPredicateOptionsStepImpl(SearchPredicateDslContext dslContext, - SearchPredicateFactory factory) { + SearchPredicateFactory factory) { super( dslContext ); this.factory = factory; this.matchAllBuilder = dslContext.scope().predicateBuilders().matchAll(); } @Override - public MatchAllPredicateOptionsStep boost(float boost) { + public MatchAllPredicateOptionsStep boost(float boost) { this.boost = boost; return this; } @Override - public MatchAllPredicateOptionsStep constantScore() { + public MatchAllPredicateOptionsStep constantScore() { this.constantScore = true; return this; } @Override - public MatchAllPredicateOptionsStep except(SearchPredicate searchPredicate) { + public MatchAllPredicateOptionsStep except(SearchPredicate searchPredicate) { getExceptState().addClause( searchPredicate ); return this; } @Override - public MatchAllPredicateOptionsStep except( - Function clauseContributor) { + public MatchAllPredicateOptionsStep except( + Function, ? extends PredicateFinalStep> clauseContributor) { getExceptState().addClause( clauseContributor ); return this; } @@ -92,7 +92,7 @@ private class MatchAllExceptState { this.booleanBuilder = dslContext.scope().predicateBuilders().bool(); } - void addClause(Function clauseContributor) { + void addClause(Function, ? extends PredicateFinalStep> clauseContributor) { addClause( clauseContributor.apply( factory ).toPredicate() ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchPredicateFieldMoreStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchPredicateFieldMoreStepImpl.java deleted file mode 100644 index aab3b321845..00000000000 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchPredicateFieldMoreStepImpl.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.search.engine.search.predicate.dsl.impl; - -import java.lang.invoke.MethodHandles; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.function.Consumer; - -import org.hibernate.search.engine.logging.impl.Log; -import org.hibernate.search.engine.search.common.ValueModel; -import org.hibernate.search.engine.search.common.spi.SearchIndexScope; -import org.hibernate.search.engine.search.predicate.SearchPredicate; -import org.hibernate.search.engine.search.predicate.dsl.MatchPredicateFieldMoreStep; -import org.hibernate.search.engine.search.predicate.dsl.MatchPredicateOptionsStep; -import org.hibernate.search.engine.search.predicate.dsl.MinimumShouldMatchConditionStep; -import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -import org.hibernate.search.engine.search.predicate.spi.MatchPredicateBuilder; -import org.hibernate.search.engine.search.predicate.spi.MinimumShouldMatchBuilder; -import org.hibernate.search.engine.search.predicate.spi.PredicateTypeKeys; -import org.hibernate.search.util.common.impl.Contracts; -import org.hibernate.search.util.common.logging.impl.LoggerFactory; - -class MatchPredicateFieldMoreStepImpl - implements MatchPredicateFieldMoreStep>, - AbstractBooleanMultiFieldPredicateCommonState.FieldSetState { - - private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() ); - - private final CommonState commonState; - - private final List predicateBuilders = new ArrayList<>(); - - private Float fieldSetBoost; - - MatchPredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { - this.commonState = commonState; - this.commonState.add( this ); - SearchIndexScope scope = commonState.scope(); - for ( String fieldPath : fieldPaths ) { - predicateBuilders.add( scope.fieldQueryElement( fieldPath, PredicateTypeKeys.MATCH ) ); - } - } - - @Override - public MatchPredicateFieldMoreStepImpl fields(String... fieldPaths) { - return new MatchPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); - } - - @Override - public MatchPredicateFieldMoreStepImpl boost(float boost) { - this.fieldSetBoost = boost; - return this; - } - - @Override - public MatchPredicateOptionsStep matching(Object value, ValueModel valueModel) { - return commonState.matching( value, valueModel ); - } - - @Override - public void contributePredicates(Consumer collector) { - for ( MatchPredicateBuilder predicateBuilder : predicateBuilders ) { - // Perform last-minute changes, since it's the last call that will be made on this field set state - commonState.applyBoostAndConstantScore( fieldSetBoost, predicateBuilder ); - - collector.accept( predicateBuilder.build() ); - } - } - - static class CommonState extends AbstractBooleanMultiFieldPredicateCommonState - implements MatchPredicateOptionsStep { - private final MinimumShouldMatchConditionStepImpl minimumShouldMatchStep; - - CommonState(SearchPredicateDslContext dslContext) { - super( dslContext ); - minimumShouldMatchStep = new MinimumShouldMatchConditionStepImpl<>( new MatchMinimumShouldMatchBuilder(), this ); - } - - MatchPredicateOptionsStep matching(Object value, ValueModel valueModel) { - Contracts.assertNotNull( value, "value" ); - Contracts.assertNotNull( valueModel, "valueModel" ); - - for ( MatchPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { - for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { - predicateBuilder.value( value, valueModel ); - } - } - return this; - } - - @Override - public CommonState fuzzy(int maxEditDistance, int exactPrefixLength) { - if ( maxEditDistance < 0 || 2 < maxEditDistance ) { - throw log.invalidFuzzyMaximumEditDistance( maxEditDistance ); - } - if ( exactPrefixLength < 0 ) { - throw log.invalidExactPrefixLength( exactPrefixLength ); - } - - for ( MatchPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { - for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { - predicateBuilder.fuzzy( maxEditDistance, exactPrefixLength ); - } - } - return this; - } - - @Override - public CommonState analyzer(String analyzerName) { - for ( MatchPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { - for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { - predicateBuilder.analyzer( analyzerName ); - } - } - return this; - } - - @Override - public CommonState skipAnalysis() { - for ( MatchPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { - for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { - predicateBuilder.skipAnalysis(); - } - } - return this; - } - - @Override - protected CommonState thisAsS() { - return this; - } - - @Override - public MinimumShouldMatchConditionStep minimumShouldMatch() { - return minimumShouldMatchStep; - } - - @Override - public CommonState minimumShouldMatch(Consumer> constraintContributor) { - constraintContributor.accept( minimumShouldMatchStep ); - return this; - } - - private class MatchMinimumShouldMatchBuilder implements MinimumShouldMatchBuilder { - @Override - public void minimumShouldMatchNumber(int ignoreConstraintCeiling, int matchingClausesNumber) { - for ( MatchPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { - for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { - predicateBuilder.minimumShouldMatchNumber( ignoreConstraintCeiling, matchingClausesNumber ); - } - } - } - - @Override - public void minimumShouldMatchPercent(int ignoreConstraintCeiling, int matchingClausesPercent) { - for ( MatchPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { - for ( MatchPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { - predicateBuilder.minimumShouldMatchPercent( ignoreConstraintCeiling, matchingClausesPercent ); - } - } - } - } - } - -} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchPredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchPredicateFieldStepImpl.java index b1945823a2d..7d0f999e5db 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchPredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/MatchPredicateFieldStepImpl.java @@ -4,22 +4,29 @@ */ package org.hibernate.search.engine.search.predicate.dsl.impl; -import java.util.Arrays; - +import org.hibernate.search.engine.search.predicate.dsl.MatchPredicateFieldMoreGenericStep; import org.hibernate.search.engine.search.predicate.dsl.MatchPredicateFieldMoreStep; import org.hibernate.search.engine.search.predicate.dsl.MatchPredicateFieldStep; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; +import org.hibernate.search.engine.search.reference.predicate.MatchPredicateFieldReference; -public final class MatchPredicateFieldStepImpl implements MatchPredicateFieldStep> { +public final class MatchPredicateFieldStepImpl implements MatchPredicateFieldStep> { - private final MatchPredicateFieldMoreStepImpl.CommonState commonState; + private final SearchPredicateDslContext dslContext; public MatchPredicateFieldStepImpl(SearchPredicateDslContext dslContext) { - this.commonState = new MatchPredicateFieldMoreStepImpl.CommonState( dslContext ); + this.dslContext = dslContext; } @Override public MatchPredicateFieldMoreStep fields(String... fieldPaths) { - return new MatchPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + return AbstractMatchPredicateFieldMoreStep.create( dslContext, fieldPaths ); + } + + @Override + @SuppressWarnings("unchecked") + public MatchPredicateFieldMoreGenericStep> fields( + MatchPredicateFieldReference... fields) { + return AbstractMatchPredicateFieldMoreStep.create( dslContext, fields ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NamedPredicateOptionsStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NamedPredicateOptionsStepImpl.java index bebc590bb75..5f1737ae9a8 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NamedPredicateOptionsStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NamedPredicateOptionsStepImpl.java @@ -20,7 +20,7 @@ public class NamedPredicateOptionsStepImpl private final NamedPredicateBuilder builder; - public NamedPredicateOptionsStepImpl(SearchPredicateFactory predicateFactory, + public NamedPredicateOptionsStepImpl(SearchPredicateFactory predicateFactory, SearchPredicateDslContext dslContext, String fieldPath, String predicateName) { super( dslContext ); SearchIndexScope scope = dslContext.scope(); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NestedPredicateClausesStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NestedPredicateClausesStepImpl.java index 8e46457a7bb..d0b5b21a019 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NestedPredicateClausesStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NestedPredicateClausesStepImpl.java @@ -12,20 +12,23 @@ import org.hibernate.search.engine.search.predicate.spi.NestedPredicateBuilder; import org.hibernate.search.engine.search.predicate.spi.PredicateTypeKeys; -public final class NestedPredicateClausesStepImpl - extends AbstractSimpleBooleanPredicateClausesStep> - implements NestedPredicateClausesStep { +public final class NestedPredicateClausesStepImpl + extends + AbstractSimpleBooleanPredicateClausesStep, + NestedPredicateClausesCollector> + implements NestedPredicateClausesStep> { private final NestedPredicateBuilder builder; public NestedPredicateClausesStepImpl(SearchPredicateDslContext dslContext, String objectFieldPath, - SearchPredicateFactory factory) { + SearchPredicateFactory factory) { super( SimpleBooleanPredicateOperator.AND, dslContext, factory ); this.builder = dslContext.scope().fieldQueryElement( objectFieldPath, PredicateTypeKeys.NESTED ); } @Override - protected NestedPredicateClausesStepImpl self() { + protected NestedPredicateClausesStepImpl self() { return this; } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NestedPredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NestedPredicateFieldStepImpl.java index 2e06bd5de72..9917dce78bb 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NestedPredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/NestedPredicateFieldStepImpl.java @@ -7,6 +7,8 @@ import java.util.function.Function; import org.hibernate.search.engine.search.predicate.SearchPredicate; +import org.hibernate.search.engine.search.predicate.dsl.NestedPredicateNestStep; +import org.hibernate.search.engine.search.predicate.dsl.NestedPredicateOptionsStep; import org.hibernate.search.engine.search.predicate.dsl.PredicateFinalStep; import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; import org.hibernate.search.engine.search.predicate.dsl.spi.AbstractPredicateFinalStep; @@ -15,25 +17,27 @@ import org.hibernate.search.engine.search.predicate.spi.PredicateTypeKeys; @Deprecated -public final class NestedPredicateFieldStepImpl +public final class NestedPredicateFieldStepImpl extends AbstractPredicateFinalStep implements org.hibernate.search.engine.search.predicate.dsl.NestedPredicateFieldStep< - org.hibernate.search.engine.search.predicate.dsl.NestedPredicateNestStep>, + SR, + NestedPredicateNestStep>, org.hibernate.search.engine.search.predicate.dsl.NestedPredicateNestStep< - org.hibernate.search.engine.search.predicate.dsl.NestedPredicateOptionsStep>, + SR, + NestedPredicateOptionsStep>, org.hibernate.search.engine.search.predicate.dsl.NestedPredicateOptionsStep< org.hibernate.search.engine.search.predicate.dsl.NestedPredicateOptionsStep> { - private final SearchPredicateFactory factory; + private final SearchPredicateFactory factory; private NestedPredicateBuilder builder; - public NestedPredicateFieldStepImpl(SearchPredicateDslContext dslContext, SearchPredicateFactory factory) { + public NestedPredicateFieldStepImpl(SearchPredicateDslContext dslContext, SearchPredicateFactory factory) { super( dslContext ); this.factory = factory; } @Override - public org.hibernate.search.engine.search.predicate.dsl.NestedPredicateNestStep objectField(String fieldPath) { + public org.hibernate.search.engine.search.predicate.dsl.NestedPredicateNestStep objectField(String fieldPath) { this.builder = dslContext.scope().fieldQueryElement( fieldPath, PredicateTypeKeys.NESTED ); return this; } @@ -47,7 +51,7 @@ public org.hibernate.search.engine.search.predicate.dsl.NestedPredicateOptionsSt @Override public org.hibernate.search.engine.search.predicate.dsl.NestedPredicateOptionsStep nest( - Function predicateContributor) { + Function, ? extends PredicateFinalStep> predicateContributor) { return nest( predicateContributor.apply( factory ) ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PhrasePredicateFieldMoreStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PhrasePredicateFieldMoreStepImpl.java index 0978eb3e10d..76cffc38624 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PhrasePredicateFieldMoreStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PhrasePredicateFieldMoreStepImpl.java @@ -21,19 +21,19 @@ import org.hibernate.search.util.common.impl.Contracts; import org.hibernate.search.util.common.logging.impl.LoggerFactory; -class PhrasePredicateFieldMoreStepImpl - implements PhrasePredicateFieldMoreStep>, +class PhrasePredicateFieldMoreStepImpl + implements PhrasePredicateFieldMoreStep, PhrasePredicateOptionsStep>, AbstractBooleanMultiFieldPredicateCommonState.FieldSetState { private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() ); - private final CommonState commonState; + private final CommonState commonState; private final List predicateBuilders = new ArrayList<>(); private Float fieldSetBoost; - PhrasePredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { + PhrasePredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { this.commonState = commonState; this.commonState.add( this ); SearchIndexScope scope = commonState.scope(); @@ -43,12 +43,12 @@ class PhrasePredicateFieldMoreStepImpl } @Override - public PhrasePredicateFieldMoreStepImpl fields(String... fieldPaths) { - return new PhrasePredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public PhrasePredicateFieldMoreStepImpl fields(String... fieldPaths) { + return new PhrasePredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); } @Override - public PhrasePredicateFieldMoreStepImpl boost(float boost) { + public PhrasePredicateFieldMoreStepImpl boost(float boost) { this.fieldSetBoost = boost; return this; } @@ -68,9 +68,9 @@ public void contributePredicates(Consumer collector) { } } - static class CommonState - extends AbstractBooleanMultiFieldPredicateCommonState - implements PhrasePredicateOptionsStep { + static class CommonState + extends AbstractBooleanMultiFieldPredicateCommonState, PhrasePredicateFieldMoreStepImpl> + implements PhrasePredicateOptionsStep> { CommonState(SearchPredicateDslContext dslContext) { super( dslContext ); @@ -78,7 +78,7 @@ static class CommonState private PhrasePredicateOptionsStep matching(String phrase) { Contracts.assertNotNull( phrase, "phrase" ); - for ( PhrasePredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { + for ( PhrasePredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { for ( PhrasePredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { predicateBuilder.phrase( phrase ); } @@ -87,12 +87,12 @@ private PhrasePredicateOptionsStep matching(String phrase) { } @Override - public CommonState slop(int slop) { + public CommonState slop(int slop) { if ( slop < 0 ) { throw log.invalidPhrasePredicateSlop( slop ); } - for ( PhrasePredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { + for ( PhrasePredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { for ( PhrasePredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { predicateBuilder.slop( slop ); } @@ -101,8 +101,8 @@ public CommonState slop(int slop) { } @Override - public CommonState analyzer(String analyzerName) { - for ( PhrasePredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { + public CommonState analyzer(String analyzerName) { + for ( PhrasePredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { for ( PhrasePredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { predicateBuilder.analyzer( analyzerName ); } @@ -111,8 +111,8 @@ public CommonState analyzer(String analyzerName) { } @Override - public CommonState skipAnalysis() { - for ( PhrasePredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { + public CommonState skipAnalysis() { + for ( PhrasePredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { for ( PhrasePredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { predicateBuilder.skipAnalysis(); } @@ -121,7 +121,7 @@ public CommonState skipAnalysis() { } @Override - protected CommonState thisAsS() { + protected CommonState thisAsS() { return this; } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PhrasePredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PhrasePredicateFieldStepImpl.java index 06017fa11d5..a01354b134e 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PhrasePredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PhrasePredicateFieldStepImpl.java @@ -10,16 +10,17 @@ import org.hibernate.search.engine.search.predicate.dsl.PhrasePredicateFieldStep; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -public final class PhrasePredicateFieldStepImpl implements PhrasePredicateFieldStep> { +public final class PhrasePredicateFieldStepImpl + implements PhrasePredicateFieldStep> { - private final PhrasePredicateFieldMoreStepImpl.CommonState commonState; + private final PhrasePredicateFieldMoreStepImpl.CommonState commonState; public PhrasePredicateFieldStepImpl(SearchPredicateDslContext dslContext) { - this.commonState = new PhrasePredicateFieldMoreStepImpl.CommonState( dslContext ); + this.commonState = new PhrasePredicateFieldMoreStepImpl.CommonState( dslContext ); } @Override - public PhrasePredicateFieldMoreStep fields(String... fieldPaths) { - return new PhrasePredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public PhrasePredicateFieldMoreStep fields(String... fieldPaths) { + return new PhrasePredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PrefixPredicateFieldMoreStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PrefixPredicateFieldMoreStepImpl.java index 3314e1665ae..046183a0303 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PrefixPredicateFieldMoreStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PrefixPredicateFieldMoreStepImpl.java @@ -18,17 +18,17 @@ import org.hibernate.search.engine.search.predicate.spi.PrefixPredicateBuilder; import org.hibernate.search.util.common.impl.Contracts; -class PrefixPredicateFieldMoreStepImpl - implements PrefixPredicateFieldMoreStep>, +class PrefixPredicateFieldMoreStepImpl + implements PrefixPredicateFieldMoreStep, PrefixPredicateOptionsStep>, AbstractBooleanMultiFieldPredicateCommonState.FieldSetState { - private final CommonState commonState; + private final CommonState commonState; private final List predicateBuilders = new ArrayList<>(); private Float fieldSetBoost; - PrefixPredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { + PrefixPredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { this.commonState = commonState; this.commonState.add( this ); SearchIndexScope scope = commonState.scope(); @@ -38,12 +38,12 @@ class PrefixPredicateFieldMoreStepImpl } @Override - public PrefixPredicateFieldMoreStepImpl fields(String... fieldPaths) { - return new PrefixPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public PrefixPredicateFieldMoreStepImpl fields(String... fieldPaths) { + return new PrefixPredicateFieldMoreStepImpl<>( commonState, Arrays.asList( fieldPaths ) ); } @Override - public PrefixPredicateFieldMoreStepImpl boost(float boost) { + public PrefixPredicateFieldMoreStepImpl boost(float boost) { this.fieldSetBoost = boost; return this; } @@ -63,9 +63,9 @@ public void contributePredicates(Consumer collector) { } } - static class CommonState - extends AbstractBooleanMultiFieldPredicateCommonState - implements PrefixPredicateOptionsStep { + static class CommonState + extends AbstractBooleanMultiFieldPredicateCommonState, PrefixPredicateFieldMoreStepImpl> + implements PrefixPredicateOptionsStep> { CommonState(SearchPredicateDslContext dslContext) { super( dslContext ); @@ -73,7 +73,7 @@ static class CommonState private PrefixPredicateOptionsStep matching(String prefix) { Contracts.assertNotNull( prefix, "prefix" ); - for ( PrefixPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { + for ( PrefixPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { for ( PrefixPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { predicateBuilder.prefix( prefix ); } @@ -82,7 +82,7 @@ private PrefixPredicateOptionsStep matching(String prefix) { } @Override - protected CommonState thisAsS() { + protected CommonState thisAsS() { return this; } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PrefixPredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PrefixPredicateFieldStepImpl.java index cd4920e34c4..a29b86ad4d3 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PrefixPredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/PrefixPredicateFieldStepImpl.java @@ -10,17 +10,17 @@ import org.hibernate.search.engine.search.predicate.dsl.PrefixPredicateFieldStep; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -public final class PrefixPredicateFieldStepImpl - implements PrefixPredicateFieldStep> { +public final class PrefixPredicateFieldStepImpl + implements PrefixPredicateFieldStep> { - private final PrefixPredicateFieldMoreStepImpl.CommonState commonState; + private final PrefixPredicateFieldMoreStepImpl.CommonState commonState; public PrefixPredicateFieldStepImpl(SearchPredicateDslContext dslContext) { - this.commonState = new PrefixPredicateFieldMoreStepImpl.CommonState( dslContext ); + this.commonState = new PrefixPredicateFieldMoreStepImpl.CommonState<>( dslContext ); } @Override - public PrefixPredicateFieldMoreStep fields(String... fieldPaths) { - return new PrefixPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public PrefixPredicateFieldMoreStep fields(String... fieldPaths) { + return new PrefixPredicateFieldMoreStepImpl<>( commonState, Arrays.asList( fieldPaths ) ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/QueryStringPredicateFieldMoreStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/QueryStringPredicateFieldMoreStepImpl.java index bcad5aac170..754ed985520 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/QueryStringPredicateFieldMoreStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/QueryStringPredicateFieldMoreStepImpl.java @@ -20,9 +20,9 @@ import org.hibernate.search.engine.search.predicate.spi.QueryStringPredicateBuilder; import org.hibernate.search.util.common.logging.impl.LoggerFactory; -class QueryStringPredicateFieldMoreStepImpl +class QueryStringPredicateFieldMoreStepImpl implements - QueryStringPredicateFieldMoreStep> { + QueryStringPredicateFieldMoreStep, QueryStringPredicateOptionsStep> { private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() ); @@ -38,12 +38,12 @@ class QueryStringPredicateFieldMoreStepImpl } @Override - public QueryStringPredicateFieldMoreStepImpl fields(String... fieldPaths) { - return new QueryStringPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public QueryStringPredicateFieldMoreStepImpl fields(String... fieldPaths) { + return new QueryStringPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); } @Override - public QueryStringPredicateFieldMoreStepImpl boost(float boost) { + public QueryStringPredicateFieldMoreStepImpl boost(float boost) { fieldStates.forEach( c -> c.boost( boost ) ); return this; } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/QueryStringPredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/QueryStringPredicateFieldStepImpl.java index 1cf0c3529a9..ceca81dd808 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/QueryStringPredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/QueryStringPredicateFieldStepImpl.java @@ -10,8 +10,8 @@ import org.hibernate.search.engine.search.predicate.dsl.QueryStringPredicateFieldStep; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -public final class QueryStringPredicateFieldStepImpl - implements QueryStringPredicateFieldStep> { +public final class QueryStringPredicateFieldStepImpl + implements QueryStringPredicateFieldStep> { private final QueryStringPredicateFieldMoreStepImpl.CommonState commonState; @@ -20,7 +20,7 @@ public QueryStringPredicateFieldStepImpl(SearchPredicateDslContext dslContext } @Override - public QueryStringPredicateFieldMoreStep fields(String... fieldPaths) { - return new QueryStringPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public QueryStringPredicateFieldMoreStep fields(String... fieldPaths) { + return new QueryStringPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RangePredicateFieldMoreStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RangePredicateFieldMoreStepImpl.java deleted file mode 100644 index 78ce23a91e4..00000000000 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RangePredicateFieldMoreStepImpl.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.search.engine.search.predicate.dsl.impl; - -import java.lang.invoke.MethodHandles; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.function.Consumer; -import java.util.stream.Collectors; - -import org.hibernate.search.engine.logging.impl.Log; -import org.hibernate.search.engine.reporting.spi.EventContexts; -import org.hibernate.search.engine.search.common.ValueModel; -import org.hibernate.search.engine.search.predicate.SearchPredicate; -import org.hibernate.search.engine.search.predicate.dsl.RangePredicateFieldMoreStep; -import org.hibernate.search.engine.search.predicate.dsl.RangePredicateOptionsStep; -import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -import org.hibernate.search.engine.search.predicate.spi.PredicateTypeKeys; -import org.hibernate.search.engine.search.predicate.spi.RangePredicateBuilder; -import org.hibernate.search.util.common.data.Range; -import org.hibernate.search.util.common.impl.Contracts; -import org.hibernate.search.util.common.logging.impl.LoggerFactory; -import org.hibernate.search.util.common.reporting.EventContext; - -class RangePredicateFieldMoreStepImpl - implements RangePredicateFieldMoreStep>, - AbstractBooleanMultiFieldPredicateCommonState.FieldSetState { - - private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() ); - - private final CommonState commonState; - - private final List fieldPaths; - private final List predicateBuilders = new ArrayList<>(); - - private Float fieldSetBoost; - - RangePredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { - this.commonState = commonState; - this.commonState.add( this ); - this.fieldPaths = fieldPaths; - for ( String path : fieldPaths ) { - // only check that the range predicate can be applied to the requested field: - commonState.scope().fieldQueryElement( path, PredicateTypeKeys.RANGE ); - } - } - - @Override - public RangePredicateFieldMoreStepImpl fields(String... fieldPaths) { - return new RangePredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); - } - - @Override - public RangePredicateFieldMoreStepImpl boost(float boost) { - this.fieldSetBoost = boost; - return this; - } - - @Override - public RangePredicateOptionsStep within(Range range, ValueModel valueModel) { - return commonState.within( range, valueModel, valueModel ); - } - - @Override - public RangePredicateOptionsStep withinAny(Collection> ranges, ValueModel valueModel) { - return commonState.withinAny( ranges, valueModel ); - } - - @Override - public void contributePredicates(Consumer collector) { - for ( RangePredicateBuilder predicateBuilder : predicateBuilders ) { - // Perform last-minute changes, since it's the last call that will be made on this field set state - commonState.applyBoostAndConstantScore( fieldSetBoost, predicateBuilder ); - - collector.accept( predicateBuilder.build() ); - } - } - - static class CommonState - extends AbstractBooleanMultiFieldPredicateCommonState - implements RangePredicateOptionsStep { - - CommonState(SearchPredicateDslContext dslContext) { - super( dslContext ); - } - - CommonState within(Range range, ValueModel lowerBoundModel, ValueModel upperBoundModel) { - Contracts.assertNotNull( range, "range" ); - Contracts.assertNotNull( lowerBoundModel, "lowerBoundModel" ); - Contracts.assertNotNull( upperBoundModel, "upperBoundModel" ); - if ( range.lowerBoundValue().isEmpty() && range.upperBoundValue().isEmpty() ) { - throw log.rangePredicateCannotMatchNullValue( getEventContext() ); - } - for ( RangePredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { - for ( String path : fieldSetState.fieldPaths ) { - RangePredicateBuilder builder = scope().fieldQueryElement( path, PredicateTypeKeys.RANGE ); - builder.within( range, lowerBoundModel, upperBoundModel ); - fieldSetState.predicateBuilders.add( builder ); - } - } - return this; - } - - public CommonState withinAny(Collection> ranges, ValueModel valueModel) { - Contracts.assertNotNull( valueModel, "valueModel" ); - for ( RangePredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { - for ( String path : fieldSetState.fieldPaths ) { - for ( var range : ranges ) { - Contracts.assertNotNull( range, "range" ); - if ( range.lowerBoundValue().isEmpty() && range.upperBoundValue().isEmpty() ) { - throw log.rangePredicateCannotMatchNullValue( getEventContext() ); - } - RangePredicateBuilder builder = scope().fieldQueryElement( path, PredicateTypeKeys.RANGE ); - builder.within( range, valueModel, valueModel ); - fieldSetState.predicateBuilders.add( builder ); - } - } - } - - return this; - } - - @Override - protected CommonState thisAsS() { - return this; - } - - protected final EventContext getEventContext() { - return EventContexts.fromIndexFieldAbsolutePaths( - getFieldSetStates().stream().flatMap( f -> f.fieldPaths.stream() ) - .collect( Collectors.toList() ) - ); - } - } - -} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RangePredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RangePredicateFieldStepImpl.java index e496d495184..9899e153264 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RangePredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RangePredicateFieldStepImpl.java @@ -4,22 +4,32 @@ */ package org.hibernate.search.engine.search.predicate.dsl.impl; -import java.util.Arrays; - +import org.hibernate.search.engine.search.predicate.dsl.RangePredicateFieldMoreGenericStep; import org.hibernate.search.engine.search.predicate.dsl.RangePredicateFieldMoreStep; import org.hibernate.search.engine.search.predicate.dsl.RangePredicateFieldStep; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; +import org.hibernate.search.engine.search.reference.predicate.RangePredicateFieldReference; -public final class RangePredicateFieldStepImpl implements RangePredicateFieldStep> { +public final class RangePredicateFieldStepImpl + implements + RangePredicateFieldStep> { - private final RangePredicateFieldMoreStepImpl.CommonState commonState; + private final SearchPredicateDslContext dslContext; public RangePredicateFieldStepImpl(SearchPredicateDslContext dslContext) { - this.commonState = new RangePredicateFieldMoreStepImpl.CommonState( dslContext ); + this.dslContext = dslContext; } @Override - public RangePredicateFieldMoreStep fields(String... fieldPaths) { - return new RangePredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public RangePredicateFieldMoreStep fields(String... fieldPaths) { + return AbstractRangePredicateFieldMoreStep.create( dslContext, fieldPaths ); } + + @Override + @SuppressWarnings("unchecked") + public RangePredicateFieldMoreGenericStep, T> fields( + RangePredicateFieldReference... fields) { + return AbstractRangePredicateFieldMoreStep.create( dslContext, fields ); + } + } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RegexpPredicateFieldMoreStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RegexpPredicateFieldMoreStepImpl.java index 0ac97b007f7..b3cda42a1f3 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RegexpPredicateFieldMoreStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RegexpPredicateFieldMoreStepImpl.java @@ -20,17 +20,17 @@ import org.hibernate.search.engine.search.predicate.spi.RegexpPredicateBuilder; import org.hibernate.search.util.common.impl.Contracts; -class RegexpPredicateFieldMoreStepImpl - implements RegexpPredicateFieldMoreStep>, +class RegexpPredicateFieldMoreStepImpl + implements RegexpPredicateFieldMoreStep, RegexpPredicateOptionsStep>, AbstractBooleanMultiFieldPredicateCommonState.FieldSetState { - private final CommonState commonState; + private final CommonState commonState; private final List predicateBuilders = new ArrayList<>(); private Float fieldSetBoost; - RegexpPredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { + RegexpPredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { this.commonState = commonState; this.commonState.add( this ); SearchIndexScope scope = commonState.scope(); @@ -40,12 +40,12 @@ class RegexpPredicateFieldMoreStepImpl } @Override - public RegexpPredicateFieldMoreStepImpl fields(String... fieldPaths) { - return new RegexpPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public RegexpPredicateFieldMoreStepImpl fields(String... fieldPaths) { + return new RegexpPredicateFieldMoreStepImpl<>( commonState, Arrays.asList( fieldPaths ) ); } @Override - public RegexpPredicateFieldMoreStepImpl boost(float boost) { + public RegexpPredicateFieldMoreStepImpl boost(float boost) { this.fieldSetBoost = boost; return this; } @@ -65,9 +65,9 @@ public void contributePredicates(Consumer collector) { } } - static class CommonState - extends AbstractBooleanMultiFieldPredicateCommonState - implements RegexpPredicateOptionsStep { + static class CommonState + extends AbstractBooleanMultiFieldPredicateCommonState, RegexpPredicateFieldMoreStepImpl> + implements RegexpPredicateOptionsStep> { CommonState(SearchPredicateDslContext dslContext) { super( dslContext ); @@ -75,7 +75,7 @@ static class CommonState private RegexpPredicateOptionsStep matching(String regexpPattern) { Contracts.assertNotNull( regexpPattern, "regexpPattern" ); - for ( RegexpPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { + for ( RegexpPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { for ( RegexpPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { predicateBuilder.pattern( regexpPattern ); } @@ -84,13 +84,13 @@ private RegexpPredicateOptionsStep matching(String regexpPattern) { } @Override - protected CommonState thisAsS() { + protected CommonState thisAsS() { return this; } @Override - public CommonState flags(Set flags) { - for ( RegexpPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { + public CommonState flags(Set flags) { + for ( RegexpPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { for ( RegexpPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { predicateBuilder.flags( flags ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RegexpPredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RegexpPredicateFieldStepImpl.java index 9143ab5bf9e..48cd7bc5db1 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RegexpPredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/RegexpPredicateFieldStepImpl.java @@ -10,17 +10,17 @@ import org.hibernate.search.engine.search.predicate.dsl.RegexpPredicateFieldStep; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -public final class RegexpPredicateFieldStepImpl - implements RegexpPredicateFieldStep> { +public final class RegexpPredicateFieldStepImpl + implements RegexpPredicateFieldStep> { - private final RegexpPredicateFieldMoreStepImpl.CommonState commonState; + private final RegexpPredicateFieldMoreStepImpl.CommonState commonState; public RegexpPredicateFieldStepImpl(SearchPredicateDslContext dslContext) { - this.commonState = new RegexpPredicateFieldMoreStepImpl.CommonState( dslContext ); + this.commonState = new RegexpPredicateFieldMoreStepImpl.CommonState<>( dslContext ); } @Override - public RegexpPredicateFieldMoreStep fields(String... fieldPaths) { - return new RegexpPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public RegexpPredicateFieldMoreStep fields(String... fieldPaths) { + return new RegexpPredicateFieldMoreStepImpl<>( commonState, Arrays.asList( fieldPaths ) ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SearchPredicateFactoryExtensionStep.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SearchPredicateFactoryExtensionStep.java index e623cbbe9f2..fcf873285a8 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SearchPredicateFactoryExtensionStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SearchPredicateFactoryExtensionStep.java @@ -13,21 +13,21 @@ import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactoryExtensionIfSupportedMoreStep; import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactoryExtensionIfSupportedStep; -public final class SearchPredicateFactoryExtensionStep - implements SearchPredicateFactoryExtensionIfSupportedStep, - SearchPredicateFactoryExtensionIfSupportedMoreStep { +public final class SearchPredicateFactoryExtensionStep + implements SearchPredicateFactoryExtensionIfSupportedStep, + SearchPredicateFactoryExtensionIfSupportedMoreStep { - private final SearchPredicateFactory parent; + private final SearchPredicateFactory parent; private final DslExtensionState state = new DslExtensionState<>(); - public SearchPredicateFactoryExtensionStep(SearchPredicateFactory parent) { + public SearchPredicateFactoryExtensionStep(SearchPredicateFactory parent) { this.parent = parent; } @Override - public SearchPredicateFactoryExtensionIfSupportedMoreStep ifSupported( - SearchPredicateFactoryExtension extension, + public SearchPredicateFactoryExtensionIfSupportedMoreStep ifSupported( + SearchPredicateFactoryExtension extension, Function predicateContributor) { state.ifSupported( extension, extension.extendOptional( parent ), predicateContributor ); return this; @@ -35,7 +35,7 @@ public SearchPredicateFactoryExtensionIfSupportedMoreStep ifSupported( @Override public PredicateFinalStep orElse( - Function predicateContributor) { + Function, ? extends PredicateFinalStep> predicateContributor) { return state.orElse( parent, predicateContributor ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleBooleanPredicateClausesStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleBooleanPredicateClausesStepImpl.java index a10ba13c478..b76482569be 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleBooleanPredicateClausesStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleBooleanPredicateClausesStepImpl.java @@ -11,21 +11,22 @@ import org.hibernate.search.engine.search.predicate.dsl.SimpleBooleanPredicateClausesStep; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -public final class SimpleBooleanPredicateClausesStepImpl +public final class SimpleBooleanPredicateClausesStepImpl extends - AbstractSimpleBooleanPredicateClausesStep> - implements SimpleBooleanPredicateClausesStep { + AbstractSimpleBooleanPredicateClausesStep, + SimpleBooleanPredicateClausesCollector> + implements SimpleBooleanPredicateClausesStep> { public SimpleBooleanPredicateClausesStepImpl(SimpleBooleanPredicateOperator operator, SearchPredicateDslContext dslContext, - SearchPredicateFactory factory) { + SearchPredicateFactory factory) { super( operator, dslContext, factory ); } public SimpleBooleanPredicateClausesStepImpl(SimpleBooleanPredicateOperator operator, SearchPredicateDslContext dslContext, - SearchPredicateFactory factory, + SearchPredicateFactory factory, SearchPredicate firstSearchPredicate, SearchPredicate... otherSearchPredicates) { this( operator, dslContext, factory ); @@ -37,7 +38,7 @@ public SimpleBooleanPredicateClausesStepImpl(SimpleBooleanPredicateOperator oper public SimpleBooleanPredicateClausesStepImpl(SimpleBooleanPredicateOperator operator, SearchPredicateDslContext dslContext, - SearchPredicateFactory factory, + SearchPredicateFactory factory, PredicateFinalStep firstSearchPredicate, PredicateFinalStep... otherSearchPredicates) { this( operator, dslContext, factory ); @@ -48,7 +49,7 @@ public SimpleBooleanPredicateClausesStepImpl(SimpleBooleanPredicateOperator oper } @Override - protected SimpleBooleanPredicateClausesStepImpl self() { + protected SimpleBooleanPredicateClausesStepImpl self() { return this; } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleQueryStringPredicateFieldMoreStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleQueryStringPredicateFieldMoreStepImpl.java index 55975fc119b..c6eecec9084 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleQueryStringPredicateFieldMoreStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleQueryStringPredicateFieldMoreStepImpl.java @@ -16,9 +16,10 @@ import org.hibernate.search.engine.search.predicate.spi.CommonQueryStringPredicateBuilder; import org.hibernate.search.engine.search.predicate.spi.SimpleQueryStringPredicateBuilder; -class SimpleQueryStringPredicateFieldMoreStepImpl +class SimpleQueryStringPredicateFieldMoreStepImpl implements SimpleQueryStringPredicateFieldMoreStep< - SimpleQueryStringPredicateFieldMoreStepImpl, + SR, + SimpleQueryStringPredicateFieldMoreStepImpl, SimpleQueryStringPredicateOptionsStep> { private final CommonState commonState; @@ -33,12 +34,12 @@ class SimpleQueryStringPredicateFieldMoreStepImpl } @Override - public SimpleQueryStringPredicateFieldMoreStepImpl fields(String... fieldPaths) { - return new SimpleQueryStringPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public SimpleQueryStringPredicateFieldMoreStepImpl fields(String... fieldPaths) { + return new SimpleQueryStringPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); } @Override - public SimpleQueryStringPredicateFieldMoreStepImpl boost(float boost) { + public SimpleQueryStringPredicateFieldMoreStepImpl boost(float boost) { fieldStates.forEach( c -> c.boost( boost ) ); return this; } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleQueryStringPredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleQueryStringPredicateFieldStepImpl.java index fa403ac0737..ca5a8e19e7c 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleQueryStringPredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SimpleQueryStringPredicateFieldStepImpl.java @@ -10,8 +10,8 @@ import org.hibernate.search.engine.search.predicate.dsl.SimpleQueryStringPredicateFieldStep; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -public final class SimpleQueryStringPredicateFieldStepImpl - implements SimpleQueryStringPredicateFieldStep> { +public final class SimpleQueryStringPredicateFieldStepImpl + implements SimpleQueryStringPredicateFieldStep> { private final SimpleQueryStringPredicateFieldMoreStepImpl.CommonState commonState; @@ -20,7 +20,7 @@ public SimpleQueryStringPredicateFieldStepImpl(SearchPredicateDslContext dslC } @Override - public SimpleQueryStringPredicateFieldMoreStep fields(String... fieldPaths) { - return new SimpleQueryStringPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public SimpleQueryStringPredicateFieldMoreStep fields(String... fieldPaths) { + return new SimpleQueryStringPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/TermsPredicateFieldMoreStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/TermsPredicateFieldMoreStepImpl.java index 50d25eaf088..c0fd0443a61 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/TermsPredicateFieldMoreStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/TermsPredicateFieldMoreStepImpl.java @@ -20,17 +20,17 @@ import org.hibernate.search.engine.search.predicate.spi.TermsPredicateBuilder; import org.hibernate.search.util.common.impl.Contracts; -class TermsPredicateFieldMoreStepImpl - implements TermsPredicateFieldMoreStep>, +class TermsPredicateFieldMoreStepImpl + implements TermsPredicateFieldMoreStep, TermsPredicateOptionsStep>, AbstractBooleanMultiFieldPredicateCommonState.FieldSetState { - private final CommonState commonState; + private final CommonState commonState; private final List predicateBuilders = new ArrayList<>(); private Float fieldSetBoost; - TermsPredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { + TermsPredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { this.commonState = commonState; this.commonState.add( this ); SearchIndexScope scope = commonState.scope(); @@ -40,12 +40,12 @@ class TermsPredicateFieldMoreStepImpl } @Override - public TermsPredicateFieldMoreStepImpl fields(String... fieldPaths) { - return new TermsPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public TermsPredicateFieldMoreStepImpl fields(String... fieldPaths) { + return new TermsPredicateFieldMoreStepImpl<>( commonState, Arrays.asList( fieldPaths ) ); } @Override - public TermsPredicateFieldMoreStepImpl boost(float boost) { + public TermsPredicateFieldMoreStepImpl boost(float boost) { this.fieldSetBoost = boost; return this; } @@ -70,9 +70,9 @@ public void contributePredicates(Consumer collector) { } } - static class CommonState - extends AbstractBooleanMultiFieldPredicateCommonState - implements TermsPredicateOptionsStep { + static class CommonState + extends AbstractBooleanMultiFieldPredicateCommonState, TermsPredicateFieldMoreStepImpl> + implements TermsPredicateOptionsStep> { CommonState(SearchPredicateDslContext dslContext) { super( dslContext ); @@ -82,7 +82,7 @@ private TermsPredicateOptionsStep matchingAny(Collection terms, ValueModel Contracts.assertNotNullNorEmpty( terms, "terms" ); Contracts.assertNotNull( valueModel, "valueModel" ); - for ( TermsPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { + for ( TermsPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { for ( TermsPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { predicateBuilder.matchingAny( terms, valueModel ); } @@ -94,7 +94,7 @@ private TermsPredicateOptionsStep matchingAll(Collection terms, ValueModel Contracts.assertNotNullNorEmpty( terms, "terms" ); Contracts.assertNotNull( valueModel, "valueModel" ); - for ( TermsPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { + for ( TermsPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { for ( TermsPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { predicateBuilder.matchingAll( terms, valueModel ); } @@ -103,7 +103,7 @@ private TermsPredicateOptionsStep matchingAll(Collection terms, ValueModel } @Override - protected CommonState thisAsS() { + protected CommonState thisAsS() { return this; } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/TermsPredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/TermsPredicateFieldStepImpl.java index f0f25647db4..99da4d3b6ac 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/TermsPredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/TermsPredicateFieldStepImpl.java @@ -10,16 +10,17 @@ import org.hibernate.search.engine.search.predicate.dsl.TermsPredicateFieldStep; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -public final class TermsPredicateFieldStepImpl implements TermsPredicateFieldStep> { +public final class TermsPredicateFieldStepImpl + implements TermsPredicateFieldStep> { - private final TermsPredicateFieldMoreStepImpl.CommonState commonState; + private final TermsPredicateFieldMoreStepImpl.CommonState commonState; public TermsPredicateFieldStepImpl(SearchPredicateDslContext dslContext) { - this.commonState = new TermsPredicateFieldMoreStepImpl.CommonState( dslContext ); + this.commonState = new TermsPredicateFieldMoreStepImpl.CommonState<>( dslContext ); } @Override - public TermsPredicateFieldMoreStep fields(String... fieldPaths) { - return new TermsPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public TermsPredicateFieldMoreStep fields(String... fieldPaths) { + return new TermsPredicateFieldMoreStepImpl<>( commonState, Arrays.asList( fieldPaths ) ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/WildcardPredicateFieldMoreStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/WildcardPredicateFieldMoreStepImpl.java index 6418cc07a7d..8c28fee9d88 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/WildcardPredicateFieldMoreStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/WildcardPredicateFieldMoreStepImpl.java @@ -18,17 +18,17 @@ import org.hibernate.search.engine.search.predicate.spi.WildcardPredicateBuilder; import org.hibernate.search.util.common.impl.Contracts; -class WildcardPredicateFieldMoreStepImpl - implements WildcardPredicateFieldMoreStep>, +class WildcardPredicateFieldMoreStepImpl + implements WildcardPredicateFieldMoreStep, WildcardPredicateOptionsStep>, AbstractBooleanMultiFieldPredicateCommonState.FieldSetState { - private final CommonState commonState; + private final CommonState commonState; private final List predicateBuilders = new ArrayList<>(); private Float fieldSetBoost; - WildcardPredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { + WildcardPredicateFieldMoreStepImpl(CommonState commonState, List fieldPaths) { this.commonState = commonState; this.commonState.add( this ); SearchIndexScope scope = commonState.scope(); @@ -38,12 +38,12 @@ class WildcardPredicateFieldMoreStepImpl } @Override - public WildcardPredicateFieldMoreStepImpl fields(String... fieldPaths) { - return new WildcardPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public WildcardPredicateFieldMoreStepImpl fields(String... fieldPaths) { + return new WildcardPredicateFieldMoreStepImpl<>( commonState, Arrays.asList( fieldPaths ) ); } @Override - public WildcardPredicateFieldMoreStepImpl boost(float boost) { + public WildcardPredicateFieldMoreStepImpl boost(float boost) { this.fieldSetBoost = boost; return this; } @@ -63,9 +63,9 @@ public void contributePredicates(Consumer collector) { } } - static class CommonState - extends AbstractBooleanMultiFieldPredicateCommonState - implements WildcardPredicateOptionsStep { + static class CommonState + extends AbstractBooleanMultiFieldPredicateCommonState, WildcardPredicateFieldMoreStepImpl> + implements WildcardPredicateOptionsStep> { CommonState(SearchPredicateDslContext dslContext) { super( dslContext ); @@ -73,7 +73,7 @@ static class CommonState private WildcardPredicateOptionsStep matching(String wildcardPattern) { Contracts.assertNotNull( wildcardPattern, "wildcardPattern" ); - for ( WildcardPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { + for ( WildcardPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) { for ( WildcardPredicateBuilder predicateBuilder : fieldSetState.predicateBuilders ) { predicateBuilder.pattern( wildcardPattern ); } @@ -82,7 +82,7 @@ private WildcardPredicateOptionsStep matching(String wildcardPattern) { } @Override - protected CommonState thisAsS() { + protected CommonState thisAsS() { return this; } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/WildcardPredicateFieldStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/WildcardPredicateFieldStepImpl.java index 240f95414f6..23d6c2b2719 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/WildcardPredicateFieldStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/WildcardPredicateFieldStepImpl.java @@ -10,17 +10,17 @@ import org.hibernate.search.engine.search.predicate.dsl.WildcardPredicateFieldStep; import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; -public final class WildcardPredicateFieldStepImpl - implements WildcardPredicateFieldStep> { +public final class WildcardPredicateFieldStepImpl + implements WildcardPredicateFieldStep> { - private final WildcardPredicateFieldMoreStepImpl.CommonState commonState; + private final WildcardPredicateFieldMoreStepImpl.CommonState commonState; public WildcardPredicateFieldStepImpl(SearchPredicateDslContext dslContext) { - this.commonState = new WildcardPredicateFieldMoreStepImpl.CommonState( dslContext ); + this.commonState = new WildcardPredicateFieldMoreStepImpl.CommonState<>( dslContext ); } @Override - public WildcardPredicateFieldMoreStep fields(String... fieldPaths) { - return new WildcardPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) ); + public WildcardPredicateFieldMoreStep fields(String... fieldPaths) { + return new WildcardPredicateFieldMoreStepImpl<>( commonState, Arrays.asList( fieldPaths ) ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/spi/AbstractSearchPredicateFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/spi/AbstractSearchPredicateFactory.java index f0c3aac50f9..9101d3e5558 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/spi/AbstractSearchPredicateFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/spi/AbstractSearchPredicateFactory.java @@ -65,9 +65,10 @@ import org.hibernate.search.util.common.impl.Contracts; public abstract class AbstractSearchPredicateFactory< - S extends ExtendedSearchPredicateFactory, + SR, + S extends ExtendedSearchPredicateFactory, SC extends SearchPredicateIndexScope> - implements ExtendedSearchPredicateFactory { + implements ExtendedSearchPredicateFactory { protected final SearchPredicateDslContext dslContext; @@ -76,8 +77,8 @@ public AbstractSearchPredicateFactory(SearchPredicateDslContext dslContext) } @Override - public MatchAllPredicateOptionsStep matchAll() { - return new MatchAllPredicateOptionsStepImpl( dslContext, this ); + public MatchAllPredicateOptionsStep matchAll() { + return new MatchAllPredicateOptionsStepImpl<>( dslContext, this ); } @Override @@ -91,43 +92,47 @@ public MatchIdPredicateMatchingStep id() { } @Override - public BooleanPredicateClausesStep bool() { - return new BooleanPredicateClausesStepImpl( dslContext, this ); + public BooleanPredicateClausesStep bool() { + return new BooleanPredicateClausesStepImpl<>( dslContext, this ); } @Override - public SimpleBooleanPredicateClausesStep and() { - return new SimpleBooleanPredicateClausesStepImpl( AND, dslContext, this ); + public SimpleBooleanPredicateClausesStep and() { + return new SimpleBooleanPredicateClausesStepImpl<>( AND, dslContext, this ); } @Override public SimpleBooleanPredicateOptionsStep and( SearchPredicate firstSearchPredicate, SearchPredicate... otherSearchPredicates) { - return new SimpleBooleanPredicateClausesStepImpl( AND, dslContext, this, firstSearchPredicate, otherSearchPredicates ); + return new SimpleBooleanPredicateClausesStepImpl<>( AND, dslContext, this, firstSearchPredicate, + otherSearchPredicates ); } @Override public SimpleBooleanPredicateOptionsStep and(PredicateFinalStep firstSearchPredicate, PredicateFinalStep... otherSearchPredicate) { - return new SimpleBooleanPredicateClausesStepImpl( AND, dslContext, this, firstSearchPredicate, otherSearchPredicate ); + return new SimpleBooleanPredicateClausesStepImpl<>( AND, dslContext, this, firstSearchPredicate, + otherSearchPredicate ); } @Override - public SimpleBooleanPredicateClausesStep or() { - return new SimpleBooleanPredicateClausesStepImpl( OR, dslContext, this ); + public SimpleBooleanPredicateClausesStep or() { + return new SimpleBooleanPredicateClausesStepImpl<>( OR, dslContext, this ); } @Override public SimpleBooleanPredicateOptionsStep or(SearchPredicate firstSearchPredicate, SearchPredicate... otherSearchPredicate) { - return new SimpleBooleanPredicateClausesStepImpl( OR, dslContext, this, firstSearchPredicate, otherSearchPredicate ); + return new SimpleBooleanPredicateClausesStepImpl<>( OR, dslContext, this, firstSearchPredicate, + otherSearchPredicate ); } @Override public SimpleBooleanPredicateOptionsStep or(PredicateFinalStep firstSearchPredicate, PredicateFinalStep... otherSearchPredicate) { - return new SimpleBooleanPredicateClausesStepImpl( OR, dslContext, this, firstSearchPredicate, otherSearchPredicate ); + return new SimpleBooleanPredicateClausesStepImpl<>( OR, dslContext, this, firstSearchPredicate, + otherSearchPredicate ); } @Override @@ -142,71 +147,71 @@ public NotPredicateFinalStep not(PredicateFinalStep searchPredicate) { @Override @SuppressWarnings("deprecation") // javac warns about this method being deprecated, but we have to implement it - public PredicateFinalStep bool(Consumer> clauseContributor) { - BooleanPredicateClausesStep next = bool(); + public PredicateFinalStep bool(Consumer> clauseContributor) { + BooleanPredicateClausesStep next = bool(); clauseContributor.accept( next ); return next; } @Override - public MatchPredicateFieldStep match() { - return new MatchPredicateFieldStepImpl( dslContext ); + public MatchPredicateFieldStep match() { + return new MatchPredicateFieldStepImpl<>( dslContext ); } @Override - public RangePredicateFieldStep range() { - return new RangePredicateFieldStepImpl( dslContext ); + public RangePredicateFieldStep range() { + return new RangePredicateFieldStepImpl<>( dslContext ); } @Override - public PhrasePredicateFieldStep phrase() { - return new PhrasePredicateFieldStepImpl( dslContext ); + public PhrasePredicateFieldStep phrase() { + return new PhrasePredicateFieldStepImpl<>( dslContext ); } @Override - public WildcardPredicateFieldStep wildcard() { - return new WildcardPredicateFieldStepImpl( dslContext ); + public WildcardPredicateFieldStep wildcard() { + return new WildcardPredicateFieldStepImpl<>( dslContext ); } @Override - public PrefixPredicateFieldStep prefix() { - return new PrefixPredicateFieldStepImpl( dslContext ); + public PrefixPredicateFieldStep prefix() { + return new PrefixPredicateFieldStepImpl<>( dslContext ); } @Override - public RegexpPredicateFieldStep regexp() { - return new RegexpPredicateFieldStepImpl( dslContext ); + public RegexpPredicateFieldStep regexp() { + return new RegexpPredicateFieldStepImpl<>( dslContext ); } @Override - public TermsPredicateFieldStep terms() { - return new TermsPredicateFieldStepImpl( dslContext ); + public TermsPredicateFieldStep terms() { + return new TermsPredicateFieldStepImpl<>( dslContext ); } @Override @Deprecated - public org.hibernate.search.engine.search.predicate.dsl.NestedPredicateFieldStep nested() { - return new org.hibernate.search.engine.search.predicate.dsl.impl.NestedPredicateFieldStepImpl( dslContext, this ); + public org.hibernate.search.engine.search.predicate.dsl.NestedPredicateFieldStep nested() { + return new org.hibernate.search.engine.search.predicate.dsl.impl.NestedPredicateFieldStepImpl<>( dslContext, this ); } @Override - public NestedPredicateClausesStep nested(String objectFieldPath) { - return new NestedPredicateClausesStepImpl( dslContext, objectFieldPath, this ); + public NestedPredicateClausesStep nested(String objectFieldPath) { + return new NestedPredicateClausesStepImpl<>( dslContext, objectFieldPath, this ); } @Override - public SimpleQueryStringPredicateFieldStep simpleQueryString() { - return new SimpleQueryStringPredicateFieldStepImpl( dslContext ); + public SimpleQueryStringPredicateFieldStep simpleQueryString() { + return new SimpleQueryStringPredicateFieldStepImpl<>( dslContext ); } @Override - public QueryStringPredicateFieldStep queryString() { - return new QueryStringPredicateFieldStepImpl( dslContext ); + public QueryStringPredicateFieldStep queryString() { + return new QueryStringPredicateFieldStepImpl<>( dslContext ); } @Override - public ExistsPredicateFieldStep exists() { - return new ExistsPredicateFieldStepImpl( dslContext ); + public ExistsPredicateFieldStep exists() { + return new ExistsPredicateFieldStepImpl<>( dslContext ); } @Override @@ -232,9 +237,9 @@ public NamedPredicateOptionsStep named(String path) { } @Override - public KnnPredicateFieldStep knn(int k) { + public KnnPredicateFieldStep knn(int k) { Contracts.assertStrictlyPositive( k, "k" ); - return new KnnPredicateFieldStepImpl( this, dslContext, k ); + return new KnnPredicateFieldStepImpl( this, dslContext, k ); } @Override @@ -243,13 +248,13 @@ public PredicateFinalStep withParameters(Function T extension(SearchPredicateFactoryExtension extension) { + public T extension(SearchPredicateFactoryExtension extension) { return DslExtensionState.returnIfSupported( extension, extension.extendOptional( this ) ); } @Override - public SearchPredicateFactoryExtensionIfSupportedStep extension() { - return new SearchPredicateFactoryExtensionStep( this ); + public SearchPredicateFactoryExtensionIfSupportedStep extension() { + return new SearchPredicateFactoryExtensionStep( this ); } @Override diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/spi/NamedPredicateBuilder.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/spi/NamedPredicateBuilder.java index 7a2fcc471be..9fc2c027e3d 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/spi/NamedPredicateBuilder.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/spi/NamedPredicateBuilder.java @@ -8,7 +8,7 @@ public interface NamedPredicateBuilder extends SearchPredicateBuilder { - void factory(SearchPredicateFactory factory); + void factory(SearchPredicateFactory factory); void param(String name, Object value); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/predicate/spi/NamedValuesBasedPredicateDefinitionContext.java b/engine/src/main/java/org/hibernate/search/engine/search/predicate/spi/NamedValuesBasedPredicateDefinitionContext.java index 6e21971f7cf..bf3fd7d8a54 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/predicate/spi/NamedValuesBasedPredicateDefinitionContext.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/predicate/spi/NamedValuesBasedPredicateDefinitionContext.java @@ -15,19 +15,19 @@ import org.hibernate.search.util.common.annotation.Incubating; @Incubating -public final class NamedValuesBasedPredicateDefinitionContext implements PredicateDefinitionContext { +public final class NamedValuesBasedPredicateDefinitionContext implements PredicateDefinitionContext { - private final SearchPredicateFactory factory; + private final SearchPredicateFactory factory; private final NamedValues parameters; - public NamedValuesBasedPredicateDefinitionContext(SearchPredicateFactory factory, Map params, + public NamedValuesBasedPredicateDefinitionContext(SearchPredicateFactory factory, Map params, Function namedValueMissing) { this.factory = factory; this.parameters = MapNamedValues.fromMap( params, namedValueMissing ); } @Override - public SearchPredicateFactory predicate() { + public SearchPredicateFactory predicate() { return factory; } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/ProjectionDefinition.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/ProjectionDefinition.java index d28313c4db7..71f92adedc6 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/ProjectionDefinition.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/ProjectionDefinition.java @@ -38,6 +38,6 @@ public interface ProjectionDefinition

{ * @see SearchPredicateFactory * @see ProjectionDefinitionContext */ - SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context); + SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/CompositeProjectionDefinition.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/CompositeProjectionDefinition.java index 5c68f1ec77c..9596b6ed6c5 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/CompositeProjectionDefinition.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/CompositeProjectionDefinition.java @@ -14,12 +14,12 @@ public interface CompositeProjectionDefinition extends ProjectionDefinition, AutoCloseable { @Override - default SearchProjection create(SearchProjectionFactory factory, + default SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return apply( factory, factory.composite(), context ).toProjection(); } - CompositeProjectionValueStep apply(SearchProjectionFactory projectionFactory, + CompositeProjectionValueStep apply(SearchProjectionFactory projectionFactory, CompositeProjectionInnerStep initialStep, ProjectionDefinitionContext context); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/ConstantProjectionDefinition.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/ConstantProjectionDefinition.java index f03fc888486..8a7547a821c 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/ConstantProjectionDefinition.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/ConstantProjectionDefinition.java @@ -51,7 +51,7 @@ public void appendTo(ToStringTreeAppender appender) { } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.constant( value ).toProjection(); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/DistanceProjectionDefinition.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/DistanceProjectionDefinition.java index 10438863b3e..dbe13085f46 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/DistanceProjectionDefinition.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/DistanceProjectionDefinition.java @@ -54,7 +54,7 @@ protected boolean multi() { } @Override - public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.withParameters( params -> factory .distance( fieldPath, params.get( parameterName, GeoPoint.class ) ) .unit( unit ) @@ -74,7 +74,7 @@ protected boolean multi() { } @Override - public SearchProjection> create(SearchProjectionFactory factory, + public SearchProjection> create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.withParameters( params -> factory .distance( fieldPath, params.get( parameterName, GeoPoint.class ) ) diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/FieldProjectionDefinition.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/FieldProjectionDefinition.java index 1f704bbac5c..e6b1c2d17a1 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/FieldProjectionDefinition.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/FieldProjectionDefinition.java @@ -54,7 +54,7 @@ protected boolean multi() { } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.field( fieldPath, fieldType, valueModel ).toProjection(); } @@ -72,7 +72,7 @@ protected boolean multi() { } @Override - public SearchProjection> create(SearchProjectionFactory factory, + public SearchProjection> create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.field( fieldPath, fieldType, valueModel ).multi().toProjection(); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/ObjectProjectionDefinition.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/ObjectProjectionDefinition.java index c98e858a37f..c9f08facce3 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/ObjectProjectionDefinition.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/definition/spi/ObjectProjectionDefinition.java @@ -57,7 +57,7 @@ protected boolean multi() { } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return delegate.apply( factory.withRoot( fieldPath ), factory.object( fieldPath ), context ) .toProjection(); @@ -76,7 +76,7 @@ protected boolean multi() { } @Override - public SearchProjection> create(SearchProjectionFactory factory, + public SearchProjection> create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return delegate.apply( factory.withRoot( fieldPath ), factory.object( fieldPath ), context ) .multi().toProjection(); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/ExtendedSearchProjectionFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/ExtendedSearchProjectionFactory.java index 5a8d1d0fceb..77cb53fa767 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/ExtendedSearchProjectionFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/ExtendedSearchProjectionFactory.java @@ -11,10 +11,11 @@ * Warning: Generic parameters of this type are subject to change, * so this type should not be referenced directly in user code. * + * @param Scope root type. * @param The self type, i.e. the exposed type of this factory. */ -public interface ExtendedSearchProjectionFactory, R, E> - extends SearchProjectionFactory { +public interface ExtendedSearchProjectionFactory, R, E> + extends SearchProjectionFactory { @Override S withRoot(String objectFieldPath); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactory.java index 91b6752c7f9..3e1371cf5b1 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactory.java @@ -13,6 +13,10 @@ import org.hibernate.search.engine.search.common.NamedValues; import org.hibernate.search.engine.search.common.ValueModel; import org.hibernate.search.engine.search.projection.SearchProjection; +import org.hibernate.search.engine.search.reference.object.ObjectFieldReference; +import org.hibernate.search.engine.search.reference.projection.DistanceProjectionFieldReference; +import org.hibernate.search.engine.search.reference.projection.FieldProjectionFieldReference; +import org.hibernate.search.engine.search.reference.projection.HighlightProjectionFieldReference; import org.hibernate.search.engine.spatial.GeoPoint; import org.hibernate.search.util.common.SearchException; import org.hibernate.search.util.common.annotation.Incubating; @@ -35,12 +39,13 @@ * Such a factory can also transform relative paths into absolute paths using {@link #toAbsolutePath(String)}; * this can be useful for native projections in particular. * + * @param Scope root type. * @param The type of entity references, i.e. the type of objects returned for * {@link #entityReference() entity reference projections}. * @param The type of entities, i.e. the type of objects returned for * {@link #entity() entity projections}. */ -public interface SearchProjectionFactory { +public interface SearchProjectionFactory { /** * Project the match to a {@link DocumentReference}. @@ -191,6 +196,18 @@ default FieldProjectionValueStep field(String fieldPath, */ FieldProjectionValueStep field(String fieldPath, ValueModel valueModel); + /** + * Project to the value of a field in the indexed document. + * + * @param fieldReference The reference representing the path to the index field whose value will be extracted. + * @param The resulting type of the projection. + * @return A DSL step where the "field" projection can be defined in more details. + */ + @Incubating + default FieldProjectionValueStep field(FieldProjectionFieldReference fieldReference) { + return field( fieldReference.absolutePath(), fieldReference.projectionType(), fieldReference.valueModel() ); + } + /** * Project on the score of the hit. * @@ -208,6 +225,21 @@ default FieldProjectionValueStep field(String fieldPath, */ DistanceToFieldProjectionValueStep distance(String fieldPath, GeoPoint center); + /** + * Project on the distance from the center to a {@link GeoPoint} field. + * + * @param fieldReference The reference representing the path to the index field containing the location + * to compute the distance from. + * @param center The center to compute the distance from. + * @return A DSL step where the "distance" projection can be defined in more details. + */ + @Incubating + default DistanceToFieldProjectionValueStep distance( + DistanceProjectionFieldReference fieldReference, + GeoPoint center) { + return distance( fieldReference.absolutePath(), center ); + } + /** * Starts the definition of an object projection, * which will yield one value per object in a given object field, @@ -225,6 +257,26 @@ default FieldProjectionValueStep field(String fieldPath, */ CompositeProjectionInnerStep object(String objectFieldPath); + /** + * Starts the definition of an object projection, + * which will yield one value per object in a given object field, + * the value being the result of combining multiple given projections + * (usually on fields within the object field). + *

+ * Compared to the basic {@link #composite() composite projection}, + * an object projection is bound to a specific object field, + * and thus it yields zero, one or many values, as many as there are objects in the targeted object field. + * Therefore, you must take care of calling {@link CompositeProjectionValueStep#multi()} + * if the object field is multi-valued. + * + * @param objectFieldReference The reference representing the path to the object field whose object(s) will be extracted. + * @return A DSL step where the "composite" projection can be defined in more details. + */ + @Incubating + default CompositeProjectionInnerStep object(ObjectFieldReference objectFieldReference) { + return object( objectFieldReference.absolutePath() ); + } + /** * Starts the definition of a composite projection, * which will combine multiple given projections. @@ -439,7 +491,7 @@ ProjectionFinalStep withParameters( * @return The extended factory. * @throws SearchException If the extension cannot be applied (wrong underlying backend, ...). */ - T extension(SearchProjectionFactoryExtension extension); + T extension(SearchProjectionFactoryExtension extension); /** * Create a DSL step allowing multiple attempts to apply extensions one after the other, @@ -454,7 +506,7 @@ ProjectionFinalStep withParameters( * @param The expected projected type. * @return A DSL step. */ - SearchProjectionFactoryExtensionIfSupportedStep extension(); + SearchProjectionFactoryExtensionIfSupportedStep extension(); /** * Create a new projection factory whose root for all paths passed to the DSL @@ -467,7 +519,7 @@ ProjectionFinalStep withParameters( * @return A new projection factory using the given object field as root. */ @Incubating - SearchProjectionFactory withRoot(String objectFieldPath); + SearchProjectionFactory withRoot(String objectFieldPath); /** * @param relativeFieldPath The path to a field, relative to the {@link #withRoot(String) root} of this factory. @@ -485,4 +537,15 @@ ProjectionFinalStep withParameters( */ @Incubating HighlightProjectionOptionsStep highlight(String fieldPath); + + /** + * Project to highlights, i.e. sequences of text that matched the query, extracted from the given field's value. + * + * @param fieldReference The reference representing the path to the index field whose highlights will be extracted. + * @return A DSL step where the "highlight" projection can be defined in more details. + */ + @Incubating + default HighlightProjectionOptionsStep highlight(HighlightProjectionFieldReference fieldReference) { + return highlight( fieldReference.absolutePath() ); + } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtension.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtension.java index 319cc94d2a5..4e138f93d0d 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtension.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtension.java @@ -22,7 +22,7 @@ * @see SearchProjectionFactory#extension(SearchProjectionFactoryExtension) * @see ExtendedSearchProjectionFactory */ -public interface SearchProjectionFactoryExtension { +public interface SearchProjectionFactoryExtension { /** * Attempt to extend a given factory, returning an empty {@link Optional} in case of failure. @@ -33,6 +33,6 @@ public interface SearchProjectionFactoryExtension { * @return An optional containing the extended projection factory ({@link T}) in case * of success, or an empty optional otherwise. */ - Optional extendOptional(SearchProjectionFactory original); + Optional extendOptional(SearchProjectionFactory original); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtensionIfSupportedMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtensionIfSupportedMoreStep.java index 2a6df8330b0..1d4e2642916 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtensionIfSupportedMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtensionIfSupportedMoreStep.java @@ -12,14 +12,15 @@ * The second and later step when attempting to apply multiple extensions * to a {@link SearchProjectionFactory}. * + * @param Scope root type. * @param The type of entity references in the parent {@link SearchProjectionFactory}. * @param The type of entities in the parent {@link SearchProjectionFactory}. * @param

The resulting projection type. * * @see SearchProjectionFactory#extension() */ -public interface SearchProjectionFactoryExtensionIfSupportedMoreStep - extends SearchProjectionFactoryExtensionIfSupportedStep { +public interface SearchProjectionFactoryExtensionIfSupportedMoreStep + extends SearchProjectionFactoryExtensionIfSupportedStep { /** * If no extension passed to {@link #ifSupported(SearchProjectionFactoryExtension, Function)} @@ -33,7 +34,7 @@ public interface SearchProjectionFactoryExtensionIfSupportedMoreStep * @return The created projection. */ ProjectionFinalStep

orElse( - Function, ? extends ProjectionFinalStep

> projectionContributor); + Function, ? extends ProjectionFinalStep

> projectionContributor); /** * If no extension passed to {@link #ifSupported(SearchProjectionFactoryExtension, Function)} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtensionIfSupportedStep.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtensionIfSupportedStep.java index fb6fbbd336f..a49fe8c9d67 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtensionIfSupportedStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/SearchProjectionFactoryExtensionIfSupportedStep.java @@ -10,13 +10,14 @@ * The initial step when attempting to apply multiple extensions * to a {@link SearchProjectionFactory}. * + * @param Scope root type. * @param The type of entity references in the parent {@link SearchProjectionFactory}. * @param The type of entities in the parent {@link SearchProjectionFactory}. * @param

The resulting projection type. * * @see SearchProjectionFactory#extension() */ -public interface SearchProjectionFactoryExtensionIfSupportedStep { +public interface SearchProjectionFactoryExtensionIfSupportedStep { /** * If the given extension is supported, and none of the previous extensions passed to @@ -35,8 +36,8 @@ public interface SearchProjectionFactoryExtensionIfSupportedStep { * @param The type of the extended factory. * @return {@code this}, for method chaining. */ - SearchProjectionFactoryExtensionIfSupportedMoreStep ifSupported( - SearchProjectionFactoryExtension extension, + SearchProjectionFactoryExtensionIfSupportedMoreStep ifSupported( + SearchProjectionFactoryExtension extension, Function> projectionContributor ); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/CompositeProjectionInnerStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/CompositeProjectionInnerStepImpl.java index 284c50f31ea..f0b68ec13d6 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/CompositeProjectionInnerStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/CompositeProjectionInnerStepImpl.java @@ -19,15 +19,15 @@ import org.hibernate.search.engine.search.projection.spi.ProjectionTypeKeys; import org.hibernate.search.util.common.impl.Contracts; -public class CompositeProjectionInnerStepImpl implements CompositeProjectionInnerStep { +public class CompositeProjectionInnerStepImpl implements CompositeProjectionInnerStep { private final SearchProjectionDslContext dslContext; - private final SearchProjectionFactory projectionFactory; + private final SearchProjectionFactory projectionFactory; private final CompositeProjectionBuilder builder; private final String objectFieldPath; public CompositeProjectionInnerStepImpl(SearchProjectionDslContext dslContext, - SearchProjectionFactory projectionFactory) { + SearchProjectionFactory projectionFactory) { this.dslContext = dslContext; this.projectionFactory = projectionFactory; this.builder = dslContext.scope().projectionBuilders().composite(); @@ -35,7 +35,7 @@ public CompositeProjectionInnerStepImpl(SearchProjectionDslContext dslContext } public CompositeProjectionInnerStepImpl(SearchProjectionDslContext dslContext, - SearchProjectionFactory projectionFactory, String objectFieldPath) { + SearchProjectionFactory projectionFactory, String objectFieldPath) { this.dslContext = dslContext; this.projectionFactory = projectionFactory; this.builder = dslContext.scope().fieldQueryElement( objectFieldPath, ProjectionTypeKeys.OBJECT ); @@ -44,7 +44,7 @@ public CompositeProjectionInnerStepImpl(SearchProjectionDslContext dslContext @Override public CompositeProjectionValueStep as(Class objectClass) { - SearchProjectionFactory projectionFactoryWithCorrectRoot = objectFieldPath == null + SearchProjectionFactory projectionFactoryWithCorrectRoot = objectFieldPath == null ? projectionFactory : projectionFactory.withRoot( objectFieldPath ); return dslContext.scope().projectionRegistry().composite( objectClass ) diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/EntityProjectionOptionsStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/EntityProjectionOptionsStepImpl.java index 7b109492f87..c8d7cf08d4a 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/EntityProjectionOptionsStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/EntityProjectionOptionsStepImpl.java @@ -19,17 +19,17 @@ import org.hibernate.search.engine.search.projection.spi.SearchProjectionIndexScope; import org.hibernate.search.util.common.logging.impl.LoggerFactory; -public final class EntityProjectionOptionsStepImpl - implements EntityProjectionOptionsStep, E> { +public final class EntityProjectionOptionsStepImpl + implements EntityProjectionOptionsStep, E> { private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() ); private final SearchProjectionIndexScope scope; - private final SearchProjectionFactory projectionFactory; + private final SearchProjectionFactory projectionFactory; private final Class requestedEntityType; public EntityProjectionOptionsStepImpl(SearchProjectionDslContext dslContext, - SearchProjectionFactory projectionFactory, Class requestedEntityType) { + SearchProjectionFactory projectionFactory, Class requestedEntityType) { this.scope = dslContext.scope(); this.projectionFactory = projectionFactory; this.requestedEntityType = requestedEntityType; diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/SearchProjectionFactoryExtensionStep.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/SearchProjectionFactoryExtensionStep.java index 0b9d0322a88..71601a67fd4 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/SearchProjectionFactoryExtensionStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/impl/SearchProjectionFactoryExtensionStep.java @@ -12,21 +12,21 @@ import org.hibernate.search.engine.search.projection.dsl.SearchProjectionFactoryExtension; import org.hibernate.search.engine.search.projection.dsl.SearchProjectionFactoryExtensionIfSupportedMoreStep; -public final class SearchProjectionFactoryExtensionStep +public final class SearchProjectionFactoryExtensionStep implements - SearchProjectionFactoryExtensionIfSupportedMoreStep { + SearchProjectionFactoryExtensionIfSupportedMoreStep { - private final SearchProjectionFactory parent; + private final SearchProjectionFactory parent; private final DslExtensionState> state = new DslExtensionState<>(); - public SearchProjectionFactoryExtensionStep(SearchProjectionFactory parent) { + public SearchProjectionFactoryExtensionStep(SearchProjectionFactory parent) { this.parent = parent; } @Override - public SearchProjectionFactoryExtensionIfSupportedMoreStep ifSupported( - SearchProjectionFactoryExtension extension, + public SearchProjectionFactoryExtensionIfSupportedMoreStep ifSupported( + SearchProjectionFactoryExtension extension, Function> projectionContributor) { state.ifSupported( extension, extension.extendOptional( parent ), projectionContributor ); return this; @@ -34,7 +34,7 @@ public SearchProjectionFactoryExtensionIfSupportedMoreStep ifSuppor @Override public ProjectionFinalStep

orElse( - Function, ? extends ProjectionFinalStep

> projectionContributor) { + Function, ? extends ProjectionFinalStep

> projectionContributor) { return state.orElse( parent, projectionContributor ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/spi/AbstractSearchProjectionFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/spi/AbstractSearchProjectionFactory.java index 31f365d8576..0defde108b8 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/spi/AbstractSearchProjectionFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/projection/dsl/spi/AbstractSearchProjectionFactory.java @@ -42,11 +42,12 @@ import org.hibernate.search.util.common.impl.Contracts; public abstract class AbstractSearchProjectionFactory< - S extends ExtendedSearchProjectionFactory, + SR, + S extends ExtendedSearchProjectionFactory, SC extends SearchProjectionIndexScope, R, E> - implements ExtendedSearchProjectionFactory { + implements ExtendedSearchProjectionFactory { protected final SearchProjectionDslContext dslContext; @@ -106,12 +107,12 @@ public DistanceToFieldProjectionValueStep distance(String fieldPath, @Override public CompositeProjectionInnerStep object(String objectFieldPath) { Contracts.assertNotNull( objectFieldPath, "objectFieldPath" ); - return new CompositeProjectionInnerStepImpl( dslContext, this, objectFieldPath ); + return new CompositeProjectionInnerStepImpl<>( dslContext, this, objectFieldPath ); } @Override public CompositeProjectionInnerStep composite() { - return new CompositeProjectionInnerStepImpl( dslContext, this ); + return new CompositeProjectionInnerStepImpl<>( dslContext, this ); } @Override @@ -132,14 +133,14 @@ public ProjectionFinalStep withParameters( } @Override - public T extension(SearchProjectionFactoryExtension extension) { + public T extension(SearchProjectionFactoryExtension extension) { return DslExtensionState.returnIfSupported( extension, extension.extendOptional( this ) ); } @Override - public SearchProjectionFactoryExtensionIfSupportedStep extension() { + public SearchProjectionFactoryExtensionIfSupportedStep extension() { return new SearchProjectionFactoryExtensionStep<>( this ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryDslExtension.java b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryDslExtension.java index 8299d7fd83e..e9e5b696886 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryDslExtension.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryDslExtension.java @@ -19,6 +19,7 @@ * In short, users are only expected to get instances of this type from an API ({@code SomeExtension.get()}) * and pass it to another API. * + * @param Scope root type. * @param The type of extended steps in the search query definition DSL. Should generally extend * {@link SearchQuerySelectStep}. * @param The reference type. @@ -28,7 +29,7 @@ * @see SearchQuerySelectStep#extension(SearchQueryDslExtension) * @see AbstractSearchQueryOptionsStep */ -public interface SearchQueryDslExtension { +public interface SearchQueryDslExtension { /** * Attempt to extend a given DSL step, returning an empty {@link Optional} in case of failure. @@ -42,7 +43,7 @@ public interface SearchQueryDslExtension { * @return An optional containing the extended search query DSL step ({@link T}) in case * of success, or an empty optional otherwise. */ - Optional extendOptional(SearchQuerySelectStep original, + Optional extendOptional(SearchQuerySelectStep original, SearchQueryIndexScope scope, BackendSessionContext sessionContext, SearchLoadingContextBuilder loadingContextBuilder); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryOptionsStep.java index 47389fb3b23..070a80361f5 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryOptionsStep.java @@ -30,6 +30,7 @@ * The final step in a query definition, where optional parameters such as {@link #sort(Function) sorts} can be set, * and where the query can be {@link SearchFetchable executed} or {@link #toQuery() retrieved as an object}. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). * May be a subtype of SearchQueryOptionsStep with more exposed methods. * @param The type of hits for the created query. @@ -38,11 +39,12 @@ * @param The type of factory used to create aggregations in {@link #aggregation(AggregationKey, Function)}. */ public interface SearchQueryOptionsStep< - S extends SearchQueryOptionsStep, + SR, + S extends SearchQueryOptionsStep, H, LOS, - SF extends SearchSortFactory, - AF extends SearchAggregationFactory> + SF extends SearchSortFactory, + AF extends SearchAggregationFactory> extends SearchQueryFinalStep, SearchFetchable { /** diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQuerySelectStep.java b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQuerySelectStep.java index 31690f3d291..e702a214778 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQuerySelectStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQuerySelectStep.java @@ -23,6 +23,7 @@ * The "SELECT" clause may be omitted by setting the {@link #where(Function) "WHERE" clause} directly, * in which case {@link #selectEntity()} will be assumed. * + * @param Scope root type. * @param The next step if no type of hits is explicitly selected, * i.e. if {@link #where(SearchPredicate)} or {@link #where(Function)} is called directly * without calling {@link #selectEntity()}, or {@link #selectEntityReference()}, {@link #select(SearchProjection)} @@ -38,13 +39,14 @@ * @param The type of factory used to create predicates in {@link #where(Function)}. */ public interface SearchQuerySelectStep< - N extends SearchQueryOptionsStep, + SR, + N extends SearchQueryOptionsStep, R, E, LOS, - PJF extends SearchProjectionFactory, - PDF extends SearchPredicateFactory> - extends SearchQueryWhereStep { + PJF extends SearchProjectionFactory, + PDF extends SearchPredicateFactory> + extends SearchQueryWhereStep { /** * Select the entity was originally indexed @@ -55,7 +57,7 @@ public interface SearchQuerySelectStep< * @return The next step. * @see SearchQueryWhereStep */ - SearchQueryWhereStep selectEntity(); + SearchQueryWhereStep selectEntity(); /** * Select a reference to the entity that was originally indexed @@ -69,7 +71,7 @@ public interface SearchQuerySelectStep< * @return The next step. * @see SearchQueryWhereStep */ - SearchQueryWhereStep selectEntityReference(); + SearchQueryWhereStep selectEntityReference(); /** * Select an object projection @@ -82,7 +84,7 @@ public interface SearchQuerySelectStep< * @return The next step. * @see SearchQueryWhereStep */ -

SearchQueryWhereStep select(Class

objectClass); +

SearchQueryWhereStep select(Class

objectClass); /** * Select a given projection as a representation of the search hit for each matching document. @@ -94,7 +96,7 @@ public interface SearchQuerySelectStep< * @return The next step. * @see SearchQueryWhereStep */ -

SearchQueryWhereStep select( +

SearchQueryWhereStep select( Function> projectionContributor); /** @@ -105,7 +107,7 @@ public interface SearchQuerySelectStep< * @return The next step. * @see SearchQueryWhereStep */ -

SearchQueryWhereStep select(SearchProjection

projection); +

SearchQueryWhereStep select(SearchProjection

projection); /** * Select a list of projections as a representation of the search hit for each matching document. @@ -120,7 +122,7 @@ public interface SearchQuerySelectStep< * @see SearchProjectionFactory#composite(SearchProjection[]) * @see SearchQueryWhereStep */ - SearchQueryWhereStep, LOS, ?> select(SearchProjection... projections); + SearchQueryWhereStep, LOS, ?> select(SearchProjection... projections); /** * Extend the current DSL step with the given extension, @@ -131,6 +133,6 @@ public interface SearchQuerySelectStep< * @return The extended DSL step. * @throws SearchException If the extension cannot be applied (wrong underlying backend, ...). */ - T extension(SearchQueryDslExtension extension); + T extension(SearchQueryDslExtension extension); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryWhereStep.java b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryWhereStep.java index 7d47b9b9ce6..a4ec5367693 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryWhereStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/SearchQueryWhereStep.java @@ -16,16 +16,18 @@ /** * The step in a query definition where the predicate, i.e. the "WHERE" clause, can be set. * + * @param Scope root type. * @param The type of the next step, returned after a predicate is defined. * @param The type of hits for the created query. * @param The type of factory used to create predicates in {@link #where(Function)}. * @param The type of the initial step of the loading options definition DSL accessible through {@link SearchQueryOptionsStep#loading(Consumer)}. */ public interface SearchQueryWhereStep< - N extends SearchQueryOptionsStep, + SR, + N extends SearchQueryOptionsStep, H, LOS, - PDF extends SearchPredicateFactory> { + PDF extends SearchPredicateFactory> { /** * Set the predicate for this query. @@ -52,6 +54,6 @@ public interface SearchQueryWhereStep< * @return The next step. * @see SimpleBooleanPredicateClausesCollector */ - N where(BiConsumer> predicateContributor); + N where(BiConsumer> predicateContributor); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/impl/DefaultSearchQueryOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/impl/DefaultSearchQueryOptionsStep.java index 69554a891cb..edb00cb631a 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/impl/DefaultSearchQueryOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/impl/DefaultSearchQueryOptionsStep.java @@ -15,17 +15,23 @@ import org.hibernate.search.engine.search.query.spi.SearchQueryIndexScope; import org.hibernate.search.engine.search.sort.dsl.SearchSortFactory; -final class DefaultSearchQueryOptionsStep +final class DefaultSearchQueryOptionsStep extends AbstractSearchQueryOptionsStep< - DefaultSearchQueryOptionsStep, + SR, + DefaultSearchQueryOptionsStep, H, LOS, - SearchPredicateFactory, - SearchSortFactory, - SearchAggregationFactory, + SearchPredicateFactory, + SearchSortFactory, + SearchAggregationFactory, SearchQueryIndexScope> - implements SearchQueryWhereStep, H, LOS, SearchPredicateFactory>, - SearchQueryOptionsStep, H, LOS, SearchSortFactory, SearchAggregationFactory> { + implements SearchQueryWhereStep, H, LOS, SearchPredicateFactory>, + SearchQueryOptionsStep, + H, + LOS, + SearchSortFactory, + SearchAggregationFactory> { DefaultSearchQueryOptionsStep(SearchQueryIndexScope scope, SearchQueryBuilder searchQueryBuilder, SearchLoadingContextBuilder loadingContextBuilder) { @@ -33,17 +39,17 @@ final class DefaultSearchQueryOptionsStep } @Override - protected SearchPredicateFactory predicateFactory() { + protected SearchPredicateFactory predicateFactory() { return scope.predicateFactory(); } @Override - protected SearchSortFactory sortFactory() { + protected SearchSortFactory sortFactory() { return scope.sortFactory(); } @Override - protected SearchAggregationFactory aggregationFactory() { + protected SearchAggregationFactory aggregationFactory() { return scope.aggregationFactory(); } @@ -53,7 +59,7 @@ protected SearchHighlighterFactory highlighterFactory() { } @Override - protected DefaultSearchQueryOptionsStep thisAsS() { + protected DefaultSearchQueryOptionsStep thisAsS() { return this; } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/impl/DefaultSearchQuerySelectStep.java b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/impl/DefaultSearchQuerySelectStep.java index 71d5846d564..f9ee7ff5e20 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/impl/DefaultSearchQuerySelectStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/impl/DefaultSearchQuerySelectStep.java @@ -25,14 +25,15 @@ import org.hibernate.search.engine.search.query.spi.SearchQueryBuilder; import org.hibernate.search.engine.search.query.spi.SearchQueryIndexScope; -public final class DefaultSearchQuerySelectStep +public final class DefaultSearchQuerySelectStep extends AbstractSearchQuerySelectStep< - SearchQueryOptionsStep, + SR, + SearchQueryOptionsStep, R, E, LOS, - SearchProjectionFactory, - SearchPredicateFactory> { + SearchProjectionFactory, + SearchPredicateFactory> { private final SearchQueryIndexScope scope; private final BackendSessionContext sessionContext; @@ -46,55 +47,55 @@ public DefaultSearchQuerySelectStep(SearchQueryIndexScope scope, BackendSessi } @Override - public DefaultSearchQueryOptionsStep selectEntity() { - return select( scope.projectionFactory().entity().toProjection() ); + public DefaultSearchQueryOptionsStep selectEntity() { + return select( scope.projectionFactory().entity().toProjection() ); } @Override - public DefaultSearchQueryOptionsStep selectEntityReference() { + public DefaultSearchQueryOptionsStep selectEntityReference() { return select( scope.projectionBuilders().entityReference() ); } @Override - public

SearchQueryWhereStep select(Class

objectClass) { + public

SearchQueryWhereStep select(Class

objectClass) { return select( scope.projectionFactory().composite().as( objectClass ).toProjection() ); } @Override - public

DefaultSearchQueryOptionsStep select( - Function, ? extends ProjectionFinalStep

> projectionContributor) { + public

DefaultSearchQueryOptionsStep select( + Function, ? extends ProjectionFinalStep

> projectionContributor) { SearchProjection

projection = projectionContributor.apply( scope.projectionFactory() ).toProjection(); return select( projection ); } @Override - public

DefaultSearchQueryOptionsStep select(SearchProjection

projection) { + public

DefaultSearchQueryOptionsStep select(SearchProjection

projection) { SearchQueryBuilder

builder = scope.select( sessionContext, loadingContextBuilder, projection ); return new DefaultSearchQueryOptionsStep<>( scope, builder, loadingContextBuilder ); } @Override - public DefaultSearchQueryOptionsStep, LOS> select(SearchProjection... projections) { + public DefaultSearchQueryOptionsStep, LOS> select(SearchProjection... projections) { return select( scope.projectionBuilders().composite() .build( projections, ProjectionCompositor.fromList( projections.length ), ProjectionAccumulator.single() ) ); } @Override - public SearchQueryOptionsStep where( - Function predicateContributor) { + public SearchQueryOptionsStep where( + Function, ? extends PredicateFinalStep> predicateContributor) { return selectEntity().where( predicateContributor ); } @Override - public SearchQueryOptionsStep where(SearchPredicate predicate) { + public SearchQueryOptionsStep where(SearchPredicate predicate) { return selectEntity().where( predicate ); } @Override - public SearchQueryOptionsStep where( - BiConsumer> predicateContributor) { + public SearchQueryOptionsStep where( + BiConsumer, + ? super SimpleBooleanPredicateClausesCollector> predicateContributor) { return selectEntity().where( predicateContributor ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractDelegatingSearchQuerySelectStep.java b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractDelegatingSearchQuerySelectStep.java index ed63cb1445d..df04da7b72f 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractDelegatingSearchQuerySelectStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractDelegatingSearchQuerySelectStep.java @@ -20,73 +20,74 @@ import org.hibernate.search.engine.search.query.dsl.SearchQuerySelectStep; import org.hibernate.search.engine.search.query.dsl.SearchQueryWhereStep; -public abstract class AbstractDelegatingSearchQuerySelectStep +public abstract class AbstractDelegatingSearchQuerySelectStep implements SearchQuerySelectStep< - SearchQueryOptionsStep, + SR, + SearchQueryOptionsStep, R, E, LOS, - SearchProjectionFactory, - SearchPredicateFactory> { + SearchProjectionFactory, + SearchPredicateFactory> { - private final SearchQuerySelectStep delegate; + private final SearchQuerySelectStep delegate; - public AbstractDelegatingSearchQuerySelectStep(SearchQuerySelectStep delegate) { + public AbstractDelegatingSearchQuerySelectStep(SearchQuerySelectStep delegate) { this.delegate = delegate; } @Override - public SearchQueryWhereStep selectEntity() { + public SearchQueryWhereStep selectEntity() { return delegate.selectEntity(); } @Override - public SearchQueryWhereStep selectEntityReference() { + public SearchQueryWhereStep selectEntityReference() { return delegate.selectEntityReference(); } @Override - public

SearchQueryWhereStep select(Class

objectClass) { + public

SearchQueryWhereStep select(Class

objectClass) { return delegate.select( objectClass ); } @Override - public

SearchQueryWhereStep select( - Function, ? extends ProjectionFinalStep

> projectionContributor) { + public

SearchQueryWhereStep select( + Function, ? extends ProjectionFinalStep

> projectionContributor) { return delegate.select( projectionContributor ); } @Override - public

SearchQueryWhereStep select(SearchProjection

projection) { + public

SearchQueryWhereStep select(SearchProjection

projection) { return delegate.select( projection ); } @Override - public SearchQueryWhereStep, LOS, ?> select( + public SearchQueryWhereStep, LOS, ?> select( SearchProjection... projections) { return delegate.select( projections ); } @Override - public SearchQueryOptionsStep where( - Function predicateContributor) { + public SearchQueryOptionsStep where( + Function, ? extends PredicateFinalStep> predicateContributor) { return delegate.where( predicateContributor ); } @Override - public SearchQueryOptionsStep where( - BiConsumer> predicateContributor) { + public SearchQueryOptionsStep where( + BiConsumer, + ? super SimpleBooleanPredicateClausesCollector> predicateContributor) { return delegate.where( predicateContributor ); } @Override - public SearchQueryOptionsStep where(SearchPredicate predicate) { + public SearchQueryOptionsStep where(SearchPredicate predicate) { return delegate.where( predicate ); } @Override - public T extension(SearchQueryDslExtension extension) { + public T extension(SearchQueryDslExtension extension) { return delegate.extension( extension ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractExtendedSearchQueryOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractExtendedSearchQueryOptionsStep.java index 37ee8b2cf3a..47432cc6f1c 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractExtendedSearchQueryOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractExtendedSearchQueryOptionsStep.java @@ -16,16 +16,17 @@ import org.hibernate.search.engine.search.sort.dsl.SearchSortFactory; public abstract class AbstractExtendedSearchQueryOptionsStep< - S extends SearchQueryOptionsStep, + SR, + S extends SearchQueryOptionsStep, H, R extends SearchResult, SCR extends SearchScroll, LOS, - PDF extends SearchPredicateFactory, - SF extends SearchSortFactory, - AF extends SearchAggregationFactory, + PDF extends SearchPredicateFactory, + SF extends SearchSortFactory, + AF extends SearchAggregationFactory, SC extends SearchQueryIndexScope> - extends AbstractSearchQueryOptionsStep { + extends AbstractSearchQueryOptionsStep { public AbstractExtendedSearchQueryOptionsStep(SC scope, SearchQueryBuilder searchQueryBuilder, diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractSearchQueryOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractSearchQueryOptionsStep.java index cbd7d215258..f94e8ecab35 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractSearchQueryOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractSearchQueryOptionsStep.java @@ -37,14 +37,15 @@ import org.hibernate.search.engine.search.sort.dsl.SortFinalStep; public abstract class AbstractSearchQueryOptionsStep< - S extends SearchQueryOptionsStep, + SR, + S extends SearchQueryOptionsStep, H, LOS, - PDF extends SearchPredicateFactory, - SF extends SearchSortFactory, - AF extends SearchAggregationFactory, + PDF extends SearchPredicateFactory, + SF extends SearchSortFactory, + AF extends SearchAggregationFactory, SC extends SearchQueryIndexScope> - implements SearchQueryWhereStep, SearchQueryOptionsStep { + implements SearchQueryWhereStep, SearchQueryOptionsStep { protected final SC scope; private final SearchQueryBuilder searchQueryBuilder; @@ -72,9 +73,9 @@ public S where(Function predicateCont } @Override - public S where(BiConsumer> predicateContributor) { + public S where(BiConsumer> predicateContributor) { PDF factory = predicateFactory(); - SimpleBooleanPredicateClausesStep andStep = factory.and(); + SimpleBooleanPredicateClausesStep andStep = factory.and(); predicateContributor.accept( factory, andStep ); searchQueryBuilder.predicate( andStep.toPredicate() ); return thisAsS(); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractSearchQuerySelectStep.java b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractSearchQuerySelectStep.java index c2a022871ac..3f31b3e6fda 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractSearchQuerySelectStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/dsl/spi/AbstractSearchQuerySelectStep.java @@ -15,16 +15,17 @@ import org.hibernate.search.engine.search.query.spi.SearchQueryIndexScope; public abstract class AbstractSearchQuerySelectStep< - N extends SearchQueryOptionsStep, + SR, + N extends SearchQueryOptionsStep, R, E, LOS, - PJF extends SearchProjectionFactory, - PDF extends SearchPredicateFactory> - implements SearchQuerySelectStep { + PJF extends SearchProjectionFactory, + PDF extends SearchPredicateFactory> + implements SearchQuerySelectStep { @Override - public T extension(SearchQueryDslExtension extension) { + public T extension(SearchQueryDslExtension extension) { return DslExtensionState.returnIfSupported( extension, extension.extendOptional( this, scope(), sessionContext(), loadingContextBuilder() ) diff --git a/engine/src/main/java/org/hibernate/search/engine/search/query/spi/SearchQueryIndexScope.java b/engine/src/main/java/org/hibernate/search/engine/search/query/spi/SearchQueryIndexScope.java index f41ddc78bb7..d8f621d3787 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/query/spi/SearchQueryIndexScope.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/query/spi/SearchQueryIndexScope.java @@ -25,13 +25,13 @@ public interface SearchQueryIndexScope>

SearchQueryBuilder

select(BackendSessionContext sessionContext, SearchLoadingContextBuilder loadingContextBuilder, SearchProjection

projection); - SearchPredicateFactory predicateFactory(); + SearchPredicateFactory predicateFactory(); - SearchSortFactory sortFactory(); + SearchSortFactory sortFactory(); - SearchProjectionFactory projectionFactory(); + SearchProjectionFactory projectionFactory(); - SearchAggregationFactory aggregationFactory(); + SearchAggregationFactory aggregationFactory(); SearchHighlighterFactory highlighterFactory(); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/FieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/FieldReference.java new file mode 100644 index 00000000000..4073268968b --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/FieldReference.java @@ -0,0 +1,20 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference; + +import org.hibernate.search.util.common.annotation.Incubating; + +/** + * The most common interface for the field reference hierarchy. + * @param Containing type. + */ +@Incubating +public interface FieldReference { + + String absolutePath(); + + Class scopeRootType(); + +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/RootReferenceScope.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/RootReferenceScope.java new file mode 100644 index 00000000000..7ff66964592 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/RootReferenceScope.java @@ -0,0 +1,12 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference; + +import org.hibernate.search.util.common.annotation.Incubating; + +@Incubating +public interface RootReferenceScope { + Class rootReferenceType(); +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/AggregationFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/AggregationFieldReference.java new file mode 100644 index 00000000000..b1c38aaed4f --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/AggregationFieldReference.java @@ -0,0 +1,10 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.aggregation; + +import org.hibernate.search.engine.search.reference.FieldReference; + +public interface AggregationFieldReference extends FieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/RangeAggregationFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/RangeAggregationFieldReference.java new file mode 100644 index 00000000000..7a5cdfaaf5e --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/RangeAggregationFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.aggregation; + +public interface RangeAggregationFieldReference extends TypedAggregationFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/TermsAggregationFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/TermsAggregationFieldReference.java new file mode 100644 index 00000000000..061c24ee540 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/TermsAggregationFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.aggregation; + +public interface TermsAggregationFieldReference extends TypedAggregationFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/TypedAggregationFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/TypedAggregationFieldReference.java new file mode 100644 index 00000000000..96f638f1593 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/aggregation/TypedAggregationFieldReference.java @@ -0,0 +1,16 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.aggregation; + +import org.hibernate.search.engine.search.common.ValueModel; + +public interface TypedAggregationFieldReference extends AggregationFieldReference { + + Class aggregationType(); + + default ValueModel valueModel() { + return ValueModel.MAPPING; + } +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/object/FlattenedFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/object/FlattenedFieldReference.java new file mode 100644 index 00000000000..7379071e118 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/object/FlattenedFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.object; + +public interface FlattenedFieldReference extends ObjectFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/object/NestedFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/object/NestedFieldReference.java new file mode 100644 index 00000000000..9d7e7fdfb50 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/object/NestedFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.object; + +public interface NestedFieldReference extends ObjectFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/object/ObjectFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/object/ObjectFieldReference.java new file mode 100644 index 00000000000..8d6b616e640 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/object/ObjectFieldReference.java @@ -0,0 +1,10 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.object; + +import org.hibernate.search.engine.search.reference.FieldReference; + +public interface ObjectFieldReference extends FieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/ExistsPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/ExistsPredicateFieldReference.java new file mode 100644 index 00000000000..3392b749dcb --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/ExistsPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface ExistsPredicateFieldReference extends PredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/KnnPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/KnnPredicateFieldReference.java new file mode 100644 index 00000000000..8fe308e63d1 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/KnnPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface KnnPredicateFieldReference extends TypedPredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/MatchPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/MatchPredicateFieldReference.java new file mode 100644 index 00000000000..84d1fef7fa6 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/MatchPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface MatchPredicateFieldReference extends TypedPredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/NestedPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/NestedPredicateFieldReference.java new file mode 100644 index 00000000000..94f1aebc193 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/NestedPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface NestedPredicateFieldReference extends PredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/PhrasePredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/PhrasePredicateFieldReference.java new file mode 100644 index 00000000000..9f7d1501913 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/PhrasePredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface PhrasePredicateFieldReference extends TypedPredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/PredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/PredicateFieldReference.java new file mode 100644 index 00000000000..308ce02d85b --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/PredicateFieldReference.java @@ -0,0 +1,10 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +import org.hibernate.search.engine.search.reference.FieldReference; + +public interface PredicateFieldReference extends FieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/PrefixPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/PrefixPredicateFieldReference.java new file mode 100644 index 00000000000..27ba63af8ff --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/PrefixPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface PrefixPredicateFieldReference extends PredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/QueryStringPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/QueryStringPredicateFieldReference.java new file mode 100644 index 00000000000..9a5dc6afd26 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/QueryStringPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface QueryStringPredicateFieldReference extends TypedPredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/RangePredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/RangePredicateFieldReference.java new file mode 100644 index 00000000000..b2b314aee13 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/RangePredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface RangePredicateFieldReference extends TypedPredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/RegexpPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/RegexpPredicateFieldReference.java new file mode 100644 index 00000000000..93012be9e5f --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/RegexpPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface RegexpPredicateFieldReference extends PredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SimpleQueryStringPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SimpleQueryStringPredicateFieldReference.java new file mode 100644 index 00000000000..de6b471a451 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SimpleQueryStringPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface SimpleQueryStringPredicateFieldReference extends TypedPredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SpatialWithinBoundingBoxPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SpatialWithinBoundingBoxPredicateFieldReference.java new file mode 100644 index 00000000000..4bdf5dd5a82 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SpatialWithinBoundingBoxPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface SpatialWithinBoundingBoxPredicateFieldReference extends TypedPredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SpatialWithinCirclePredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SpatialWithinCirclePredicateFieldReference.java new file mode 100644 index 00000000000..0409cf6a9ab --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SpatialWithinCirclePredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface SpatialWithinCirclePredicateFieldReference extends TypedPredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SpatialWithinPolygonPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SpatialWithinPolygonPredicateFieldReference.java new file mode 100644 index 00000000000..b8b125bf35c --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/SpatialWithinPolygonPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface SpatialWithinPolygonPredicateFieldReference extends TypedPredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/TermsPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/TermsPredicateFieldReference.java new file mode 100644 index 00000000000..596ab19939a --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/TermsPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface TermsPredicateFieldReference extends PredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/TypedPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/TypedPredicateFieldReference.java new file mode 100644 index 00000000000..1bec47b7a0a --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/TypedPredicateFieldReference.java @@ -0,0 +1,17 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +import org.hibernate.search.engine.search.common.ValueModel; +import org.hibernate.search.engine.search.reference.FieldReference; + +public interface TypedPredicateFieldReference extends FieldReference { + + Class predicateType(); + + default ValueModel valueModel() { + return ValueModel.MAPPING; + } +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/WildcardPredicateFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/WildcardPredicateFieldReference.java new file mode 100644 index 00000000000..c21aaadf675 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/predicate/WildcardPredicateFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.predicate; + +public interface WildcardPredicateFieldReference extends PredicateFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/DistanceProjectionFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/DistanceProjectionFieldReference.java new file mode 100644 index 00000000000..45e5e26fc16 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/DistanceProjectionFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.projection; + +public interface DistanceProjectionFieldReference extends TypedProjectionFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/FieldProjectionFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/FieldProjectionFieldReference.java new file mode 100644 index 00000000000..a0157d25c7b --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/FieldProjectionFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.projection; + +public interface FieldProjectionFieldReference extends TypedProjectionFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/HighlightProjectionFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/HighlightProjectionFieldReference.java new file mode 100644 index 00000000000..07a314ff9f6 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/HighlightProjectionFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.projection; + +public interface HighlightProjectionFieldReference extends ProjectionFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/ObjectProjectionFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/ObjectProjectionFieldReference.java new file mode 100644 index 00000000000..1d4e7e4e4e9 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/ObjectProjectionFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.projection; + +public interface ObjectProjectionFieldReference extends ProjectionFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/ProjectionFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/ProjectionFieldReference.java new file mode 100644 index 00000000000..7cca7f2941f --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/ProjectionFieldReference.java @@ -0,0 +1,10 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.projection; + +import org.hibernate.search.engine.search.reference.FieldReference; + +public interface ProjectionFieldReference extends FieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/TypedProjectionFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/TypedProjectionFieldReference.java new file mode 100644 index 00000000000..013e8febc50 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/projection/TypedProjectionFieldReference.java @@ -0,0 +1,16 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.projection; + +import org.hibernate.search.engine.search.common.ValueModel; + +public interface TypedProjectionFieldReference extends ProjectionFieldReference { + + Class projectionType(); + + default ValueModel valueModel() { + return ValueModel.MAPPING; + } +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/FieldSortFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/FieldSortFieldReference.java new file mode 100644 index 00000000000..0a20f240fa7 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/FieldSortFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.sort; + +public interface FieldSortFieldReference extends TypedSortFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/ScoreSortFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/ScoreSortFieldReference.java new file mode 100644 index 00000000000..9300a25b71c --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/ScoreSortFieldReference.java @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.sort; + +public interface ScoreSortFieldReference extends TypedSortFieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/SortFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/SortFieldReference.java new file mode 100644 index 00000000000..0dcb59996da --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/SortFieldReference.java @@ -0,0 +1,10 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.sort; + +import org.hibernate.search.engine.search.reference.FieldReference; + +public interface SortFieldReference extends FieldReference { +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/TypedSortFieldReference.java b/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/TypedSortFieldReference.java new file mode 100644 index 00000000000..100d39a8c44 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/reference/sort/TypedSortFieldReference.java @@ -0,0 +1,16 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.reference.sort; + +import org.hibernate.search.engine.search.common.ValueModel; + +public interface TypedSortFieldReference extends SortFieldReference { + + Class sortType(); + + default ValueModel valueModel() { + return ValueModel.MAPPING; + } +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/CompositeSortComponentsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/CompositeSortComponentsStep.java index e8ca2178a12..30913f336ba 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/CompositeSortComponentsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/CompositeSortComponentsStep.java @@ -13,10 +13,11 @@ * for example when calling {@link SearchSortFactory#composite()}, * but not in "implicit" composite sorts such as when calling {@link SortThenStep#then()}. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). */ -public interface CompositeSortComponentsStep> - extends SortFinalStep, SortThenStep { +public interface CompositeSortComponentsStep> + extends SortFinalStep, SortThenStep { /** * Add an element to the composite sort based on a previously-built {@link SearchSort}. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/DistanceSortOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/DistanceSortOptionsStep.java index fe4f4c87d9a..d69ea09b064 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/DistanceSortOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/DistanceSortOptionsStep.java @@ -11,11 +11,15 @@ /** * The initial and final step in a "distance" sort definition, where optional parameters can be set. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). * @param The type of factory used to create predicates in {@link #filter(Function)}. */ -public interface DistanceSortOptionsStep, PDF extends SearchPredicateFactory> - extends SortFinalStep, SortThenStep, SortOrderStep, SortModeStep, SortFilterStep { +public interface DistanceSortOptionsStep< + SR, + S extends DistanceSortOptionsStep, + PDF extends SearchPredicateFactory> + extends SortFinalStep, SortThenStep, SortOrderStep, SortModeStep, SortFilterStep { /** * Start describing the behavior of this sort when a document doesn't diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/ExtendedSearchSortFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/ExtendedSearchSortFactory.java index c7e36c1d3b1..e735859d403 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/ExtendedSearchSortFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/ExtendedSearchSortFactory.java @@ -7,6 +7,7 @@ import java.util.function.Function; import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; +import org.hibernate.search.engine.search.reference.sort.FieldSortFieldReference; import org.hibernate.search.engine.spatial.GeoPoint; /** @@ -16,23 +17,39 @@ * Warning: Generic parameters of this type are subject to change, * so this type should not be referenced directly in user code. * + * @param Scope root type. * @param The self type, i.e. the exposed type of this factory. * @param The type of factory used to create predicates in {@link FieldSortOptionsStep#filter(Function)}. */ -public interface ExtendedSearchSortFactory, PDF extends SearchPredicateFactory> - extends SearchSortFactory { +public interface ExtendedSearchSortFactory< + SR, + S extends ExtendedSearchSortFactory, + PDF extends SearchPredicateFactory> + extends SearchSortFactory { @Override S withRoot(String objectFieldPath); @Override - FieldSortOptionsStep field(String fieldPath); + FieldSortOptionsStep field(String fieldPath); @Override - DistanceSortOptionsStep distance(String fieldPath, GeoPoint location); + DistanceSortOptionsStep distance(String fieldPath, GeoPoint location); @Override - default DistanceSortOptionsStep distance(String fieldPath, double latitude, double longitude) { + default DistanceSortOptionsStep distance(String fieldPath, double latitude, double longitude) { return distance( fieldPath, GeoPoint.of( latitude, longitude ) ); } + + @Override + default DistanceSortOptionsStep distance(FieldSortFieldReference fieldReference, + GeoPoint location) { + return distance( fieldReference.absolutePath(), location ); + } + + @Override + default DistanceSortOptionsStep distance(FieldSortFieldReference fieldReference, double latitude, + double longitude) { + return distance( fieldReference, GeoPoint.of( latitude, longitude ) ); + } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortMissingValueBehaviorGenericStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortMissingValueBehaviorGenericStep.java new file mode 100644 index 00000000000..62804eaee0e --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortMissingValueBehaviorGenericStep.java @@ -0,0 +1,68 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.sort.dsl; + +import org.hibernate.search.util.common.SearchException; + +/** + * The step in a sort definition where the behavior on missing values can be set. + * + * @param The type of the missing value to use. + * @param The type of the next step (returned by {@link FieldSortMissingValueBehaviorGenericStep#first()}, for example). + * + * @author Emmanuel Bernard emmanuel@hibernate.org + */ +public interface FieldSortMissingValueBehaviorGenericStep { + + /** + * Put documents with missing values last in the sorting. + * + *

This instruction is independent of whether the sort is being ascending + * or descending. + * + * @return The next step. + */ + N last(); + + /** + * Put documents with missing values first in the sorting. + * + *

This instruction is independent of whether the sort is being ascending + * or descending. + * + * @return The next step. + */ + N first(); + + /** + * Give documents with missing values the highest value when sorting. + *

+ * This puts documents with missing values last when using ascending order, + * or first when using descending order. + * + * @return The next step. + */ + N highest(); + + /** + * Give documents with missing values the lowest value when sorting. + *

+ * This puts documents with missing values first when using ascending order, + * or last when using descending order. + * + * @return The next step. + */ + N lowest(); + + /** + * When documents are missing a value on the sort field, use the given value instead. + * + * @param value The value to use as a default when a document is missing a value on the sort field. + * @return The next step. + * @throws SearchException If the field is not numeric. + */ + N use(T value); + +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortMissingValueBehaviorStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortMissingValueBehaviorStep.java index 3250925a792..2028d7dee71 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortMissingValueBehaviorStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortMissingValueBehaviorStep.java @@ -14,47 +14,7 @@ * * @author Emmanuel Bernard emmanuel@hibernate.org */ -public interface FieldSortMissingValueBehaviorStep { - - /** - * Put documents with missing values last in the sorting. - * - *

This instruction is independent of whether the sort is being ascending - * or descending. - * - * @return The next step. - */ - N last(); - - /** - * Put documents with missing values first in the sorting. - * - *

This instruction is independent of whether the sort is being ascending - * or descending. - * - * @return The next step. - */ - N first(); - - /** - * Give documents with missing values the highest value when sorting. - *

- * This puts documents with missing values last when using ascending order, - * or first when using descending order. - * - * @return The next step. - */ - N highest(); - - /** - * Give documents with missing values the lowest value when sorting. - *

- * This puts documents with missing values first when using ascending order, - * or last when using descending order. - * - * @return The next step. - */ - N lowest(); +public interface FieldSortMissingValueBehaviorStep extends FieldSortMissingValueBehaviorGenericStep { /** * When documents are missing a value on the sort field, use the given value instead. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortOptionsGenericStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortOptionsGenericStep.java new file mode 100644 index 00000000000..a08a980aeaa --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortOptionsGenericStep.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.sort.dsl; + +import java.util.function.Function; + +import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; + +/** + * The initial and final step in a "field" sort definition, where optional parameters can be set. + * + * @param Scope root type. + * @param The "self" type (the actual exposed type of this step). + * @param The type of factory used to create predicates in {@link #filter(Function)}. + * + * @author Emmanuel Bernard emmanuel@hibernate.org + */ +public interface FieldSortOptionsGenericStep< + SR, + T, + S extends FieldSortOptionsGenericStep, + N extends FieldSortMissingValueBehaviorGenericStep, + PDF extends SearchPredicateFactory> + extends SortFinalStep, SortThenStep, SortOrderStep, SortModeStep, SortFilterStep { + + /** + * Start describing the behavior of this sort when a document doesn't + * have any value for the targeted field. + * + * @return The next step. + */ + N missing(); + +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortOptionsStep.java index 6636ea47dfb..b4824133993 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/FieldSortOptionsStep.java @@ -11,20 +11,13 @@ /** * The initial and final step in a "field" sort definition, where optional parameters can be set. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). * @param The type of factory used to create predicates in {@link #filter(Function)}. * * @author Emmanuel Bernard emmanuel@hibernate.org */ -public interface FieldSortOptionsStep, PDF extends SearchPredicateFactory> - extends SortFinalStep, SortThenStep, SortOrderStep, SortModeStep, SortFilterStep { - - /** - * Start describing the behavior of this sort when a document doesn't - * have any value for the targeted field. - * - * @return The next step. - */ - FieldSortMissingValueBehaviorStep missing(); +public interface FieldSortOptionsStep, PDF extends SearchPredicateFactory> + extends FieldSortOptionsGenericStep, PDF> { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/ScoreSortOptionsStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/ScoreSortOptionsStep.java index 8bfb4c2d2e3..58561aa1e6c 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/ScoreSortOptionsStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/ScoreSortOptionsStep.java @@ -7,10 +7,11 @@ /** * The initial and final step in a "score" sort definition, where optional parameters can be set. * + * @param Scope root type. * @param The "self" type (the actual exposed type of this step). * * @author Emmanuel Bernard emmanuel@hibernate.org */ -public interface ScoreSortOptionsStep> - extends SortFinalStep, SortThenStep, SortOrderStep { +public interface ScoreSortOptionsStep> + extends SortFinalStep, SortThenStep, SortOrderStep { } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactory.java index 7809348c57f..fcc01d27170 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactory.java @@ -9,6 +9,7 @@ import org.hibernate.search.engine.search.common.NamedValues; import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; +import org.hibernate.search.engine.search.reference.sort.FieldSortFieldReference; import org.hibernate.search.engine.spatial.GeoPoint; import org.hibernate.search.util.common.SearchException; import org.hibernate.search.util.common.annotation.Incubating; @@ -30,9 +31,10 @@ * Such a factory can also transform relative paths into absolute paths using {@link #toAbsolutePath(String)}; * this can be useful for native sorts in particular. * + * @param Scope root type. * @author Emmanuel Bernard emmanuel@hibernate.org */ -public interface SearchSortFactory { +public interface SearchSortFactory { /** * Order elements by their relevance score. @@ -41,14 +43,14 @@ public interface SearchSortFactory { * * @return A DSL step where the "score" sort can be defined in more details. */ - ScoreSortOptionsStep score(); + ScoreSortOptionsStep score(); /** * Order elements by their internal index order. * * @return A DSL step where the "index order" sort can be defined in more details. */ - SortThenStep indexOrder(); + SortThenStep indexOrder(); /** * Order elements by the value of a specific field. @@ -59,7 +61,20 @@ public interface SearchSortFactory { * @return A DSL step where the "field" sort can be defined in more details. * @throws SearchException If the field doesn't exist or cannot be sorted on. */ - FieldSortOptionsStep field(String fieldPath); + FieldSortOptionsStep> field(String fieldPath); + + /** + * Order elements by the value of a specific field. + *

+ * The default order is ascending. + * + * @param fieldReference The reference representing the path to the index field to sort by. + * @return A DSL step where the "field" sort can be defined in more details. + * @throws SearchException If the field doesn't exist or cannot be sorted on. + */ + @Incubating + FieldSortOptionsGenericStep> field( + FieldSortFieldReference fieldReference); /** * Order elements by the distance from the location stored in the specified field to the location specified. @@ -72,7 +87,24 @@ public interface SearchSortFactory { * @return A DSL step where the "distance" sort can be defined in more details. * @throws SearchException If the field type does not constitute a valid location. */ - DistanceSortOptionsStep distance(String fieldPath, GeoPoint location); + DistanceSortOptionsStep> distance(String fieldPath, GeoPoint location); + + /** + * Order elements by the distance from the location stored in the specified field to the location specified. + *

+ * The default order is ascending. + * + * @param fieldReference The reference representing the path to the index field + * containing the location to compute the distance from. + * @param location The location to which we want to compute the distance. + * @return A DSL step where the "distance" sort can be defined in more details. + * @throws SearchException If the field type does not constitute a valid location. + */ + @Incubating + default DistanceSortOptionsStep> distance( + FieldSortFieldReference fieldReference, GeoPoint location) { + return distance( fieldReference.absolutePath(), location ); + } /** * Order elements by the distance from the location stored in the specified field to the location specified. @@ -86,11 +118,30 @@ public interface SearchSortFactory { * @return A DSL step where the "distance" sort can be defined in more details. * @throws SearchException If the field type does not constitute a valid location. */ - default DistanceSortOptionsStep distance(String fieldPath, double latitude, + default DistanceSortOptionsStep> distance(String fieldPath, double latitude, double longitude) { return distance( fieldPath, GeoPoint.of( latitude, longitude ) ); } + /** + * Order elements by the distance from the location stored in the specified field to the location specified. + *

+ * The default order is ascending. + * + * @param fieldReference The reference representing the path to the index field + * containing the location to compute the distance from. + * @param latitude The latitude of the location to which we want to compute the distance. + * @param longitude The longitude of the location to which we want to compute the distance. + * @return A DSL step where the "distance" sort can be defined in more details. + * @throws SearchException If the field type does not constitute a valid location. + */ + @Incubating + default DistanceSortOptionsStep> distance( + FieldSortFieldReference fieldReference, double latitude, + double longitude) { + return distance( fieldReference, GeoPoint.of( latitude, longitude ) ); + } + /** * Order by a sort composed of several elements. *

@@ -101,7 +152,7 @@ public interface SearchSortFactory { * * @return A DSL step where the "composite" sort can be defined in more details. */ - CompositeSortComponentsStep composite(); + CompositeSortComponentsStep composite(); /** * Order by a sort composed of several elements, @@ -124,7 +175,7 @@ public interface SearchSortFactory { * Should generally be a lambda expression. * @return A DSL step where the "composite" sort can be defined in more details. */ - SortThenStep composite(Consumer> elementContributor); + SortThenStep composite(Consumer> elementContributor); /** * Delegating sort that creates the actual sort at query create time and provides access to query parameters. @@ -135,7 +186,7 @@ public interface SearchSortFactory { * @return A final DSL step in a parameterized sort definition. */ @Incubating - SortThenStep withParameters(Function sortCreator); + SortThenStep withParameters(Function sortCreator); /** * Extend the current factory with the given extension, @@ -146,7 +197,7 @@ public interface SearchSortFactory { * @return The extended factory. * @throws SearchException If the extension cannot be applied (wrong underlying backend, ...). */ - T extension(SearchSortFactoryExtension extension); + T extension(SearchSortFactoryExtension extension); /** * Create a DSL step allowing multiple attempts to apply extensions one after the other, @@ -157,7 +208,7 @@ public interface SearchSortFactory { * * @return A DSL step. */ - SearchSortFactoryExtensionIfSupportedStep extension(); + SearchSortFactoryExtensionIfSupportedStep extension(); /** * Create a new sort factory whose root for all paths passed to the DSL @@ -170,7 +221,7 @@ public interface SearchSortFactory { * @return A new sort factory using the given object field as root. */ @Incubating - SearchSortFactory withRoot(String objectFieldPath); + SearchSortFactory withRoot(String objectFieldPath); /** * @param relativeFieldPath The path to a field, relative to the {@link #withRoot(String) root} of this factory. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtension.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtension.java index 9e5006d03b5..6f645baf541 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtension.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtension.java @@ -14,13 +14,14 @@ * In short, users are only expected to get instances of this type from an API ({@code SomeExtension.get()}) * and pass it to another API. * + * @param Scope root type. * @param The type of extended sort factories. Should generally extend * {@link SearchSortFactory}. * * @see SearchSortFactory#extension(SearchSortFactoryExtension) * @see ExtendedSearchSortFactory */ -public interface SearchSortFactoryExtension { +public interface SearchSortFactoryExtension { /** * Attempt to extend a given factory, returning an empty {@link Optional} in case of failure. @@ -31,6 +32,6 @@ public interface SearchSortFactoryExtension { * @return An optional containing the extended sort factory ({@link T}) in case * of success, or an empty optional otherwise. */ - Optional extendOptional(SearchSortFactory original); + Optional extendOptional(SearchSortFactory original); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtensionIfSupportedMoreStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtensionIfSupportedMoreStep.java index b98fd77c6dc..0fc49144b22 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtensionIfSupportedMoreStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtensionIfSupportedMoreStep.java @@ -12,9 +12,10 @@ * The second and later step when attempting to apply multiple extensions * to a {@link SearchSortFactory}. * + * @param Scope root type. * @see SearchSortFactory#extension() */ -public interface SearchSortFactoryExtensionIfSupportedMoreStep extends SearchSortFactoryExtensionIfSupportedStep { +public interface SearchSortFactoryExtensionIfSupportedMoreStep extends SearchSortFactoryExtensionIfSupportedStep { /** * If no extension passed to {@link #ifSupported(SearchSortFactoryExtension, Function)} @@ -27,7 +28,7 @@ public interface SearchSortFactoryExtensionIfSupportedMoreStep extends SearchSor * Should generally be a lambda expression. * @return The final step in the DSL of the resulting sort. */ - SortThenStep orElse(Function sortContributor); + SortThenStep orElse(Function, ? extends SortFinalStep> sortContributor); /** * If no extension passed to {@link #ifSupported(SearchSortFactoryExtension, Function)} @@ -37,6 +38,6 @@ public interface SearchSortFactoryExtensionIfSupportedMoreStep extends SearchSor * @return The final step in the DSL of the resulting sort. * @throws SearchException If none of the previously passed extensions was supported. */ - SortThenStep orElseFail(); + SortThenStep orElseFail(); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtensionIfSupportedStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtensionIfSupportedStep.java index 6d661ac8a9b..53a3c3a09b7 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtensionIfSupportedStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SearchSortFactoryExtensionIfSupportedStep.java @@ -12,7 +12,7 @@ * * @see SearchSortFactory#extension() */ -public interface SearchSortFactoryExtensionIfSupportedStep { +public interface SearchSortFactoryExtensionIfSupportedStep { /** * If the given extension is supported, and none of the previous extensions passed to @@ -31,8 +31,8 @@ public interface SearchSortFactoryExtensionIfSupportedStep { * @param The type of the extended factory. * @return {@code this}, for method chaining. */ - SearchSortFactoryExtensionIfSupportedMoreStep ifSupported( - SearchSortFactoryExtension extension, + SearchSortFactoryExtensionIfSupportedMoreStep ifSupported( + SearchSortFactoryExtension extension, Function sortContributor ); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SortFilterStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SortFilterStep.java index f557f2b7d29..a3de0e26f88 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SortFilterStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SortFilterStep.java @@ -17,7 +17,7 @@ * @param The "self" type (the actual exposed type of this step) * @param The type of factory used to create predicates in {@link #filter(Function)}. */ -public interface SortFilterStep { +public interface SortFilterStep> { /** * Filter nested objects from which values will be extracted for this sort. diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SortThenStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SortThenStep.java index 6a9a923c9e1..ae81a51eca8 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SortThenStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/SortThenStep.java @@ -7,15 +7,16 @@ /** * The step in a sort definition where another sort can be chained. * + * @param Scope root type. * @author Emmanuel Bernard emmanuel@hibernate.org */ -public interface SortThenStep extends SortFinalStep { +public interface SortThenStep extends SortFinalStep { /** * Start defining another sort, to be applied after the current one. * * @return The next step. */ - SearchSortFactory then(); + SearchSortFactory then(); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/AbstractFieldSortOptionsGenericStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/AbstractFieldSortOptionsGenericStep.java new file mode 100644 index 00000000000..8146580e184 --- /dev/null +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/AbstractFieldSortOptionsGenericStep.java @@ -0,0 +1,197 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.engine.search.sort.dsl.impl; + +import java.util.function.Function; + +import org.hibernate.search.engine.search.common.SortMode; +import org.hibernate.search.engine.search.common.ValueModel; +import org.hibernate.search.engine.search.predicate.SearchPredicate; +import org.hibernate.search.engine.search.predicate.dsl.PredicateFinalStep; +import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; +import org.hibernate.search.engine.search.reference.sort.FieldSortFieldReference; +import org.hibernate.search.engine.search.sort.SearchSort; +import org.hibernate.search.engine.search.sort.dsl.FieldSortMissingValueBehaviorGenericStep; +import org.hibernate.search.engine.search.sort.dsl.FieldSortMissingValueBehaviorStep; +import org.hibernate.search.engine.search.sort.dsl.FieldSortOptionsGenericStep; +import org.hibernate.search.engine.search.sort.dsl.FieldSortOptionsStep; +import org.hibernate.search.engine.search.sort.dsl.SortOrder; +import org.hibernate.search.engine.search.sort.dsl.spi.AbstractSortThenStep; +import org.hibernate.search.engine.search.sort.dsl.spi.SearchSortDslContext; +import org.hibernate.search.engine.search.sort.spi.FieldSortBuilder; +import org.hibernate.search.engine.search.sort.spi.SearchSortIndexScope; +import org.hibernate.search.engine.search.sort.spi.SortTypeKeys; + +public abstract class AbstractFieldSortOptionsGenericStep< + SR, + T, + PDF extends SearchPredicateFactory, + S extends AbstractFieldSortOptionsGenericStep, + N extends FieldSortMissingValueBehaviorGenericStep> + extends AbstractSortThenStep + implements + FieldSortOptionsGenericStep { + + + private final SearchSortDslContext dslContext; + protected final FieldSortBuilder builder; + + public AbstractFieldSortOptionsGenericStep(SearchSortDslContext dslContext, + String fieldPath) { + super( dslContext ); + this.dslContext = dslContext; + this.builder = dslContext.scope().fieldQueryElement( fieldPath, SortTypeKeys.FIELD ); + } + + public static < + T, + SR, + SC extends SearchSortIndexScope, + PDF extends SearchPredicateFactory< + SR>> FieldSortOptionsGenericStep> create( + SearchSortDslContext dslContext, + FieldSortFieldReference fieldReference) { + return new FieldReferenceFieldSortOptionsStep<>( dslContext, fieldReference ); + } + + public static < + PDF extends SearchPredicateFactory, + SR, + SC extends SearchSortIndexScope> FieldSortOptionsStep create( + SearchSortDslContext dslContext, String fieldPath) { + return new StringFieldSortOptionsStep<>( dslContext, fieldPath ); + } + + @Override + public S order(SortOrder order) { + builder.order( order ); + return thisAsS(); + } + + @Override + public S mode(SortMode mode) { + builder.mode( mode ); + return thisAsS(); + } + + @Override + public N missing() { + return thisAsN(); + } + + @Override + public S filter( + Function clauseContributor) { + SearchPredicate predicate = clauseContributor.apply( dslContext.predicateFactory() ).toPredicate(); + + return filter( predicate ); + } + + @Override + public S filter(SearchPredicate searchPredicate) { + builder.filter( searchPredicate ); + return thisAsS(); + } + + public S first() { + builder.missingFirst(); + return thisAsS(); + } + + public S last() { + builder.missingLast(); + return thisAsS(); + } + + public S highest() { + builder.missingHighest(); + return thisAsS(); + } + + public S lowest() { + builder.missingLowest(); + return thisAsS(); + } + + + @Override + protected SearchSort build() { + return builder.build(); + } + + protected abstract S thisAsS(); + + protected abstract N thisAsN(); + + + private static class FieldReferenceFieldSortOptionsStep> + extends + AbstractFieldSortOptionsGenericStep, + FieldReferenceFieldSortOptionsStep> + implements FieldSortMissingValueBehaviorGenericStep> { + private final ValueModel valueModel; + + public FieldReferenceFieldSortOptionsStep(SearchSortDslContext dslContext, + FieldSortFieldReference fieldReference) { + super( dslContext, fieldReference.absolutePath() ); + this.valueModel = fieldReference.valueModel(); + } + + @Override + public FieldReferenceFieldSortOptionsStep use(T value) { + builder.missingAs( value, valueModel ); + return this; + } + + @Override + protected FieldReferenceFieldSortOptionsStep thisAsS() { + return this; + } + + @Override + protected FieldReferenceFieldSortOptionsStep thisAsN() { + return this; + } + } + + private static class StringFieldSortOptionsStep> + extends + AbstractFieldSortOptionsGenericStep, + FieldSortMissingValueBehaviorStep>> + implements FieldSortOptionsStep, PDF>, + FieldSortMissingValueBehaviorStep> { + + public StringFieldSortOptionsStep(SearchSortDslContext dslContext, + String fieldPath) { + super( dslContext, fieldPath ); + } + + @Override + public StringFieldSortOptionsStep use(Object value, ValueModel valueModel) { + builder.missingAs( value, valueModel ); + return this; + } + + @Override + protected StringFieldSortOptionsStep thisAsS() { + return this; + } + + @Override + protected StringFieldSortOptionsStep thisAsN() { + return this; + } + } +} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/CompositeSortComponentsStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/CompositeSortComponentsStepImpl.java index 1846329969f..4295d5bf163 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/CompositeSortComponentsStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/CompositeSortComponentsStepImpl.java @@ -9,23 +9,23 @@ import org.hibernate.search.engine.search.sort.dsl.SearchSortFactory; import org.hibernate.search.engine.search.sort.dsl.spi.SearchSortDslContext; -public final class CompositeSortComponentsStepImpl - implements CompositeSortComponentsStep { +public final class CompositeSortComponentsStepImpl + implements CompositeSortComponentsStep> { - private SearchSortDslContext dslContext; + private SearchSortDslContext dslContext; - public CompositeSortComponentsStepImpl(SearchSortDslContext dslContext) { + public CompositeSortComponentsStepImpl(SearchSortDslContext dslContext) { this.dslContext = dslContext; } @Override - public CompositeSortComponentsStepImpl add(SearchSort searchSort) { + public CompositeSortComponentsStepImpl add(SearchSort searchSort) { dslContext = dslContext.append( searchSort ); return this; } @Override - public SearchSortFactory then() { + public SearchSortFactory then() { return dslContext.then(); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/DistanceSortOptionsStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/DistanceSortOptionsStepImpl.java index bcd8b54c612..231220f5dbe 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/DistanceSortOptionsStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/DistanceSortOptionsStepImpl.java @@ -20,15 +20,15 @@ import org.hibernate.search.engine.search.sort.spi.SortTypeKeys; import org.hibernate.search.engine.spatial.GeoPoint; -public class DistanceSortOptionsStepImpl - extends AbstractSortThenStep - implements DistanceSortOptionsStep, PDF>, - DistanceSortMissingValueBehaviorStep> { +public class DistanceSortOptionsStepImpl> + extends AbstractSortThenStep + implements DistanceSortOptionsStep, PDF>, + DistanceSortMissingValueBehaviorStep> { private final DistanceSortBuilder builder; - private final SearchSortDslContext dslContext; + private final SearchSortDslContext dslContext; - public DistanceSortOptionsStepImpl(SearchSortDslContext dslContext, + public DistanceSortOptionsStepImpl(SearchSortDslContext dslContext, String fieldPath, GeoPoint center) { super( dslContext ); this.dslContext = dslContext; @@ -37,19 +37,19 @@ public DistanceSortOptionsStepImpl(SearchSortDslContext dslCon } @Override - public DistanceSortOptionsStepImpl order(SortOrder order) { + public DistanceSortOptionsStepImpl order(SortOrder order) { builder.order( order ); return this; } @Override - public DistanceSortOptionsStepImpl mode(SortMode mode) { + public DistanceSortOptionsStepImpl mode(SortMode mode) { builder.mode( mode ); return this; } @Override - public DistanceSortOptionsStepImpl filter( + public DistanceSortOptionsStepImpl filter( Function clauseContributor) { SearchPredicate predicate = clauseContributor.apply( dslContext.predicateFactory() ).toPredicate(); @@ -57,43 +57,43 @@ public DistanceSortOptionsStepImpl filter( } @Override - public DistanceSortOptionsStepImpl filter(SearchPredicate searchPredicate) { + public DistanceSortOptionsStepImpl filter(SearchPredicate searchPredicate) { builder.filter( searchPredicate ); return this; } @Override - public DistanceSortMissingValueBehaviorStep> missing() { + public DistanceSortMissingValueBehaviorStep> missing() { return this; } @Override - public DistanceSortOptionsStepImpl first() { + public DistanceSortOptionsStepImpl first() { builder.missingFirst(); return this; } @Override - public DistanceSortOptionsStepImpl last() { + public DistanceSortOptionsStepImpl last() { builder.missingLast(); return this; } @Override - public DistanceSortOptionsStepImpl highest() { + public DistanceSortOptionsStepImpl highest() { builder.missingHighest(); return this; } @Override - public DistanceSortOptionsStepImpl lowest() { + public DistanceSortOptionsStepImpl lowest() { builder.missingLowest(); return this; } @Override - public DistanceSortOptionsStepImpl use(GeoPoint value) { + public DistanceSortOptionsStepImpl use(GeoPoint value) { builder.missingAs( value ); return this; } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/FieldSortOptionsStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/FieldSortOptionsStepImpl.java deleted file mode 100644 index e0b26fb3b75..00000000000 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/FieldSortOptionsStepImpl.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.search.engine.search.sort.dsl.impl; - -import java.util.function.Function; - -import org.hibernate.search.engine.search.common.SortMode; -import org.hibernate.search.engine.search.common.ValueModel; -import org.hibernate.search.engine.search.predicate.SearchPredicate; -import org.hibernate.search.engine.search.predicate.dsl.PredicateFinalStep; -import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; -import org.hibernate.search.engine.search.sort.SearchSort; -import org.hibernate.search.engine.search.sort.dsl.FieldSortMissingValueBehaviorStep; -import org.hibernate.search.engine.search.sort.dsl.FieldSortOptionsStep; -import org.hibernate.search.engine.search.sort.dsl.SortOrder; -import org.hibernate.search.engine.search.sort.dsl.spi.AbstractSortThenStep; -import org.hibernate.search.engine.search.sort.dsl.spi.SearchSortDslContext; -import org.hibernate.search.engine.search.sort.spi.FieldSortBuilder; -import org.hibernate.search.engine.search.sort.spi.SortTypeKeys; - -public class FieldSortOptionsStepImpl - extends AbstractSortThenStep - implements FieldSortOptionsStep, PDF>, - FieldSortMissingValueBehaviorStep> { - - private final SearchSortDslContext dslContext; - private final FieldSortBuilder builder; - - public FieldSortOptionsStepImpl(SearchSortDslContext dslContext, String fieldPath) { - super( dslContext ); - this.dslContext = dslContext; - this.builder = dslContext.scope().fieldQueryElement( fieldPath, SortTypeKeys.FIELD ); - } - - @Override - public FieldSortOptionsStepImpl order(SortOrder order) { - builder.order( order ); - return this; - } - - @Override - public FieldSortOptionsStepImpl mode(SortMode mode) { - builder.mode( mode ); - return this; - } - - @Override - public FieldSortMissingValueBehaviorStep> missing() { - return this; - } - - @Override - public FieldSortOptionsStepImpl filter( - Function clauseContributor) { - SearchPredicate predicate = clauseContributor.apply( dslContext.predicateFactory() ).toPredicate(); - - return filter( predicate ); - } - - @Override - public FieldSortOptionsStepImpl filter(SearchPredicate searchPredicate) { - builder.filter( searchPredicate ); - return this; - } - - @Override - public FieldSortOptionsStepImpl first() { - builder.missingFirst(); - return this; - } - - @Override - public FieldSortOptionsStepImpl last() { - builder.missingLast(); - return this; - } - - @Override - public FieldSortOptionsStepImpl highest() { - builder.missingHighest(); - return this; - } - - @Override - public FieldSortOptionsStepImpl lowest() { - builder.missingLowest(); - return this; - } - - @Override - public FieldSortOptionsStepImpl use(Object value, ValueModel valueModel) { - builder.missingAs( value, valueModel ); - return this; - } - - @Override - protected SearchSort build() { - return builder.build(); - } - -} diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/ScoreSortOptionsStepImpl.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/ScoreSortOptionsStepImpl.java index 37bff677d48..b835ce06b08 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/ScoreSortOptionsStepImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/ScoreSortOptionsStepImpl.java @@ -11,19 +11,19 @@ import org.hibernate.search.engine.search.sort.dsl.spi.SearchSortDslContext; import org.hibernate.search.engine.search.sort.spi.ScoreSortBuilder; -public final class ScoreSortOptionsStepImpl - extends AbstractSortThenStep - implements ScoreSortOptionsStep { +public final class ScoreSortOptionsStepImpl + extends AbstractSortThenStep + implements ScoreSortOptionsStep> { private final ScoreSortBuilder builder; - public ScoreSortOptionsStepImpl(SearchSortDslContext dslContext) { + public ScoreSortOptionsStepImpl(SearchSortDslContext dslContext) { super( dslContext ); this.builder = dslContext.scope().sortBuilders().score(); } @Override - public ScoreSortOptionsStepImpl order(SortOrder order) { + public ScoreSortOptionsStepImpl order(SortOrder order) { builder.order( order ); return this; } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/SearchSortFactoryExtensionStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/SearchSortFactoryExtensionStep.java index 145c995f25d..a3d9c8b35d7 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/SearchSortFactoryExtensionStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/SearchSortFactoryExtensionStep.java @@ -15,37 +15,37 @@ import org.hibernate.search.engine.search.sort.dsl.spi.SearchSortDslContext; import org.hibernate.search.engine.search.sort.dsl.spi.StaticSortThenStep; -public final class SearchSortFactoryExtensionStep - implements SearchSortFactoryExtensionIfSupportedMoreStep { +public final class SearchSortFactoryExtensionStep + implements SearchSortFactoryExtensionIfSupportedMoreStep { - private final SearchSortFactory parent; - private final SearchSortDslContext dslContext; + private final SearchSortFactory parent; + private final SearchSortDslContext dslContext; private final DslExtensionState state = new DslExtensionState<>(); - public SearchSortFactoryExtensionStep(SearchSortFactory parent, - SearchSortDslContext dslContext) { + public SearchSortFactoryExtensionStep(SearchSortFactory parent, + SearchSortDslContext dslContext) { this.parent = parent; this.dslContext = dslContext; } @Override - public SearchSortFactoryExtensionIfSupportedMoreStep ifSupported( - SearchSortFactoryExtension extension, + public SearchSortFactoryExtensionIfSupportedMoreStep ifSupported( + SearchSortFactoryExtension extension, Function sortContributor) { state.ifSupported( extension, extension.extendOptional( parent ), sortContributor ); return this; } @Override - public SortThenStep orElse(Function sortContributor) { + public SortThenStep orElse(Function, ? extends SortFinalStep> sortContributor) { SortFinalStep result = state.orElse( parent, sortContributor ); - return new StaticSortThenStep( dslContext, result.toSort() ); + return new StaticSortThenStep( dslContext, result.toSort() ); } @Override - public SortThenStep orElseFail() { + public SortThenStep orElseFail() { SortFinalStep result = state.orElseFail(); - return new StaticSortThenStep( dslContext, result.toSort() ); + return new StaticSortThenStep( dslContext, result.toSort() ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/WithParametersSortFinalStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/WithParametersSortFinalStep.java index 46be99aa1b6..ea0ef71ddf7 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/WithParametersSortFinalStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/impl/WithParametersSortFinalStep.java @@ -13,11 +13,11 @@ import org.hibernate.search.engine.search.sort.dsl.spi.SearchSortDslContext; import org.hibernate.search.engine.search.sort.spi.WithParametersSortBuilder; -public class WithParametersSortFinalStep extends AbstractSortThenStep { +public class WithParametersSortFinalStep extends AbstractSortThenStep { private final WithParametersSortBuilder builder; - public WithParametersSortFinalStep(SearchSortDslContext dslContext, + public WithParametersSortFinalStep(SearchSortDslContext dslContext, Function sortCreator) { super( dslContext ); builder = dslContext.scope().sortBuilders().withParameters(); diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/AbstractSearchSortFactory.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/AbstractSearchSortFactory.java index ca1be944720..3a5d93209b3 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/AbstractSearchSortFactory.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/AbstractSearchSortFactory.java @@ -10,19 +10,21 @@ import org.hibernate.search.engine.common.dsl.spi.DslExtensionState; import org.hibernate.search.engine.search.common.NamedValues; import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; +import org.hibernate.search.engine.search.reference.sort.FieldSortFieldReference; import org.hibernate.search.engine.search.sort.SearchSort; import org.hibernate.search.engine.search.sort.dsl.CompositeSortComponentsStep; import org.hibernate.search.engine.search.sort.dsl.DistanceSortOptionsStep; import org.hibernate.search.engine.search.sort.dsl.ExtendedSearchSortFactory; +import org.hibernate.search.engine.search.sort.dsl.FieldSortOptionsGenericStep; import org.hibernate.search.engine.search.sort.dsl.FieldSortOptionsStep; import org.hibernate.search.engine.search.sort.dsl.ScoreSortOptionsStep; import org.hibernate.search.engine.search.sort.dsl.SearchSortFactoryExtension; import org.hibernate.search.engine.search.sort.dsl.SearchSortFactoryExtensionIfSupportedStep; import org.hibernate.search.engine.search.sort.dsl.SortFinalStep; import org.hibernate.search.engine.search.sort.dsl.SortThenStep; +import org.hibernate.search.engine.search.sort.dsl.impl.AbstractFieldSortOptionsGenericStep; import org.hibernate.search.engine.search.sort.dsl.impl.CompositeSortComponentsStepImpl; import org.hibernate.search.engine.search.sort.dsl.impl.DistanceSortOptionsStepImpl; -import org.hibernate.search.engine.search.sort.dsl.impl.FieldSortOptionsStepImpl; import org.hibernate.search.engine.search.sort.dsl.impl.ScoreSortOptionsStepImpl; import org.hibernate.search.engine.search.sort.dsl.impl.SearchSortFactoryExtensionStep; import org.hibernate.search.engine.search.sort.dsl.impl.WithParametersSortFinalStep; @@ -30,66 +32,73 @@ import org.hibernate.search.engine.spatial.GeoPoint; public abstract class AbstractSearchSortFactory< - S extends ExtendedSearchSortFactory, + SR, + S extends ExtendedSearchSortFactory, SC extends SearchSortIndexScope, - PDF extends SearchPredicateFactory> - implements ExtendedSearchSortFactory { + PDF extends SearchPredicateFactory> + implements ExtendedSearchSortFactory { - protected final SearchSortDslContext dslContext; + protected final SearchSortDslContext dslContext; - public AbstractSearchSortFactory(SearchSortDslContext dslContext) { + public AbstractSearchSortFactory(SearchSortDslContext dslContext) { this.dslContext = dslContext; } @Override - public ScoreSortOptionsStep score() { - return new ScoreSortOptionsStepImpl( dslContext ); + public ScoreSortOptionsStep score() { + return new ScoreSortOptionsStepImpl<>( dslContext ); } @Override - public SortThenStep indexOrder() { + public SortThenStep indexOrder() { return staticThenStep( dslContext.scope().sortBuilders().indexOrder() ); } @Override - public FieldSortOptionsStep field(String fieldPath) { - return new FieldSortOptionsStepImpl<>( dslContext, fieldPath ); + public FieldSortOptionsStep field(String fieldPath) { + return AbstractFieldSortOptionsGenericStep.create( dslContext, fieldPath ); } @Override - public DistanceSortOptionsStep distance(String fieldPath, GeoPoint location) { + public FieldSortOptionsGenericStep> field( + FieldSortFieldReference fieldReference) { + return AbstractFieldSortOptionsGenericStep.create( dslContext, fieldReference ); + } + + @Override + public DistanceSortOptionsStep distance(String fieldPath, GeoPoint location) { return new DistanceSortOptionsStepImpl<>( dslContext, fieldPath, location ); } @Override - public CompositeSortComponentsStep composite() { - return new CompositeSortComponentsStepImpl( dslContext ); + public CompositeSortComponentsStep composite() { + return new CompositeSortComponentsStepImpl<>( dslContext ); } @Override - public SortThenStep composite(Consumer> elementContributor) { - CompositeSortComponentsStep next = composite(); + public SortThenStep composite(Consumer> elementContributor) { + CompositeSortComponentsStep next = composite(); elementContributor.accept( next ); return next; } @Override - public SortThenStep withParameters(Function sortCreator) { - return new WithParametersSortFinalStep( dslContext, sortCreator ); + public SortThenStep withParameters(Function sortCreator) { + return new WithParametersSortFinalStep<>( dslContext, sortCreator ); } @Override - public T extension(SearchSortFactoryExtension extension) { + public T extension(SearchSortFactoryExtension extension) { return DslExtensionState.returnIfSupported( extension, extension.extendOptional( this ) ); } @Override - public SearchSortFactoryExtensionIfSupportedStep extension() { - return new SearchSortFactoryExtensionStep( this, dslContext ); + public SearchSortFactoryExtensionIfSupportedStep extension() { + return new SearchSortFactoryExtensionStep<>( this, dslContext ); } @Override @@ -97,8 +106,8 @@ public final String toAbsolutePath(String relativeFieldPath) { return dslContext.scope().toAbsolutePath( relativeFieldPath ); } - protected final SortThenStep staticThenStep(SearchSort sort) { - return new StaticSortThenStep( dslContext, sort ); + protected final SortThenStep staticThenStep(SearchSort sort) { + return new StaticSortThenStep<>( dslContext, sort ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/AbstractSortThenStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/AbstractSortThenStep.java index 96c24a663fb..d0a70bcba9a 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/AbstractSortThenStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/AbstractSortThenStep.java @@ -8,17 +8,17 @@ import org.hibernate.search.engine.search.sort.dsl.SearchSortFactory; import org.hibernate.search.engine.search.sort.dsl.SortThenStep; -public abstract class AbstractSortThenStep implements SortThenStep { - private final SearchSortDslContext parentDslContext; +public abstract class AbstractSortThenStep implements SortThenStep { + private final SearchSortDslContext parentDslContext; - private SearchSortDslContext selfDslContext; + private SearchSortDslContext selfDslContext; - public AbstractSortThenStep(SearchSortDslContext parentDslContext) { + public AbstractSortThenStep(SearchSortDslContext parentDslContext) { this.parentDslContext = parentDslContext; } @Override - public final SearchSortFactory then() { + public final SearchSortFactory then() { return selfDslContext().then(); } @@ -27,7 +27,7 @@ public SearchSort toSort() { return selfDslContext().toSort(); } - private SearchSortDslContext selfDslContext() { + private SearchSortDslContext selfDslContext() { /* * Postpone the call of build() as long as possible, * and make sure to only call it once, diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/SearchSortDslContext.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/SearchSortDslContext.java index fa25e26af22..0373b483368 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/SearchSortDslContext.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/SearchSortDslContext.java @@ -19,29 +19,33 @@ * including in particular the search scope, the sort builder factory * and the knowledge of previous sorts chained using {@link SortThenStep#then()}. * + * @param Scope root type. * @param The type of the backend-specific search scope. * @param The type of factory used to create predicates in {@link FieldSortOptionsStep#filter(Function)}. */ -public final class SearchSortDslContext, PDF extends SearchPredicateFactory> { - - public static , PDF extends SearchPredicateFactory> SearchSortDslContext root( - SC scope, - Function, SearchSortFactory> factoryProvider, - PDF predicateFactory) { +public final class SearchSortDslContext, PDF extends SearchPredicateFactory> { + + public static < + SR, + SC extends SearchSortIndexScope, + PDF extends SearchPredicateFactory> SearchSortDslContext root( + SC scope, + Function, SearchSortFactory> factoryProvider, + PDF predicateFactory) { return new SearchSortDslContext<>( scope, factoryProvider, null, null, predicateFactory ); } private final SC scope; - private final Function, SearchSortFactory> factoryProvider; - private final SearchSortDslContext parent; + private final Function, SearchSortFactory> factoryProvider; + private final SearchSortDslContext parent; private final SearchSort sort; private final PDF predicateFactory; private SearchSort compositeSort; private SearchSortDslContext(SC scope, - Function, SearchSortFactory> factoryProvider, - SearchSortDslContext parent, SearchSort sort, + Function, SearchSortFactory> factoryProvider, + SearchSortDslContext parent, SearchSort sort, PDF predicateFactory) { this.scope = scope; this.factoryProvider = factoryProvider; @@ -60,7 +64,7 @@ public SC scope() { /** * @return A new factory to be returned by {@link SortThenStep#then()}. */ - public SearchSortFactory then() { + public SearchSortFactory then() { return factoryProvider.apply( this ); } @@ -69,7 +73,7 @@ public SearchSortFactory then() { * @param newPredicateFactory The new predicate factory for the new DSL context. * @return A copy of this DSL context with its scope and predicate factory replaced with the given ones. */ - public SearchSortDslContext rescope(SC newScope, PDF newPredicateFactory) { + public SearchSortDslContext rescope(SC newScope, PDF newPredicateFactory) { return new SearchSortDslContext<>( newScope, factoryProvider, parent, sort, newPredicateFactory ); } @@ -79,7 +83,7 @@ public SearchSortDslContext rescope(SC newScope, PDF newPredicateFactor * @param sort The sort to add. * @return A new DSL context, with the given builder appended. */ - public SearchSortDslContext append(SearchSort sort) { + public SearchSortDslContext append(SearchSort sort) { return new SearchSortDslContext<>( scope, factoryProvider, this, sort, predicateFactory ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/StaticSortThenStep.java b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/StaticSortThenStep.java index 41dc008824c..d0ec18fc2d3 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/StaticSortThenStep.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/sort/dsl/spi/StaticSortThenStep.java @@ -6,10 +6,10 @@ import org.hibernate.search.engine.search.sort.SearchSort; -public final class StaticSortThenStep extends AbstractSortThenStep { +public final class StaticSortThenStep extends AbstractSortThenStep { final SearchSort sort; - public StaticSortThenStep(SearchSortDslContext parentDslContext, SearchSort sort) { + public StaticSortThenStep(SearchSortDslContext parentDslContext, SearchSort sort) { super( parentDslContext ); this.sort = sort; } diff --git a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/ElasticsearchExtensionIT.java b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/ElasticsearchExtensionIT.java index 026f6319ab1..54cca5cc765 100644 --- a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/ElasticsearchExtensionIT.java +++ b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/ElasticsearchExtensionIT.java @@ -107,19 +107,19 @@ void queryContext() { StubMappingScope scope = mainIndex.createScope(); // Put intermediary contexts into variables to check they have the right type - ElasticsearchSearchQuerySelectStep context1 = + ElasticsearchSearchQuerySelectStep context1 = scope.query().extension( ElasticsearchExtension.get() ); - ElasticsearchSearchQueryWhereStep context2 = context1.select( + ElasticsearchSearchQueryWhereStep context2 = context1.select( f -> f.composite() .from( f.documentReference(), f.source() ) // We don't care about the source, it's just to test that the factory context allows ES-specific projection .as( (docRef, source) -> docRef ) ); // Note we can use Elasticsearch-specific predicates immediately - ElasticsearchSearchQueryOptionsStep context3 = + ElasticsearchSearchQueryOptionsStep context3 = context2.where( f -> f.fromJson( "{'match_all': {}}" ) ); // Note we can use Elasticsearch-specific sorts immediately - ElasticsearchSearchQueryOptionsStep context4 = + ElasticsearchSearchQueryOptionsStep context4 = context3.sort( f -> f.fromJson( "{'nativeField_sort1': 'asc'}" ) ); // Put the query and result into variables to check they have the right type @@ -131,16 +131,16 @@ void queryContext() { .hasTotalHitCount( 6 ); // Also check (at compile time) the context type for other asXXX() methods, since we need to override each method explicitly - ElasticsearchSearchQueryWhereStep selectEntityReferenceContext = + ElasticsearchSearchQueryWhereStep selectEntityReferenceContext = scope.query().extension( ElasticsearchExtension.get() ).selectEntityReference(); - ElasticsearchSearchQueryWhereStep selectEntityContext = + ElasticsearchSearchQueryWhereStep selectEntityContext = scope.query().extension( ElasticsearchExtension.get() ).selectEntity(); SearchProjection projection = scope.projection().documentReference().toProjection(); - ElasticsearchSearchQueryWhereStep selectProjectionContext = + ElasticsearchSearchQueryWhereStep selectProjectionContext = scope.query().extension( ElasticsearchExtension.get() ).select( projection ); - ElasticsearchSearchQueryWhereStep, StubLoadingOptionsStep> selectProjectionsContext = + ElasticsearchSearchQueryWhereStep, StubLoadingOptionsStep> selectProjectionsContext = scope.query().extension( ElasticsearchExtension.get() ).select( projection, projection ); - ElasticsearchSearchQueryOptionsStep defaultResultContext = + ElasticsearchSearchQueryOptionsStep defaultResultContext = scope.query().extension( ElasticsearchExtension.get() ) .where( f -> f.fromJson( "{'match_all': {}}" ) ); } diff --git a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/search/ElasticsearchShardsFailedExceptionIT.java b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/search/ElasticsearchShardsFailedExceptionIT.java index dd85cf0cac9..03ea46add80 100644 --- a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/search/ElasticsearchShardsFailedExceptionIT.java +++ b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/search/ElasticsearchShardsFailedExceptionIT.java @@ -87,7 +87,7 @@ void success() { private SearchQuery createQuery() { StubMappingScope scope = index.createScope( index2 ); - SearchPredicateFactory factory = scope.predicate(); + SearchPredicateFactory factory = scope.predicate(); SearchPredicate predicate = factory.range().field( "field" ).greaterThan( "tex" ).toPredicate(); return scope.query().where( predicate ).toQuery(); diff --git a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/search/query/ElasticsearchBoolSearchPredicateIT.java b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/search/query/ElasticsearchBoolSearchPredicateIT.java index 027c63e3672..18e34eb82a4 100644 --- a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/search/query/ElasticsearchBoolSearchPredicateIT.java +++ b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/search/query/ElasticsearchBoolSearchPredicateIT.java @@ -32,7 +32,7 @@ void setup() { @Test void resultingQueryOptimization() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertJsonEqualsIgnoringUnknownFields( "{" + @@ -128,7 +128,7 @@ void resultingQueryOptimization() { @Test void resultingQueryOptimizationWithBoost() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertJsonEqualsIgnoringUnknownFields( "{" + diff --git a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/testsupport/util/ElasticsearchTckBackendHelper.java b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/testsupport/util/ElasticsearchTckBackendHelper.java index b0704c31a82..4a9afb85433 100644 --- a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/testsupport/util/ElasticsearchTckBackendHelper.java +++ b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/testsupport/util/ElasticsearchTckBackendHelper.java @@ -99,7 +99,7 @@ public SearchSetupHelper.SetupContext startSetup(SearchSetupHelper.SetupContext } @Override - public PredicateFinalStep createSlowPredicate(SearchPredicateFactory f) { + public PredicateFinalStep createSlowPredicate(SearchPredicateFactory f) { return f.extension( ElasticsearchExtension.get() ) .fromJson( "{\"script\": {" + " \"script\": \"" @@ -116,9 +116,14 @@ public PredicateFinalStep createSlowPredicate(SearchPredicateFactory f) { @Override public < + SR, R, E, - LOS> SearchQueryDslExtension, R, E, LOS> queryDslExtension() { + LOS> SearchQueryDslExtension, + R, + E, + LOS> queryDslExtension() { return ElasticsearchExtension.get(); } } diff --git a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/LuceneExtensionIT.java b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/LuceneExtensionIT.java index c0c5d764b18..418085ca2c4 100644 --- a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/LuceneExtensionIT.java +++ b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/LuceneExtensionIT.java @@ -124,19 +124,19 @@ void queryContext() { StubMappingScope scope = mainIndex.createScope(); // Put intermediary contexts into variables to check they have the right type - LuceneSearchQuerySelectStep context1 = + LuceneSearchQuerySelectStep context1 = scope.query().extension( LuceneExtension.get() ); - LuceneSearchQueryWhereStep context2 = context1.select( + LuceneSearchQueryWhereStep context2 = context1.select( f -> f.composite() .from( f.documentReference(), f.document() ) // We don't care about the document, it's just to test that the factory context allows Lucene-specific projection .as( (docRef, document) -> docRef ) ); // Note we can use Lucene-specific predicates immediately - LuceneSearchQueryOptionsStep context3 = + LuceneSearchQueryOptionsStep context3 = context2.where( f -> f.fromLuceneQuery( new MatchAllDocsQuery() ) ); // Note we can use Lucene-specific sorts immediately - LuceneSearchQueryOptionsStep context4 = + LuceneSearchQueryOptionsStep context4 = context3.sort( f -> f.fromLuceneSortField( new SortedSetSortField( "sort1", false ) ) ); // Put the query and result into variables to check they have the right type @@ -148,16 +148,16 @@ void queryContext() { .hasTotalHitCount( 5 ); // Also check (at compile time) the context type for other asXXX() methods, since we need to override each method explicitly - LuceneSearchQueryWhereStep selectEntityReferenceContext = + LuceneSearchQueryWhereStep selectEntityReferenceContext = scope.query().extension( LuceneExtension.get() ).selectEntityReference(); - LuceneSearchQueryWhereStep selectEntityContext = + LuceneSearchQueryWhereStep selectEntityContext = scope.query().extension( LuceneExtension.get() ).selectEntity(); SearchProjection projection = scope.projection().documentReference().toProjection(); - LuceneSearchQueryWhereStep selectProjectionContext = + LuceneSearchQueryWhereStep selectProjectionContext = scope.query().extension( LuceneExtension.get() ).select( projection ); - LuceneSearchQueryWhereStep, ?> selectProjectionsContext = + LuceneSearchQueryWhereStep, ?> selectProjectionsContext = scope.query().extension( LuceneExtension.get() ).select( projection, projection ); - LuceneSearchQueryOptionsStep defaultResultContext = + LuceneSearchQueryOptionsStep defaultResultContext = scope.query().extension( LuceneExtension.get() ) .where( f -> f.fromLuceneQuery( new MatchAllDocsQuery() ) ); } @@ -373,7 +373,7 @@ void predicate_fromLuceneQuery_separatePredicate() { void predicate_fromLuceneQuery_withRoot() { SearchQuery query = mainIndex.query() .where( f -> { - LuceneSearchPredicateFactory f2 = f.extension( LuceneExtension.get() ).withRoot( "flattenedObject" ); + LuceneSearchPredicateFactory f2 = f.extension( LuceneExtension.get() ).withRoot( "flattenedObject" ); return f2.or( f2.fromLuceneQuery( new TermQuery( new Term( f2.toAbsolutePath( "stringInObject" ), "text 2" ) ) ), f2.fromLuceneQuery( IntPoint.newExactQuery( f2.toAbsolutePath( "integerInObject" ), 3 ) ) ); @@ -477,7 +477,7 @@ void sort_fromLuceneSortField_withRoot() { assertThatQuery( mainIndex.query() .where( f -> f.matchAll() ) .sort( f -> { - LuceneSearchSortFactory f2 = f.extension( LuceneExtension.get() ).withRoot( "flattenedObject" ); + LuceneSearchSortFactory f2 = f.extension( LuceneExtension.get() ).withRoot( "flattenedObject" ); return f2.fromLuceneSortField( new SortedSetSortField( f2.toAbsolutePath( "sortInObject" ), false ) ); } ) ) .hasDocRefHitsExactOrder( mainIndex.typeName(), @@ -486,7 +486,7 @@ void sort_fromLuceneSortField_withRoot() { assertThatQuery( mainIndex.query() .where( f -> f.matchAll() ) .sort( f -> { - LuceneSearchSortFactory f2 = f.extension( LuceneExtension.get() ).withRoot( "flattenedObject" ); + LuceneSearchSortFactory f2 = f.extension( LuceneExtension.get() ).withRoot( "flattenedObject" ); return f2.fromLuceneSortField( new SortedSetSortField( f2.toAbsolutePath( "sortInObject" ), true ) ); } ) ) .hasDocRefHitsExactOrder( mainIndex.typeName(), diff --git a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/cache/LuceneQueryCacheConfigurerIT.java b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/cache/LuceneQueryCacheConfigurerIT.java index 2b5bf991c4f..3dde7af3036 100644 --- a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/cache/LuceneQueryCacheConfigurerIT.java +++ b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/cache/LuceneQueryCacheConfigurerIT.java @@ -103,7 +103,7 @@ private void setup(String queryCacheConfigurer, Consumer bi .setup(); } - private SearchQueryOptionsStep matchAllQuery() { + private SearchQueryOptionsStep matchAllQuery() { return index.query() .where( f -> f.matchAll() ); } diff --git a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneBoolSearchPredicateIT.java b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneBoolSearchPredicateIT.java index 32def60e545..6ffbfcbe69f 100644 --- a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneBoolSearchPredicateIT.java +++ b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneBoolSearchPredicateIT.java @@ -55,7 +55,7 @@ void minimumShouldMatch_outOfBounds() { @Test void resultingQueryOptimization() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThat( index.query() .where( f.bool() @@ -93,7 +93,7 @@ void resultingQueryOptimization() { @Test void resultingQueryOptimizationWithBoost() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); // by default Lucene bool query would have a filter on match all assertThat( index.query() diff --git a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneFloatingPointInfinitySearchIT.java b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneFloatingPointInfinitySearchIT.java index a369443af6b..ffdda864ca8 100644 --- a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneFloatingPointInfinitySearchIT.java +++ b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneFloatingPointInfinitySearchIT.java @@ -165,7 +165,7 @@ void double_infinityExcluded() { ); } - private SearchQueryOptionsStep matchAllQuery() { + private SearchQueryOptionsStep matchAllQuery() { return index.createScope().query().where( f -> f.matchAll() ); } diff --git a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneSearchTopDocsMergeFieldSortIT.java b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneSearchTopDocsMergeFieldSortIT.java index 8b8d54b8a15..dab92e88bd1 100644 --- a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneSearchTopDocsMergeFieldSortIT.java +++ b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/search/LuceneSearchTopDocsMergeFieldSortIT.java @@ -204,7 +204,7 @@ private LuceneSearchQuery matchNonEmptySortedByFieldQuery(Dat .toQuery(); } - private FieldSortOptionsStep applySortMode(FieldSortOptionsStep optionsStep, SortMode sortMode) { + private FieldSortOptionsStep applySortMode(FieldSortOptionsStep optionsStep, SortMode sortMode) { if ( sortMode != null ) { return optionsStep.mode( sortMode ); } @@ -213,7 +213,7 @@ private LuceneSearchQuery matchNonEmptySortedByFieldQuery(Dat } } - private FieldSortOptionsStep applyFilter(FieldSortOptionsStep optionsStep, + private FieldSortOptionsStep applyFilter(FieldSortOptionsStep optionsStep, TestedFieldStructure fieldStructure) { if ( fieldStructure.isInNested() ) { return optionsStep.filter( f -> f.match() diff --git a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/testsupport/util/LuceneTckBackendHelper.java b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/testsupport/util/LuceneTckBackendHelper.java index 317b16cfb93..5eb23106231 100644 --- a/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/testsupport/util/LuceneTckBackendHelper.java +++ b/integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/testsupport/util/LuceneTckBackendHelper.java @@ -82,16 +82,21 @@ public TckBackendSetupStrategy createRarePeriodicRefreshBackendSetupStrategy( } @Override - public PredicateFinalStep createSlowPredicate(SearchPredicateFactory f) { + public PredicateFinalStep createSlowPredicate(SearchPredicateFactory f) { return f.extension( LuceneExtension.get() ) .fromLuceneQuery( new SlowQuery( 100 ) ); } @Override public < + SR, R, E, - LOS> SearchQueryDslExtension, R, E, LOS> queryDslExtension() { + LOS> SearchQueryDslExtension, + R, + E, + LOS> queryDslExtension() { return LuceneExtension.get(); } } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/dynamic/FieldTemplateIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/dynamic/FieldTemplateIT.java index 9e11ca36230..14e70ac10f2 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/dynamic/FieldTemplateIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/dynamic/FieldTemplateIT.java @@ -268,7 +268,7 @@ void parentTemplate_wrongType(TestedFieldStructure fieldStructure) { } private SearchQuery query( - Function predicateContributor, + Function, ? extends PredicateFinalStep> predicateContributor, TestedFieldStructure fieldStructure) { return index.createScope().query() .where( f -> { diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/dynamic/ObjectFieldTemplateIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/dynamic/ObjectFieldTemplateIT.java index 8c6b4ad175e..68b03d18a4f 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/dynamic/ObjectFieldTemplateIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/dynamic/ObjectFieldTemplateIT.java @@ -480,7 +480,7 @@ void exists_dynamicObjectField() { } private SearchQuery query( - Function predicateContributor) { + Function, ? extends PredicateFinalStep> predicateContributor) { return index.createScope().query() .where( predicateContributor ) .toQuery(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/AggregationBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/AggregationBaseIT.java index c7bf90a8c4b..102b0658097 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/AggregationBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/AggregationBaseIT.java @@ -149,26 +149,26 @@ private static class ObjectFieldBinding { } } - private static class SupportedExtension implements SearchAggregationFactoryExtension { + private static class SupportedExtension implements SearchAggregationFactoryExtension { @Override - public Optional extendOptional(SearchAggregationFactory original) { + public Optional extendOptional(SearchAggregationFactory original) { assertThat( original ).isNotNull(); return Optional.of( new MyExtendedFactory( original ) ); } } - private static class UnSupportedExtension implements SearchAggregationFactoryExtension { + private static class UnSupportedExtension implements SearchAggregationFactoryExtension { @Override - public Optional extendOptional(SearchAggregationFactory original) { + public Optional extendOptional(SearchAggregationFactory original) { assertThat( original ).isNotNull(); return Optional.empty(); } } private static class MyExtendedFactory { - private final SearchAggregationFactory delegate; + private final SearchAggregationFactory delegate; - MyExtendedFactory(SearchAggregationFactory delegate) { + MyExtendedFactory(SearchAggregationFactory delegate) { this.delegate = delegate; } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/RangeAggregationSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/RangeAggregationSpecificsIT.java index 1cc924d123f..e357094c0ce 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/RangeAggregationSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/RangeAggregationSpecificsIT.java @@ -516,7 +516,7 @@ void rangeOverlap_parmeters(FieldTypeDescriptor fieldType, DataSet data AggregationKey, Long>> aggregationKey = AggregationKey.of( AGGREGATION_NAME ); - SearchAggregationFactory af = index.createScope().aggregation(); + SearchAggregationFactory af = index.createScope().aggregation(); var aggregation = af.withParameters( param -> af.range().field( fieldPath, fieldType.getJavaType() ) .range( param.get( "range1", Range.class ) ) @@ -565,7 +565,7 @@ private void assumeNonCanonicalRangesSupported() { ); } - private SearchQueryOptionsStep matchAllQuery() { + private SearchQueryOptionsStep matchAllQuery() { return index.createScope().query().where( f -> f.matchAll() ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/SingleFieldAggregationBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/SingleFieldAggregationBaseIT.java index ffc8a007103..cd46fac7730 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/SingleFieldAggregationBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/SingleFieldAggregationBaseIT.java @@ -258,7 +258,7 @@ void factoryWithRoot(SupportedSingleFieldAggregationExpectations expectations } private void testValidAggregation(AggregationScenario scenario, StubMappingScope scope, - String fieldPath, Function filterOrNull, + String fieldPath, Function, ? extends PredicateFinalStep> filterOrNull, DataSet dataSet) { testValidAggregation( scenario, scope, @@ -269,8 +269,8 @@ private void testValidAggregation(AggregationScenario scenario, StubMappi } private void testValidAggregation(AggregationScenario scenario, StubMappingScope scope, - Function predicateContributor, - BiFunction, AggregationFinalStep> aggregationContributor, + Function, ? extends PredicateFinalStep> predicateContributor, + BiFunction, AggregationScenario, AggregationFinalStep> aggregationContributor, DataSet dataSet) { AggregationKey aggregationKey = AggregationKey.of( AGGREGATION_NAME ); assertThatQuery( @@ -303,12 +303,12 @@ private String getFieldPath(SingleFieldIndexBinding indexBinding, TestedFieldStr return indexBinding.getFieldPath( fieldStructure, fieldType ); } - private Function getFilterOrNull( + private Function, ? extends PredicateFinalStep> getFilterOrNull( SingleFieldIndexBinding binding, TestedFieldStructure fieldStructure) { return getFilterOrNull( binding.getDiscriminatorFieldPath( fieldStructure ), fieldStructure ); } - private Function getFilterOrNull( + private Function, ? extends PredicateFinalStep> getFilterOrNull( String discriminatorPath, TestedFieldStructure fieldStructure) { if ( fieldStructure.isInNested() ) { return pf -> pf.match() diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/SingleFieldAggregationTypeCheckingAndConversionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/SingleFieldAggregationTypeCheckingAndConversionIT.java index 1c733c0a299..d1016e48662 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/SingleFieldAggregationTypeCheckingAndConversionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/SingleFieldAggregationTypeCheckingAndConversionIT.java @@ -766,8 +766,8 @@ private void testValidAggregationWithConverterSetting(AggregationScenario } private void testValidAggregation(AggregationScenario scenario, StubMappingScope scope, - Function predicateContributor, - BiFunction, AggregationFinalStep> aggregationContributor, + Function, ? extends PredicateFinalStep> predicateContributor, + BiFunction, AggregationScenario, AggregationFinalStep> aggregationContributor, DataSet dataSet) { AggregationKey aggregationKey = AggregationKey.of( AGGREGATION_NAME ); assertThatQuery( diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/TermsAggregationSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/TermsAggregationSpecificsIT.java index 15182357f95..a3b9fdeaa50 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/TermsAggregationSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/aggregation/TermsAggregationSpecificsIT.java @@ -622,7 +622,7 @@ void maxTermCount_veryLarge(FieldTypeDescriptor fieldType, DataSet data ); } - private SearchQueryOptionsStep matchAllQuery() { + private SearchQueryOptionsStep matchAllQuery() { return index.createScope().query().where( f -> f.matchAll() ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/bool/BooleanSortAndRangePredicateIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/bool/BooleanSortAndRangePredicateIT.java index 324334f77fe..98d87cba0e2 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/bool/BooleanSortAndRangePredicateIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/bool/BooleanSortAndRangePredicateIT.java @@ -56,7 +56,7 @@ void setup() { } private SearchQuery sortQuery( - Function sortContributor) { + Function, ? extends SortFinalStep> sortContributor) { StubMappingScope scope = index.createScope(); return scope.query() .where( f -> f.matchAll() ) @@ -64,7 +64,7 @@ private SearchQuery sortQuery( .toQuery(); } - private SearchQuery rangeQuery(Function rangePredicate) { + private SearchQuery rangeQuery(Function, PredicateFinalStep> rangePredicate) { StubMappingScope scope = index.createScope(); return scope.query() .where( rangePredicate ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractBaseQueryStringPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractBaseQueryStringPredicateBaseIT.java index 5e483f89c26..62806462fd8 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractBaseQueryStringPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractBaseQueryStringPredicateBaseIT.java @@ -26,7 +26,7 @@ //CHECKSTYLE:OFF HideUtilityClassConstructor ignore the rule since it is a class with nested test classes. // cannot make a private constructor. -abstract class AbstractBaseQueryStringPredicateBaseIT

> { +abstract class AbstractBaseQueryStringPredicateBaseIT

> { //CHECKSTYLE:ON private static final List< @@ -119,7 +119,7 @@ private static CommonQueryStringPredicateTestValues testValues(FieldTypeDescr class SingleFieldIT extends SingleFieldConfigured { // JDK 11 does not allow static fields in non-static inner class and JUnit does not allow running @Nested tests in static inner classes... @Override - CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return AbstractBaseQueryStringPredicateBaseIT.this.predicate( f ); } } @@ -145,13 +145,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet> dataSet) { return f.withParameters( params -> predicate( f ).field( fieldPath ) .matching( params.get( paramName, String.class ) ) ); @@ -163,14 +163,14 @@ protected Map parameterValues(int matchingDocOrdinal, return Map.of( paramName, dataSet.values.matchingArg( matchingDocOrdinal ) ); } - abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); + abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); } @Nested class MultiFieldIT extends MultiFieldConfigured { // JDK 11 does not allow static fields in non-static inner class and JUnit does not allow running @Nested tests in static inner classes... @Override - CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return AbstractBaseQueryStringPredicateBaseIT.this.predicate( f ); } } @@ -195,33 +195,33 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).field( fieldPath ).field( otherFieldPath ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).field( fieldPath ).fields( fieldPaths ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } - abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); + abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); } @Nested class InObjectFieldIT extends InObjectFieldConfigured { // JDK 11 does not allow static fields in non-static inner class and JUnit does not allow running @Nested tests in static inner classes... @Override - CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return AbstractBaseQueryStringPredicateBaseIT.this.predicate( f ); } } @@ -251,19 +251,19 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } - abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); + abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); } @Nested class AnalysisIT extends AnalysisConfigured { // JDK 11 does not allow static fields in non-static inner class and JUnit does not allow running @Nested tests in static inner classes... @Override - CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return AbstractBaseQueryStringPredicateBaseIT.this.predicate( f ); } } @@ -283,30 +283,30 @@ public AnalysisConfigured() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String matchingParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String matchingParam) { return predicate( f ).field( fieldPath ).matching( matchingParam ); } @Override - protected PredicateFinalStep predicateWithAnalyzerOverride(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithAnalyzerOverride(SearchPredicateFactory f, String fieldPath, String matchingParam, String analyzerName) { return predicate( f ).field( fieldPath ).matching( matchingParam ).analyzer( analyzerName ); } @Override - protected PredicateFinalStep predicateWithSkipAnalysis(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithSkipAnalysis(SearchPredicateFactory f, String fieldPath, String matchingParam) { return predicate( f ).field( fieldPath ).matching( matchingParam ).skipAnalysis(); } - abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); + abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); } @Nested class ScoreIT extends ScoreConfigured { // JDK 11 does not allow static fields in non-static inner class and JUnit does not allow running @Nested tests in static inner classes... @Override - CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return AbstractBaseQueryStringPredicateBaseIT.this.predicate( f ); } } @@ -338,14 +338,14 @@ public void constantScore_fieldLevelBoost(SimpleMappedIndex index, } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).field( fieldPath ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).fields( fieldPaths ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) @@ -353,7 +353,7 @@ protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return predicate( f ).fields( fieldPaths ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) @@ -361,7 +361,7 @@ protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFac } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return predicate( f ).fields( fieldPaths ) @@ -370,14 +370,14 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).field( fieldPath ).boost( fieldBoost ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).field( fieldPath ).boost( fieldBoost ) @@ -386,7 +386,7 @@ protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(Search } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return predicate( f ).field( fieldPath ).boost( fieldBoost ) @@ -394,14 +394,14 @@ protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost( .boost( predicateBoost ); } - abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); + abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); } @Nested class InvalidFieldIT extends InvalidFieldConfigured { // JDK 11 does not allow static fields in non-static inner class and JUnit does not allow running @Nested tests in static inner classes... @Override - CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return AbstractBaseQueryStringPredicateBaseIT.this.predicate( f ); } @@ -421,20 +421,20 @@ protected InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { predicate( f ).field( fieldPath ); } protected abstract String predicateTrait(); - abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); + abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); } @Nested class UnsupportedTypeIT extends UnsupportedTypeConfigured { // JDK 11 does not allow static fields in non-static inner class and JUnit does not allow running @Nested tests in static inner classes... @Override - CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return AbstractBaseQueryStringPredicateBaseIT.this.predicate( f ); } @@ -461,13 +461,13 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { predicate( f ).field( fieldPath ); } protected abstract String predicateTrait(); - abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); + abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); } @Nested @@ -475,7 +475,7 @@ class SearchableIT extends SearchableConfigured { // JDK 11 does not allow static fields in non-static inner class and JUnit does not allow running @Nested tests in static inner classes... @Override - CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return AbstractBaseQueryStringPredicateBaseIT.this.predicate( f ); } @@ -509,20 +509,20 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { predicate( f ).field( fieldPath ); } protected abstract String predicateTrait(); - abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); + abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); } @Nested class ArgumentCheckingIT extends ArgumentCheckingConfigured { // JDK 11 does not allow static fields in non-static inner class and JUnit does not allow running @Nested tests in static inner classes... @Override - CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return AbstractBaseQueryStringPredicateBaseIT.this.predicate( f ); } } @@ -544,18 +544,18 @@ public static List params() { } @Override - protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { predicate( f ).field( fieldPath ).matching( null ); } - abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); + abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); } @Nested class TypeCheckingNoConversionIT extends TypeCheckingNoConversionConfigured { // JDK 11 does not allow static fields in non-static inner class and JUnit does not allow running @Nested tests in static inner classes... @Override - CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return AbstractBaseQueryStringPredicateBaseIT.this.predicate( f ); } @@ -599,13 +599,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f ).field( field0Path ).field( field1Path ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); @@ -613,10 +613,10 @@ protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Pa protected abstract String predicateTrait(); - abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); + abstract CommonQueryStringPredicateFieldStep predicate(SearchPredicateFactory f); } - abstract P predicate(SearchPredicateFactory f); + abstract P predicate(SearchPredicateFactory f); protected abstract String predicateTrait(); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractBaseQueryStringPredicateSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractBaseQueryStringPredicateSpecificsIT.java index 6a7112cecb0..b68c6c0a57e 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractBaseQueryStringPredicateSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractBaseQueryStringPredicateSpecificsIT.java @@ -44,7 +44,7 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -abstract class AbstractBaseQueryStringPredicateSpecificsIT

> { +abstract class AbstractBaseQueryStringPredicateSpecificsIT

> { protected static final String DOCUMENT_1 = "document1"; protected static final String DOCUMENT_2 = "document2"; @@ -505,5 +505,5 @@ private static String escape(String value) { return value; } - abstract P predicate(SearchPredicateFactory f); + abstract P predicate(SearchPredicateFactory f); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateArgumentCheckingIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateArgumentCheckingIT.java index 59a551dd8a6..50954a10e9b 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateArgumentCheckingIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateArgumentCheckingIT.java @@ -23,14 +23,14 @@ public abstract class AbstractPredicateArgumentCheckingIT { @ParameterizedTest(name = "{1}") @MethodSource("params") void nullMatchingParam(SimpleMappedIndex index, FieldTypeDescriptor fieldType) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> tryPredicateWithNullMatchingParam( f, fieldPath( index, fieldType ) ) ) .isInstanceOf( IllegalArgumentException.class ) .hasMessageContainingAll( "must not be null" ); } - protected abstract void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath); + protected abstract void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath); protected String fieldPath(SimpleMappedIndex index, FieldTypeDescriptor fieldType) { return index.binding().field.get( fieldType ).relativeFieldName; diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateConfigurableAnalysisIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateConfigurableAnalysisIT.java index 900edc6e4e8..8163cfc2eaf 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateConfigurableAnalysisIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateConfigurableAnalysisIT.java @@ -178,9 +178,9 @@ void multiIndex_incompatibleAnalyzer_skipAnalysis() { } ); } - protected abstract PredicateFinalStep predicateWithAnalyzerOverride(SearchPredicateFactory f, String fieldPath, + protected abstract PredicateFinalStep predicateWithAnalyzerOverride(SearchPredicateFactory f, String fieldPath, String matchingParam, String analyzerName); - protected abstract PredicateFinalStep predicateWithSkipAnalysis(SearchPredicateFactory f, String fieldPath, + protected abstract PredicateFinalStep predicateWithSkipAnalysis(SearchPredicateFactory f, String fieldPath, String matchingParam); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateFieldInObjectFieldIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateFieldInObjectFieldIT.java index 2e6d79ae35a..bfe1b752b97 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateFieldInObjectFieldIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateFieldInObjectFieldIT.java @@ -81,20 +81,20 @@ void inNamedPredicate_flattened(SimpleMappedIndex mainIndex, @Override @SuppressWarnings("unchecked") - protected final PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, + protected final PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, int matchingDocOrdinal, AbstractPredicateDataSet dataSet) { return predicate( f, objectFieldBinding.absoluteFieldPath( ( (DataSet) dataSet ).fieldType ), matchingDocOrdinal, (DataSet) dataSet ); } - protected final PredicateFinalStep predicateWithRelativePath(SearchPredicateFactory f, + protected final PredicateFinalStep predicateWithRelativePath(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, int matchingDocOrdinal, DataSet dataSet) { return predicate( f, objectFieldBinding.relativeFieldPath( dataSet.fieldType ), matchingDocOrdinal, dataSet ); } - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet); public static final class DataSet> diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateFieldScoreIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateFieldScoreIT.java index e394e5021db..6b5a690b004 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateFieldScoreIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateFieldScoreIT.java @@ -79,7 +79,7 @@ void predicateLevelBoost_fieldLevelBoost(SimpleMappedIndex index, void constantScore_fieldLevelBoost(SimpleMappedIndex index, DataSet dataSet) { assumeConstantScoreSupported(); - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> predicateWithFieldLevelBoostAndConstantScore( f, field0Path( index, dataSet ), 2.1f, 0, dataSet @@ -130,7 +130,7 @@ void predicateLevelBoost_multiFields(SimpleMappedIndex index, Data @SuppressWarnings("unchecked") @Override - protected final PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected final PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return predicate( f, field0Path( (SimpleMappedIndex) index, (DataSet) dataSet ), matchingDocOrdinal, @@ -140,7 +140,7 @@ f, field0Path( (SimpleMappedIndex) index, (DataSet) dataSet @SuppressWarnings("unchecked") @Override - protected final PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, + protected final PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return predicateWithPredicateLevelBoost( f, new String[] { field0Path( @@ -154,7 +154,7 @@ protected final PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, @SuppressWarnings("unchecked") @Override - protected final PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected final PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return predicateWithConstantScore( f, new String[] { field0Path( (SimpleMappedIndex) index, (DataSet) dataSet ) }, @@ -164,7 +164,7 @@ protected final PredicateFinalStep predicateWithConstantScore(SearchPredicateFac @SuppressWarnings("unchecked") @Override - protected final PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected final PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return predicateWithConstantScoreAndPredicateLevelBoost( f, @@ -173,28 +173,28 @@ protected final PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPred ); } - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet); - protected abstract PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, + protected abstract PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet); - protected abstract PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, + protected abstract PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet); - protected abstract PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected abstract PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet); - protected abstract PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, + protected abstract PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet); - protected abstract PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected abstract PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet dataSet); - protected abstract PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected abstract PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet); private String field0Path(SimpleMappedIndex index, DataSet dataSet) { diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateInObjectFieldIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateInObjectFieldIT.java index 8f91696d6c0..e2861af2ae2 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateInObjectFieldIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateInObjectFieldIT.java @@ -180,7 +180,7 @@ void multiIndex_missingNestedField_implicit(SimpleMappedIndex main .hasTotalHitCount( 2 ); } - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, int matchingDocOrdinal, AbstractPredicateDataSet dataSet); abstract static class AbstractObjectBinding { @@ -326,7 +326,7 @@ public static class StubPredicateDefinition implements PredicateDefinition { public static final String IMPL_PARAM_NAME = "impl"; @Override - public SearchPredicate create(PredicateDefinitionContext context) { + public SearchPredicate create(PredicateDefinitionContext context) { PredicateDefinition impl = context.params().get( IMPL_PARAM_NAME, PredicateDefinition.class ); return impl.create( context ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateInvalidFieldIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateInvalidFieldIT.java index 224a25d8b63..7ae74f5a3e7 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateInvalidFieldIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateInvalidFieldIT.java @@ -27,7 +27,7 @@ protected AbstractPredicateInvalidFieldIT(SimpleMappedIndex index) @Test void use_unknownField() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> tryPredicate( f, "unknown_field" ) ) .isInstanceOf( SearchException.class ) @@ -57,7 +57,7 @@ void trait_objectField_flattened() { @Test void use_objectField_nested() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); String fieldPath = index.binding().nested.relativeFieldName; @@ -68,7 +68,7 @@ void use_objectField_nested() { @Test void use_objectField_flattened() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); String fieldPath = index.binding().flattened.relativeFieldName; @@ -77,7 +77,7 @@ void use_objectField_flattened() { .hasMessageContaining( "Cannot use '" + predicateTrait() + "' on field '" + fieldPath + "'" ); } - protected abstract void tryPredicate(SearchPredicateFactory f, String fieldPath); + protected abstract void tryPredicate(SearchPredicateFactory f, String fieldPath); protected abstract String predicateTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateMultiFieldIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateMultiFieldIT.java index db512b3b8fd..b27f0bcc379 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateMultiFieldIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateMultiFieldIT.java @@ -87,14 +87,14 @@ void fieldAndFields(SimpleMappedIndex index, DataSet dataSet } } - protected abstract PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected abstract PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet dataSet); - protected abstract PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, + protected abstract PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet); - protected abstract PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected abstract PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet); private String field0Path(SimpleMappedIndex index, DataSet dataSet) { diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateScaleCheckingIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateScaleCheckingIT.java index 8f86d3f301c..0453be3919f 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateScaleCheckingIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateScaleCheckingIT.java @@ -89,7 +89,7 @@ void multiIndex_withIncompatibleIndex() { ) ); } - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam); + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam); protected abstract String predicateTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateScoreIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateScoreIT.java index a3fd75d949e..b17e70a355f 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateScoreIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateScoreIT.java @@ -77,18 +77,18 @@ void constantScore_predicateLevelBoost(StubMappedIndex index, AbstractPredicateD .hasDocRefHitsExactOrder( index.typeName(), dataSet.docId( 0 ), dataSet.docId( 1 ) ); } - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index); - protected abstract PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, + protected abstract PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index); - protected abstract PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, + protected abstract PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index); - protected abstract PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected abstract PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSearchableIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSearchableIT.java index afca6623a1f..07c3f7ffcd6 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSearchableIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSearchableIT.java @@ -71,7 +71,7 @@ void searchable_no_use(SimpleMappedIndex searchab SimpleMappedIndex searchableYesIndex, SimpleMappedIndex searchableNoIndex, FieldTypeDescriptor fieldType) { - SearchPredicateFactory f = searchableNoIndex.createScope().predicate(); + SearchPredicateFactory f = searchableNoIndex.createScope().predicate(); String fieldPath = searchableNoIndex.binding().field.get( fieldType ).relativeFieldName; @@ -89,7 +89,7 @@ void multiIndex_incompatibleSearchable(SimpleMappedIndex searchableYesIndex, SimpleMappedIndex searchableNoIndex, FieldTypeDescriptor fieldType) { - SearchPredicateFactory f = searchableYesIndex.createScope( searchableNoIndex ).predicate(); + SearchPredicateFactory f = searchableYesIndex.createScope( searchableNoIndex ).predicate(); String fieldPath = searchableYesIndex.binding().field.get( fieldType ).relativeFieldName; @@ -101,7 +101,7 @@ void multiIndex_incompatibleSearchable(SimpleMappedIndex f, String fieldPath, FieldTypeDescriptor fieldType); protected abstract String predicateTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSimpleAnalysisIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSimpleAnalysisIT.java index d0b72ef6ea7..bd407814731 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSimpleAnalysisIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSimpleAnalysisIT.java @@ -107,7 +107,7 @@ void multiIndex_incompatibleAnalyzer_searchAnalyzer() { } ); } - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String matchingParam); + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String matchingParam); public static final class IndexBinding { final SimpleFieldModel analyzedStringField; diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSingleFieldIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSingleFieldIT.java index 45cd1ccbba9..59c4c7d6bd7 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSingleFieldIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateSingleFieldIT.java @@ -59,10 +59,10 @@ void matchParameter(SimpleMappedIndex index, DataSet dataSet } } - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet); - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet dataSet); protected abstract Map parameterValues(int matchingDocOrdinal, DataSet dataSet, String paramName); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateTypeCheckingAndConversionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateTypeCheckingAndConversionIT.java index f4b08e799aa..140e060431c 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateTypeCheckingAndConversionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateTypeCheckingAndConversionIT.java @@ -67,7 +67,7 @@ void defaultDslConverter_valueModelDefault_invalidType(SimpleMappedIndex missingFieldIndex, SimpleMappedIndex incompatibleIndex, DataSet dataSet) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> predicate( f, defaultDslConverterField0Path( index, dataSet ), invalidTypeParam() ) ) .isInstanceOf( SearchException.class ) .hasMessageContaining( "Unable to convert DSL argument: " ) @@ -102,7 +102,7 @@ void customDslConverter_valueModelDefault_invalidType(SimpleMappedIndex missingFieldIndex, SimpleMappedIndex incompatibleIndex, DataSet dataSet) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> predicate( f, customDslConverterField0Path( index, dataSet ), invalidTypeParam() ) ) .isInstanceOf( SearchException.class ) .hasMessageContaining( "Unable to convert DSL argument: " ) @@ -153,7 +153,7 @@ void defaultDslConverter_valueConvertYes_invalidType(SimpleMappedIndex missingFieldIndex, SimpleMappedIndex incompatibleIndex, DataSet dataSet) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> predicate( f, defaultDslConverterField0Path( index, dataSet ), invalidTypeParam(), ValueModel.MAPPING ) ) .isInstanceOf( SearchException.class ) @@ -209,7 +209,7 @@ void customDslConverter_valueConvertYes_invalidType(SimpleMappedIndex missingFieldIndex, SimpleMappedIndex incompatibleIndex, DataSet dataSet) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> predicate( f, customDslConverterField0Path( index, dataSet ), invalidTypeParam(), org.hibernate.search.engine.search.common.ValueConvert.YES ) ) .isInstanceOf( SearchException.class ) @@ -281,7 +281,7 @@ void defaultDslConverter_valueConvertNo_invalidType(SimpleMappedIndex missingFieldIndex, SimpleMappedIndex incompatibleIndex, DataSet dataSet) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> predicate( f, defaultDslConverterField0Path( index, dataSet ), invalidTypeParam(), org.hibernate.search.engine.search.common.ValueConvert.NO ) ) .isInstanceOf( SearchException.class ) @@ -353,7 +353,7 @@ void customDslConverter_valueConvertNo_invalidType(SimpleMappedIndex missingFieldIndex, SimpleMappedIndex incompatibleIndex, DataSet dataSet) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> predicate( f, customDslConverterField0Path( index, dataSet ), invalidTypeParam(), org.hibernate.search.engine.search.common.ValueConvert.NO ) ) .isInstanceOf( SearchException.class ) @@ -670,7 +670,7 @@ void defaultDslConverter_valueModelString_invalidType(SimpleMappedIndex missingFieldIndex, SimpleMappedIndex incompatibleIndex, DataSet dataSet) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> predicate( f, defaultDslConverterField0Path( index, dataSet ), invalidTypeParam(), ValueModel.STRING ) ) .isInstanceOf( SearchException.class ) @@ -705,7 +705,7 @@ void customDslConverter_valueModelString_invalidType(SimpleMappedIndex missingFieldIndex, SimpleMappedIndex incompatibleIndex, DataSet dataSet) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> predicate( f, customDslConverterField0Path( index, dataSet ), invalidTypeParam(), ValueModel.STRING ) ) .isInstanceOf( SearchException.class ) @@ -763,20 +763,20 @@ void defaultDslConverter_valueModelRaw_invalidType(SimpleMappedIndex f, String fieldPath, P matchingParam); - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, P matchingParam, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, P matchingParam, ValueModel valueModel); - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, P matchingParam, ValueModel valueModel); @Deprecated - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, P matchingParam, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, P matchingParam, org.hibernate.search.engine.search.common.ValueConvert valueConvert); @Deprecated - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, P matchingParam, org.hibernate.search.engine.search.common.ValueConvert valueConvert); protected abstract P invalidTypeParam(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateTypeCheckingNoConversionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateTypeCheckingNoConversionIT.java index 93e2b8f0ef6..3b4458d307a 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateTypeCheckingNoConversionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateTypeCheckingNoConversionIT.java @@ -179,10 +179,10 @@ void multiIndex_withIncompatibleIndex(SimpleMappedIndex index, ) ); } - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet); - protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected abstract PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, int matchingDocOrdinal, DataSet dataSet); protected abstract String predicateTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateUnsupportedTypeIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateUnsupportedTypeIT.java index d3b3f8d95a9..dc3bf88e4b1 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateUnsupportedTypeIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AbstractPredicateUnsupportedTypeIT.java @@ -38,7 +38,7 @@ void trait(SimpleMappedIndex index, FieldTypeDescriptor fiel @ParameterizedTest(name = "{1}") @MethodSource("params") void use(SimpleMappedIndex index, FieldTypeDescriptor fieldType) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); String fieldPath = index.binding().field.get( fieldType ).relativeFieldName; @@ -53,7 +53,7 @@ void use(SimpleMappedIndex index, FieldTypeDescriptor fieldT ) ); } - protected abstract void tryPredicate(SearchPredicateFactory f, String fieldPath); + protected abstract void tryPredicate(SearchPredicateFactory f, String fieldPath); protected abstract String predicateTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AndPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AndPredicateBaseIT.java index 2e1fff20abf..f51d0e0c7ea 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AndPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/AndPredicateBaseIT.java @@ -60,13 +60,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.and( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ); } @Override - protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.and( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) @@ -74,14 +74,14 @@ protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int ma } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.and( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) .constantScore(); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.and( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) @@ -117,14 +117,14 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.and() .add( f.id().matching( AddScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ); } @Override - protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.and( f.id().matching( AddScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) @@ -132,7 +132,7 @@ protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int ma } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.and() .add( f.id().matching( AddScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) @@ -140,7 +140,7 @@ protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f } @Override - protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.and() diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/BoolPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/BoolPredicateBaseIT.java index 2d260e82836..bdc34a64745 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/BoolPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/BoolPredicateBaseIT.java @@ -55,13 +55,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.bool().should( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ); } @Override - protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.bool().should( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) @@ -69,14 +69,14 @@ protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int ma } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.bool().should( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) .constantScore(); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.bool().should( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/BoolPredicateSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/BoolPredicateSpecificsIT.java index 8e400551c37..5cf3f997ff6 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/BoolPredicateSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/BoolPredicateSpecificsIT.java @@ -657,7 +657,7 @@ void minimumShouldMatch_multipleConstraints_0ceiling() { @Test void minimumShouldMatch_error_negativeCeiling() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> f.bool().minimumShouldMatch() .ifMoreThan( -1 ).thenRequireNumber( 1 ) ) @@ -674,7 +674,7 @@ void minimumShouldMatch_error_negativeCeiling() { @Test void minimumShouldMatch_error_multipleConflictingCeilings() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> f.bool().minimumShouldMatch() .ifMoreThan( 2 ).thenRequireNumber( -1 ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateBaseIT.java index 05636a448f6..4fdd9ca3daf 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateBaseIT.java @@ -124,13 +124,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.exists().field( fieldPath ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet> dataSet) { assumeTrue( false, "Exists predicate does not have parameters" ); throw new AssertionFailure( "shouldn't reach this far" ); @@ -168,26 +168,26 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.exists().field( fieldPath( matchingDocOrdinal, dataSet ) ); } @Override - protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.exists().field( fieldPath( matchingDocOrdinal, dataSet ) ).boost( boost ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.exists().field( fieldPath( matchingDocOrdinal, dataSet ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.exists().field( fieldPath( matchingDocOrdinal, dataSet ) ).constantScore().boost( boost ); @@ -267,7 +267,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { if ( matchingDocOrdinal != 0 ) { throw new IllegalStateException( "This predicate can only match the first document" ); @@ -310,7 +310,7 @@ public void use_objectField_nested() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.exists().field( fieldPath ); } @@ -372,7 +372,7 @@ void searchable_no_use(SimpleMappedIndex searchab } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.exists().field( fieldPath ); } @@ -440,13 +440,13 @@ public void multiIndex_withIncompatibleIndex(SimpleMappedIndex ind } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.exists().field( fieldPath ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, int matchingDocOrdinal, DataSet> dataSet) { throw new org.opentest4j.TestAbortedException( "The 'exists' predicate can only target one field at a time" ); } @@ -484,7 +484,7 @@ public void multiIndex_withIncompatibleIndex() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { return f.exists().field( fieldPath ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateObjectsBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateObjectsBaseIT.java index 3d780e9bd52..616b42d32b2 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateObjectsBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateObjectsBaseIT.java @@ -127,7 +127,7 @@ void factoryWithRoot_flattened(SimpleMappedIndex mainIndex, } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, + protected PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, int matchingDocOrdinal, AbstractPredicateDataSet dataSet) { if ( matchingDocOrdinal != 0 ) { throw new IllegalStateException( "This predicate can only match the first document" ); @@ -135,7 +135,8 @@ protected PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBind return f.exists().field( targetField( objectFieldBinding, ( (DataSet) dataSet ) ).absolutePath ); } - protected PredicateFinalStep predicateWithRelativePath(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, + protected PredicateFinalStep predicateWithRelativePath(SearchPredicateFactory f, + ObjectFieldBinding objectFieldBinding, AbstractPredicateDataSet dataSet) { return f.exists().field( targetField( objectFieldBinding, ( (DataSet) dataSet ) ).relativeName ); } @@ -192,26 +193,26 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.exists().field( fieldPath( matchingDocOrdinal, dataSet ) ); } @Override - protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.exists().field( fieldPath( matchingDocOrdinal, dataSet ) ).boost( boost ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.exists().field( fieldPath( matchingDocOrdinal, dataSet ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.exists().field( fieldPath( matchingDocOrdinal, dataSet ) ).constantScore().boost( boost ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateObjectsSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateObjectsSpecificsIT.java index 33de0bf9924..2771f98e85c 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateObjectsSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/ExistsPredicateObjectsSpecificsIT.java @@ -122,7 +122,7 @@ void nested_multiIndexes_compatibleIndexBinding() { @Test void nested_multiIndexes_incompatibleIndexBinding() { - SearchPredicateFactory f = mainIndex.createScope( incompatibleIndex ).predicate(); + SearchPredicateFactory f = mainIndex.createScope( incompatibleIndex ).predicate(); String fieldPath = "nested"; assertThatThrownBy( () -> f.exists().field( fieldPath ) ) @@ -148,7 +148,7 @@ void nested_multiIndexes_emptyIndexBinding() { @Test void nested_multiIndexes_wrongStructure() { - SearchPredicateFactory f = mainIndex.createScope( invertedIndex ).predicate(); + SearchPredicateFactory f = mainIndex.createScope( invertedIndex ).predicate(); String fieldPath = "nested"; @@ -218,7 +218,7 @@ void flattened_multiIndexes_compatibleIndexBinding() { @Test void flattened_multiIndexes_incompatibleIndexBinding() { - SearchPredicateFactory f = incompatibleIndex.createScope( mainIndex ).predicate(); + SearchPredicateFactory f = incompatibleIndex.createScope( mainIndex ).predicate(); String fieldPath = "flattened"; assertThatThrownBy( () -> f.exists().field( fieldPath ) ) @@ -244,7 +244,7 @@ void flattened_multiIndexes_emptyIndexBinding() { @Test void flattened_multiIndexes_wrongStructure() { - SearchPredicateFactory f = invertedIndex.createScope( mainIndex ).predicate(); + SearchPredicateFactory f = invertedIndex.createScope( mainIndex ).predicate(); String fieldPath = "flattened"; diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/KnnPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/KnnPredicateBaseIT.java index 8a647e5ce1a..9347587bfc8 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/KnnPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/KnnPredicateBaseIT.java @@ -101,14 +101,14 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return knnPredicateOptionsStep( f, fieldPath, matchingDocOrdinal, dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet> dataSet) { return f.withParameters( params -> { Object param = params.get( paramName, dataSet.fieldType.getJavaType() ); @@ -158,7 +158,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return knnPredicateOptionsStep( f, fieldPath, matchingDocOrdinal, dataSet.values.matchingArg( matchingDocOrdinal ) ); @@ -179,7 +179,7 @@ public InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.knn( 1 ).field( fieldPath ).matching( new byte[] { 1 } ); } @@ -211,7 +211,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.knn( 1 ).field( fieldPath ).matching( new byte[] { 1 } ); } @@ -250,7 +250,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { if ( byte[].class.equals( fieldType.getJavaType() ) ) { f.knn( 1 ).field( fieldPath ).matching( new byte[( (VectorFieldTypeDescriptor) fieldType ).vectorSize()] ); @@ -299,46 +299,46 @@ void constantScore_fieldLevelBoost(SimpleMappedIndex index, } @Override - protected KnnPredicateOptionsStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected KnnPredicateOptionsStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return knnPredicateOptionsStep( f, fieldPath, matchingDocOrdinal, dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f, fieldPaths[0], matchingDocOrdinal, dataSet ).constantScore(); } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return predicate( f, fieldPaths[0], matchingDocOrdinal, dataSet ).boost( predicateBoost ); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return predicate( f, fieldPaths[0], matchingDocOrdinal, dataSet ).constantScore().boost( predicateBoost ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f, fieldPath, matchingDocOrdinal, dataSet ).constantScore().boost( fieldBoost ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet> dataSet) { return predicate( f, fieldPath, matchingDocOrdinal, dataSet ).constantScore().constantScore(); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return predicate( f, fieldPath, matchingDocOrdinal, dataSet ).constantScore().boost( fieldBoost ); @@ -349,7 +349,7 @@ private static KnnPredicateTestValues testValues(FieldTypeDescriptor( fieldType ); } - private static KnnPredicateOptionsStep knnPredicateOptionsStep(SearchPredicateFactory f, String fieldPath, + private static KnnPredicateOptionsStep knnPredicateOptionsStep(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, F matchingArg) { if ( matchingArg instanceof byte[] ) { return f.knn( 1 ).field( fieldPath ).matching( ( (byte[]) matchingArg ) ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/KnnPredicateSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/KnnPredicateSpecificsIT.java index 162bf4ceea1..b3f4e291853 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/KnnPredicateSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/KnnPredicateSpecificsIT.java @@ -208,7 +208,7 @@ public static List params() { @ParameterizedTest(name = "{1}") @MethodSource("params") void wrongVectorValuesType(SimpleMappedIndex index, VectorFieldTypeDescriptor fieldType) { - SearchPredicateFactory f = index.createScope( index ).predicate(); + SearchPredicateFactory f = index.createScope( index ).predicate(); String fieldPath = index.binding().field.get( fieldType ).relativeFieldName; @@ -237,7 +237,7 @@ void wrongVectorLength(SimpleMappedIndex index, VectorFieldTypeDes ); } - protected void tryPredicateWrongType(SearchPredicateFactory f, String fieldPath, + protected void tryPredicateWrongType(SearchPredicateFactory f, String fieldPath, VectorFieldTypeDescriptor fieldType) { if ( fieldType.getJavaType() == byte[].class ) { f.knn( 1 ).field( fieldPath ).matching( 1.0f, 1.0f ); @@ -247,7 +247,7 @@ protected void tryPredicateWrongType(SearchPredicateFactory f, String fieldPath, } } - protected KnnPredicateOptionsStep tryPredicateWrongLength(SearchPredicateFactory f, String fieldPath, + protected KnnPredicateOptionsStep tryPredicateWrongLength(SearchPredicateFactory f, String fieldPath, VectorFieldTypeDescriptor fieldType) { if ( fieldType.getJavaType() == byte[].class ) { return f.knn( 1 ).field( fieldPath ).matching( new byte[fieldType.vectorSize() * 2] ); @@ -327,7 +327,7 @@ void dimension(VectorFieldTypeDescriptor fieldType, SimpleMappedIndex indexDifferentEfConstruction, SimpleMappedIndex indexDifferentM, SimpleMappedIndex indexDifferentSimilarity) { - SearchPredicateFactory f = index.createScope( indexDifferentDimension ).predicate(); + SearchPredicateFactory f = index.createScope( indexDifferentDimension ).predicate(); String fieldPath = index.binding().field.get( fieldType ).relativeFieldName; @@ -350,7 +350,7 @@ void similarity(VectorFieldTypeDescriptor fieldType, SimpleMappedIndex indexDifferentEfConstruction, SimpleMappedIndex indexDifferentM, SimpleMappedIndex indexDifferentSimilarity) { - SearchPredicateFactory f = index.createScope( indexDifferentSimilarity ).predicate(); + SearchPredicateFactory f = index.createScope( indexDifferentSimilarity ).predicate(); String fieldPath = index.binding().field.get( fieldType ).relativeFieldName; @@ -374,7 +374,7 @@ void efConstruction(VectorFieldTypeDescriptor fieldType, SimpleMappedIndex indexDifferentM, SimpleMappedIndex indexDifferentSimilarity) { StubMappingScope scope = index.createScope( indexDifferentEfConstruction ); - SearchPredicateFactory f = scope.predicate(); + SearchPredicateFactory f = scope.predicate(); String fieldPath = index.binding().field.get( fieldType ).relativeFieldName; @@ -398,7 +398,7 @@ void m(VectorFieldTypeDescriptor fieldType, SimpleMappedIndex indexDifferentM, SimpleMappedIndex indexDifferentSimilarity) { StubMappingScope scope = index.createScope( indexDifferentM ); - SearchPredicateFactory f = scope.predicate(); + SearchPredicateFactory f = scope.predicate(); String fieldPath = index.binding().field.get( fieldType ).relativeFieldName; @@ -413,7 +413,7 @@ void m(VectorFieldTypeDescriptor fieldType, ); } - protected KnnPredicateOptionsStep predicate(SearchPredicateFactory f, String fieldPath, + protected KnnPredicateOptionsStep predicate(SearchPredicateFactory f, String fieldPath, VectorFieldTypeDescriptor fieldType) { if ( fieldType.getJavaType() == byte[].class ) { return f.knn( 1 ).field( fieldPath ).matching( (byte) 1, (byte) 1 ); @@ -526,7 +526,7 @@ public static List params() { void similarity(VectorFieldTypeDescriptor fieldType, SimpleMappedIndex index) { StubMappingScope scope = index.createScope(); - SearchPredicateFactory f = scope.predicate(); + SearchPredicateFactory f = scope.predicate(); String fieldPath = index.binding().field.get( fieldType ).relativeFieldName; @@ -536,7 +536,7 @@ void similarity(VectorFieldTypeDescriptor fieldType, .hasSize( 2 ); } - protected KnnPredicateOptionsStep predicate(SearchPredicateFactory f, String fieldPath, + protected KnnPredicateOptionsStep predicate(SearchPredicateFactory f, String fieldPath, VectorFieldTypeDescriptor fieldType) { if ( fieldType.getJavaType() == byte[].class ) { return f.knn( 2 ).field( fieldPath ).matching( (byte) 1, (byte) 0, (byte) 0, (byte) 0 ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchAllPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchAllPredicateBaseIT.java index fb1a1c57d91..f3015962f69 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchAllPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchAllPredicateBaseIT.java @@ -71,7 +71,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, + protected PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, int matchingDocOrdinal, AbstractPredicateDataSet dataSet) { return f.matchAll() .except( f.id().matchingAny( InObjectFieldConfigured.dataSet.docIdsExcept( matchingDocOrdinal ) ) ); @@ -116,13 +116,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.matchAll().except( f.id().matchingAny( ScoreConfigured.dataSet.docIdsExcept( matchingDocOrdinal ) ) ); } @Override - protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.matchAll().except( f.id().matchingAny( ScoreConfigured.dataSet.docIdsExcept( matchingDocOrdinal ) ) ) @@ -130,14 +130,14 @@ protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int ma } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.matchAll().except( f.id().matchingAny( ScoreConfigured.dataSet.docIdsExcept( matchingDocOrdinal ) ) ) .constantScore(); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.matchAll().except( f.id().matchingAny( ScoreConfigured.dataSet.docIdsExcept( matchingDocOrdinal ) ) ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchAllPredicateSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchAllPredicateSpecificsIT.java index a9ecbfb2168..6ec8300f736 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchAllPredicateSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchAllPredicateSpecificsIT.java @@ -53,7 +53,7 @@ void except() { .where( f -> f.matchAll().except( c2 -> c2.match().field( "string" ).matching( STRING_1 ) ) ) ) .hasDocRefHitsAnyOrder( index.typeName(), DOCUMENT_2, DOCUMENT_3 ); - SearchPredicateFactory f1 = index.createScope().predicate(); + SearchPredicateFactory f1 = index.createScope().predicate(); SearchPredicate searchPredicate = f1.match().field( "string" ).matching( STRING_2 ).toPredicate(); assertThatQuery( index.query() @@ -69,7 +69,7 @@ void multipleExcepts() { .except( f.match().field( "string" ).matching( STRING_2 ) ) ) ) .hasDocRefHitsAnyOrder( index.typeName(), DOCUMENT_3 ); - SearchPredicateFactory f1 = index.createScope().predicate(); + SearchPredicateFactory f1 = index.createScope().predicate(); SearchPredicate searchPredicate1 = f1.match().field( "string" ).matching( STRING_3 ).toPredicate(); SearchPredicate searchPredicate2 = f1.match().field( "string" ).matching( STRING_2 ).toPredicate(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchIdPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchIdPredicateBaseIT.java index b4f07a08fdf..b78d6385576 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchIdPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchIdPredicateBaseIT.java @@ -69,7 +69,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, + protected PredicateFinalStep predicate(SearchPredicateFactory f, ObjectFieldBinding objectFieldBinding, int matchingDocOrdinal, AbstractPredicateDataSet dataSet) { return f.id().matching( InObjectFieldConfigured.dataSet.docId( matchingDocOrdinal ) ); } @@ -105,26 +105,26 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ).boost( boost ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ).constantScore().boost( boost ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchIdPredicateSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchIdPredicateSpecificsIT.java index c0f6c63715d..a28c5c4fb41 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchIdPredicateSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchIdPredicateSpecificsIT.java @@ -136,7 +136,7 @@ void multiIndex_withCompatibleIdConverterIndexManager_dslConverterEnabled() { @Test void multiIndex_withIncompatibleIdConverterIndex_dslConverterEnabled() { - SearchPredicateFactory f = mainIndex.createScope( incompatibleIdConverterIndex ).predicate(); + SearchPredicateFactory f = mainIndex.createScope( incompatibleIdConverterIndex ).predicate(); assertThatThrownBy( () -> f.id().matching( new Object() /* Value does not matter */ ) ) .isInstanceOf( SearchException.class ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchPredicateBaseIT.java index 711688a44ea..6221173b234 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchPredicateBaseIT.java @@ -158,13 +158,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.match().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet> dataSet) { return f.withParameters( params -> f.match().field( fieldPath ) .matching( params.get( paramName, dataSet.fieldType.getJavaType() ), ValueModel.MAPPING ) ); @@ -202,20 +202,20 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.match().field( fieldPath ).field( otherFieldPath ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return f.match().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return f.match().field( fieldPath ).fields( fieldPaths ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); @@ -252,7 +252,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.match().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @@ -278,18 +278,18 @@ public AnalysisConfigured() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String matchingParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String matchingParam) { return f.match().field( fieldPath ).matching( matchingParam ); } @Override - protected PredicateFinalStep predicateWithAnalyzerOverride(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithAnalyzerOverride(SearchPredicateFactory f, String fieldPath, String matchingParam, String analyzerName) { return f.match().field( fieldPath ).matching( matchingParam ).analyzer( analyzerName ); } @Override - protected PredicateFinalStep predicateWithSkipAnalysis(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithSkipAnalysis(SearchPredicateFactory f, String fieldPath, String matchingParam) { return f.match().field( fieldPath ).matching( matchingParam ).skipAnalysis(); } @@ -320,14 +320,14 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.match().field( fieldPath ) .matching( ( (DataSet>) dataSet ).values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return f.match().fields( fieldPaths ) .matching( ( (DataSet>) dataSet ).values.matchingArg( matchingDocOrdinal ) ) @@ -335,7 +335,7 @@ protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return f.match().fields( fieldPaths ) .matching( ( (DataSet>) dataSet ).values.matchingArg( matchingDocOrdinal ) ) @@ -343,7 +343,7 @@ protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFac } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return f.match().fields( fieldPaths ) @@ -352,14 +352,14 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet> dataSet) { return f.match().field( fieldPath ).boost( fieldBoost ) .matching( ( (DataSet>) dataSet ).values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet> dataSet) { return f.match().field( fieldPath ).boost( fieldBoost ) .matching( ( (DataSet>) dataSet ).values.matchingArg( matchingDocOrdinal ) ) @@ -367,7 +367,7 @@ protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(Search } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return f.match().field( fieldPath ).boost( fieldBoost ) @@ -390,7 +390,7 @@ public InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.match().field( fieldPath ); } @@ -422,7 +422,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.match().field( fieldPath ); } @@ -461,7 +461,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.match().field( fieldPath ); } @@ -493,7 +493,7 @@ public static List params() { } @Override - protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { f.match().field( fieldPath ).matching( null ); } } @@ -547,32 +547,32 @@ public static List integerIndexParams() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { return f.match().field( fieldPath ).matching( matchingParam ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam, ValueModel valueModel) { return f.match().field( fieldPath ).matching( matchingParam, valueModel ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, Object matchingParam, ValueModel valueModel) { return f.match().field( field0Path ).field( field1Path ).matching( matchingParam, valueModel ); } @Deprecated @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam, org.hibernate.search.engine.search.common.ValueConvert valueConvert) { return f.match().field( fieldPath ).matching( matchingParam, valueConvert ); } @Deprecated @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, Object matchingParam, org.hibernate.search.engine.search.common.ValueConvert valueConvert) { return f.match().field( field0Path ).field( field1Path ).matching( matchingParam, valueConvert ); } @@ -638,7 +638,7 @@ public ScaleCheckingConfigured() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { return f.match().field( fieldPath ).matching( matchingParam ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchPredicateSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchPredicateSpecificsIT.java index 2e1d827fad9..700e5f4a0fa 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchPredicateSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/MatchPredicateSpecificsIT.java @@ -219,7 +219,7 @@ void multipleFields() { @Test void unsupportedFieldType() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); for ( FieldTypeDescriptor fieldType : unsupportedFieldTypes ) { SimpleFieldModel fieldModel = index.binding().unsupportedTypeFields.get( fieldType ); @@ -257,7 +257,7 @@ void unsupportedFieldType() { @Test void invalidMaxEditDistance() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); String absoluteFieldPath = index.binding().analyzedStringField.relativeFieldName; assertThatThrownBy( () -> f.match().field( absoluteFieldPath ) @@ -275,7 +275,7 @@ void invalidMaxEditDistance() { @Test void invalidPrefixLength() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); String absoluteFieldPath = index.binding().analyzedStringField.relativeFieldName; assertThatThrownBy( () -> f.match().field( absoluteFieldPath ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NamedPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NamedPredicateBaseIT.java index 42361d9d883..65aa01b32dd 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NamedPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NamedPredicateBaseIT.java @@ -122,7 +122,7 @@ void flattened() { @Test void nullPath() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> f.named( null ) ) .isInstanceOf( IllegalArgumentException.class ) .hasMessageContainingAll( "must not be null" ); @@ -130,7 +130,7 @@ void nullPath() { @Test void unknownField() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> f.named( "unknown_field.my-predicate" ) ) .isInstanceOf( SearchException.class ) .hasMessageContainingAll( "Unknown field", "'unknown_field'" ); @@ -138,7 +138,7 @@ void unknownField() { @Test void unknownPredicate_root() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> f.named( "unknown-predicate" ) ) .isInstanceOf( SearchException.class ) .hasMessageContainingAll( "Cannot use 'predicate:named:unknown-predicate' on index schema root" ); @@ -146,7 +146,7 @@ void unknownPredicate_root() { @Test void unknownPredicate_objectField() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> f.named( "nested.unknown-predicate" ) ) .isInstanceOf( SearchException.class ) .hasMessageContainingAll( "Cannot use 'predicate:named:unknown-predicate' on field 'nested'" ); @@ -154,7 +154,7 @@ void unknownPredicate_objectField() { @Test void unknownPredicate_valueField() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> f.named( "field1.unknown-predicate" ) ) .isInstanceOf( SearchException.class ) .hasMessageContainingAll( "Cannot use 'predicate:named:unknown-predicate' on field 'field1'" ); @@ -245,10 +245,10 @@ public TestPredicateDefinition(String field1Name, String field2Name) { } @Override - public SearchPredicate create(PredicateDefinitionContext context) { + public SearchPredicate create(PredicateDefinitionContext context) { String word1 = context.params().get( "value1", String.class ); String word2 = context.params().get( "value2", String.class ); - SearchPredicateFactory f = context.predicate(); + SearchPredicateFactory f = context.predicate(); return f.and( f.match().field( field1Name ).matching( word1 ), f.match().field( field2Name ).matching( word2 ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NamedPredicateMultiIndexCompatibilityIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NamedPredicateMultiIndexCompatibilityIT.java index 3c3729ad8b7..0ecffcea3ca 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NamedPredicateMultiIndexCompatibilityIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NamedPredicateMultiIndexCompatibilityIT.java @@ -191,7 +191,7 @@ public int hashCode() { } @Override - public SearchPredicate create(PredicateDefinitionContext context) { + public SearchPredicate create(PredicateDefinitionContext context) { return context.predicate().match().field( fieldName ) .matching( context.params().get( "value", Object.class ) ) .toPredicate(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NestedPredicateLegacyIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NestedPredicateLegacyIT.java index e589d485386..f248be98cfa 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NestedPredicateLegacyIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NestedPredicateLegacyIT.java @@ -243,7 +243,7 @@ void invalidNestedPath_sibling() { @TestForIssue(jiraKey = "HSEARCH-4173") void multiIndex_missingNestedField() { StubMappingScope scope = mainIndex.createScope( missingFieldIndex ); - SearchPredicateFactory f = scope.predicate(); + SearchPredicateFactory f = scope.predicate(); SearchPredicate nestedPredicate = f.nested().objectField( "nestedObject" ) .nest( f.and( // This is referred to as "condition 1" in the data initialization method diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NestedPredicateSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NestedPredicateSpecificsIT.java index 7cd026116ba..a8b60498a6f 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NestedPredicateSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NestedPredicateSpecificsIT.java @@ -269,7 +269,7 @@ void invalidNestedPath_sibling() { @TestForIssue(jiraKey = "HSEARCH-4173") void multiIndex_missingNestedField() { StubMappingScope scope = mainIndex.createScope( missingFieldIndex ); - SearchPredicateFactory f = scope.predicate(); + SearchPredicateFactory f = scope.predicate(); SearchPredicate nestedPredicate = f.nested( "nestedObject" ) // This is referred to as "condition 1" in the data initialization method .add( f.nested( "nestedObject.nestedObject" ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NotPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NotPredicateBaseIT.java index 824e4eb55c7..ce40306584e 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NotPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NotPredicateBaseIT.java @@ -57,27 +57,27 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.not( f.id().matchingAny( ( (DataSet) dataSet ).docsExcept( matchingDocOrdinal ) ) ); } @Override - protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, + protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.not( f.id().matchingAny( ( (DataSet) dataSet ).docsExcept( matchingDocOrdinal ) ) ) .boost( boost ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.not( f.id().matchingAny( ( (DataSet) dataSet ).docsExcept( matchingDocOrdinal ) ) ) .constantScore(); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.not( f.id().matchingAny( ( (DataSet) dataSet ).docsExcept( matchingDocOrdinal ) ) ) .constantScore() diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NotPredicateSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NotPredicateSpecificsIT.java index 3cf0ce0d050..35cc0bc6862 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NotPredicateSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/NotPredicateSpecificsIT.java @@ -92,7 +92,7 @@ void mustWithNotInside() { @Test void manyNestedNot() { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatQuery( index.query() .where( f.bool() diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/OrPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/OrPredicateBaseIT.java index 1c5cc625967..76956aed083 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/OrPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/OrPredicateBaseIT.java @@ -60,13 +60,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.or( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ); } @Override - protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.or( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) @@ -74,14 +74,14 @@ protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int ma } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.or( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) .constantScore(); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.or( f.id().matching( ScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) @@ -117,14 +117,14 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.or() .add( f.id().matching( AddScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ); } @Override - protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.or() @@ -133,7 +133,7 @@ protected PredicateFinalStep predicateWithBoost(SearchPredicateFactory f, int ma } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, int matchingDocOrdinal, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.or() .add( f.id().matching( AddScoreConfigured.dataSet.docId( matchingDocOrdinal ) ) ) @@ -141,7 +141,7 @@ protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f } @Override - protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndBoost(SearchPredicateFactory f, int matchingDocOrdinal, float boost, AbstractPredicateDataSet dataSet, StubMappedIndex index) { return f.or() diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PhrasePredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PhrasePredicateBaseIT.java index bdc1df5103a..ef4f5e3ecb5 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PhrasePredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PhrasePredicateBaseIT.java @@ -143,13 +143,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet dataSet) { return f.withParameters( params -> f.phrase().field( fieldPath ) .matching( params.get( paramName, String.class ) ) ); @@ -187,20 +187,20 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().field( fieldPath ).field( otherFieldPath ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().field( fieldPath ).fields( fieldPaths ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); @@ -236,7 +236,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @@ -274,18 +274,18 @@ public void analyzerOverride_normalizedStringField() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String matchingParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String matchingParam) { return f.phrase().field( fieldPath ).matching( matchingParam ); } @Override - protected PredicateFinalStep predicateWithAnalyzerOverride(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithAnalyzerOverride(SearchPredicateFactory f, String fieldPath, String matchingParam, String analyzerName) { return f.phrase().field( fieldPath ).matching( matchingParam ).analyzer( analyzerName ); } @Override - protected PredicateFinalStep predicateWithSkipAnalysis(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithSkipAnalysis(SearchPredicateFactory f, String fieldPath, String matchingParam) { return f.phrase().field( fieldPath ).matching( matchingParam ).skipAnalysis(); } @@ -316,27 +316,27 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) .constantScore(); } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.phrase().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) .boost( predicateBoost ); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.phrase().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) @@ -344,21 +344,21 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().field( fieldPath ).boost( fieldBoost ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().field( fieldPath ).boost( fieldBoost ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.phrase().field( fieldPath ).boost( fieldBoost ) @@ -380,7 +380,7 @@ public InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.phrase().field( fieldPath ); } @@ -412,7 +412,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.phrase().field( fieldPath ); } @@ -451,7 +451,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.phrase().field( fieldPath ); } @@ -485,7 +485,7 @@ public static List params() { @ParameterizedTest(name = "{1}") @MethodSource("params") void invalidSlop(SimpleMappedIndex index, FieldTypeDescriptor fieldType) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> f.phrase().field( fieldPath( index, fieldType ) ) .matching( "foo" ).slop( -1 ) ) @@ -501,7 +501,7 @@ void invalidSlop(SimpleMappedIndex index, FieldTypeDescriptor f, String fieldPath) { f.phrase().field( fieldPath ).matching( null ); } } @@ -545,13 +545,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, int matchingDocOrdinal, DataSet dataSet) { return f.phrase().field( field0Path ).field( field1Path ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PredicateDefinitionContextIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PredicateDefinitionContextIT.java index e8ced70ea03..7628a381b8a 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PredicateDefinitionContextIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PredicateDefinitionContextIT.java @@ -145,7 +145,7 @@ static ObjectFieldBinding create(IndexSchemaElement parent, String relativeField public static class StubPredicateDefinition implements PredicateDefinition { @Override - public SearchPredicate create(PredicateDefinitionContext context) { + public SearchPredicate create(PredicateDefinitionContext context) { PredicateDefinition impl = context.params().get( "impl", PredicateDefinition.class ); return impl.create( context ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PrefixPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PrefixPredicateBaseIT.java index ade70fea41b..acca3504876 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PrefixPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/PrefixPredicateBaseIT.java @@ -129,13 +129,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet dataSet) { return f.withParameters( params -> f.prefix().field( fieldPath ) .matching( params.get( paramName, String.class ) ) ); @@ -173,20 +173,20 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().field( fieldPath ).field( otherFieldPath ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().field( fieldPath ).fields( fieldPaths ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); @@ -222,7 +222,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @@ -253,27 +253,27 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) .constantScore(); } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.prefix().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) .boost( predicateBoost ); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.prefix().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) @@ -281,21 +281,21 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().field( fieldPath ).boost( fieldBoost ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().field( fieldPath ).boost( fieldBoost ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.prefix().field( fieldPath ).boost( fieldBoost ) @@ -317,7 +317,7 @@ protected InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.prefix().field( fieldPath ); } @@ -349,7 +349,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.prefix().field( fieldPath ); } @@ -388,7 +388,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.prefix().field( fieldPath ); } @@ -420,7 +420,7 @@ public static List params() { } @Override - protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { f.prefix().field( fieldPath ).matching( null ); } } @@ -464,13 +464,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, int matchingDocOrdinal, DataSet dataSet) { return f.prefix().field( field0Path ).field( field1Path ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/QueryStringPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/QueryStringPredicateBaseIT.java index 519521b1ec0..411d9bb69e5 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/QueryStringPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/QueryStringPredicateBaseIT.java @@ -9,11 +9,11 @@ //CHECKSTYLE:OFF HideUtilityClassConstructor ignore the rule since it is a class with nested test classes. // cannot make a private constructor. -class QueryStringPredicateBaseIT extends AbstractBaseQueryStringPredicateBaseIT> { +class QueryStringPredicateBaseIT extends AbstractBaseQueryStringPredicateBaseIT> { //CHECKSTYLE:ON @Override - QueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + QueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return f.queryString(); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/QueryStringPredicateSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/QueryStringPredicateSpecificsIT.java index 5adc4b567c1..86b3c6a6c00 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/QueryStringPredicateSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/QueryStringPredicateSpecificsIT.java @@ -32,7 +32,8 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -class QueryStringPredicateSpecificsIT extends AbstractBaseQueryStringPredicateSpecificsIT> { +class QueryStringPredicateSpecificsIT + extends AbstractBaseQueryStringPredicateSpecificsIT> { @ParameterizedTest @MethodSource("rewriteMethodOptions") @@ -472,7 +473,7 @@ public static List queryStringSyntax() { } @Override - QueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + QueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return f.queryString(); } } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/RangePredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/RangePredicateBaseIT.java index 96ac5cb40da..95328a038e2 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/RangePredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/RangePredicateBaseIT.java @@ -160,13 +160,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.range().field( fieldPath ).within( dataSet.values.matchingRange( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet> dataSet) { return f.withParameters( params -> f.range().field( fieldPath ) .within( params.get( paramName, Range.class ) ) ); @@ -204,20 +204,20 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.range().field( fieldPath ).field( otherFieldPath ) .within( dataSet.values.matchingRange( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return f.range().fields( fieldPaths ).within( dataSet.values.matchingRange( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return f.range().field( fieldPath ).fields( fieldPaths ) .within( dataSet.values.matchingRange( matchingDocOrdinal ) ); @@ -254,7 +254,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.range().field( fieldPath ).within( dataSet.values.matchingRange( matchingDocOrdinal ) ); } @@ -280,7 +280,7 @@ public AnalysisConfigured() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String matchingParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String matchingParam) { return f.range().field( fieldPath ).within( Range.between( matchingParam, matchingParam ) ); } } @@ -310,26 +310,26 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.range().field( fieldPath ).within( dataSet.values.matchingRange( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return f.range().fields( fieldPaths ).within( dataSet.values.matchingRange( matchingDocOrdinal ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return f.range().fields( fieldPaths ).within( dataSet.values.matchingRange( matchingDocOrdinal ) ) .boost( predicateBoost ); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return f.range().fields( fieldPaths ).within( dataSet.values.matchingRange( matchingDocOrdinal ) ) @@ -337,21 +337,21 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet> dataSet) { return f.range().field( fieldPath ).boost( fieldBoost ) .within( dataSet.values.matchingRange( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet> dataSet) { return f.range().field( fieldPath ).boost( fieldBoost ) .within( dataSet.values.matchingRange( matchingDocOrdinal ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return f.range().field( fieldPath ).boost( fieldBoost ) @@ -373,7 +373,7 @@ public InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.range().field( fieldPath ); } @@ -405,7 +405,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.range().field( fieldPath ); } @@ -444,7 +444,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.range().field( fieldPath ); } @@ -478,7 +478,7 @@ public static List params() { @ParameterizedTest(name = "{1}") @MethodSource("params") void nullBounds(SimpleMappedIndex index, FieldTypeDescriptor fieldType) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> f.range().field( fieldPath( index, fieldType ) ) .within( Range.between( null, null ) ) ) @@ -491,7 +491,7 @@ void nullBounds(SimpleMappedIndex index, FieldTypeDescriptor } @Override - protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { f.range().field( fieldPath ).within( null ); } } @@ -544,32 +544,32 @@ public static List integerIndexParams() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Range rangeParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Range rangeParam) { return f.range().field( fieldPath ).within( rangeParam ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Range rangeParam, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Range rangeParam, ValueModel valueModel) { return f.range().field( fieldPath ).within( rangeParam, valueModel ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, Range rangeParam, ValueModel valueModel) { return f.range().field( field0Path ).field( field1Path ).within( rangeParam, valueModel ); } @Deprecated @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Range matchingParam, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Range matchingParam, org.hibernate.search.engine.search.common.ValueConvert valueConvert) { return f.range().field( fieldPath ).within( matchingParam, valueConvert ); } @Deprecated @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, Range matchingParam, org.hibernate.search.engine.search.common.ValueConvert valueConvert) { return f.range().field( field0Path ).field( field1Path ).within( matchingParam, valueConvert ); } @@ -654,7 +654,7 @@ public ScaleCheckingConfigured() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { return f.range().field( fieldPath ).within( Range.between( matchingParam, matchingParam ) ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/RegexpPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/RegexpPredicateBaseIT.java index 4e798813779..f2cd0a74c9f 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/RegexpPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/RegexpPredicateBaseIT.java @@ -129,13 +129,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet dataSet) { return f.withParameters( params -> f.regexp().field( fieldPath ) .matching( params.get( paramName, String.class ) ) ); @@ -173,20 +173,20 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().field( fieldPath ).field( otherFieldPath ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().field( fieldPath ).fields( fieldPaths ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); @@ -222,7 +222,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @@ -253,27 +253,27 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) .constantScore(); } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.regexp().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) .boost( predicateBoost ); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.regexp().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) @@ -281,21 +281,21 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().field( fieldPath ).boost( fieldBoost ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().field( fieldPath ).boost( fieldBoost ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.regexp().field( fieldPath ).boost( fieldBoost ) @@ -317,7 +317,7 @@ public InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.regexp().field( fieldPath ); } @@ -349,7 +349,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.regexp().field( fieldPath ); } @@ -389,7 +389,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.regexp().field( fieldPath ); } @@ -421,7 +421,7 @@ public static List params() { } @Override - protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { f.regexp().field( fieldPath ).matching( null ); } } @@ -465,13 +465,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, int matchingDocOrdinal, DataSet dataSet) { return f.regexp().field( field0Path ).field( field1Path ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SearchPredicateIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SearchPredicateIT.java index f83c4987a1d..b0d2b34c649 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SearchPredicateIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SearchPredicateIT.java @@ -321,7 +321,7 @@ void extension() { // Mandatory extension, supported query = scope.query() - .where( f -> f.extension( new SupportedExtension() ) + .where( f -> f.extension( new SupportedExtension<>() ) .extendedPredicate( "string", STRING_1 ) ) .toQuery(); @@ -330,7 +330,7 @@ void extension() { // Mandatory extension, unsupported assertThatThrownBy( - () -> scope.predicate().extension( new UnSupportedExtension() ) + () -> scope.predicate().extension( new UnSupportedExtension<>() ) ) .isInstanceOf( SearchException.class ); @@ -338,11 +338,11 @@ void extension() { query = scope.query() .where( f -> f.extension() .ifSupported( - new SupportedExtension(), + new SupportedExtension<>(), extended -> extended.extendedPredicate( "string", STRING_1 ) ) .ifSupported( - new SupportedExtension(), + new SupportedExtension<>(), shouldNotBeCalled() ) .orElseFail() @@ -355,11 +355,11 @@ void extension() { query = scope.query() .where( f -> f.extension() .ifSupported( - new UnSupportedExtension(), + new UnSupportedExtension<>(), shouldNotBeCalled() ) .ifSupported( - new SupportedExtension(), + new SupportedExtension<>(), extended -> extended.extendedPredicate( "string", STRING_1 ) ) .orElse( @@ -374,11 +374,11 @@ void extension() { query = scope.query() .where( f -> f.extension() .ifSupported( - new UnSupportedExtension(), + new UnSupportedExtension<>(), shouldNotBeCalled() ) .ifSupported( - new UnSupportedExtension(), + new UnSupportedExtension<>(), shouldNotBeCalled() ) .orElse( @@ -458,26 +458,26 @@ private static class ObjectFieldBinding { } } - private static class SupportedExtension implements SearchPredicateFactoryExtension { + private static class SupportedExtension implements SearchPredicateFactoryExtension> { @Override - public Optional extendOptional(SearchPredicateFactory original) { + public Optional> extendOptional(SearchPredicateFactory original) { assertThat( original ).isNotNull(); - return Optional.of( new MyExtendedFactory( original ) ); + return Optional.of( new MyExtendedFactory( original ) ); } } - private static class UnSupportedExtension implements SearchPredicateFactoryExtension { + private static class UnSupportedExtension implements SearchPredicateFactoryExtension> { @Override - public Optional extendOptional(SearchPredicateFactory original) { + public Optional> extendOptional(SearchPredicateFactory original) { assertThat( original ).isNotNull(); return Optional.empty(); } } - private static class MyExtendedFactory { - private final SearchPredicateFactory delegate; + private static class MyExtendedFactory { + private final SearchPredicateFactory delegate; - MyExtendedFactory(SearchPredicateFactory delegate) { + MyExtendedFactory(SearchPredicateFactory delegate) { this.delegate = delegate; } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SimpleQueryStringPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SimpleQueryStringPredicateBaseIT.java index 3a1ae5a61e7..5d53822afe7 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SimpleQueryStringPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SimpleQueryStringPredicateBaseIT.java @@ -9,10 +9,11 @@ //CHECKSTYLE:OFF HideUtilityClassConstructor ignore the rule since it is a class with nested test classes. // cannot make a private constructor. -class SimpleQueryStringPredicateBaseIT extends AbstractBaseQueryStringPredicateBaseIT> { +class SimpleQueryStringPredicateBaseIT + extends AbstractBaseQueryStringPredicateBaseIT> { //CHECKSTYLE:ON @Override - SimpleQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + SimpleQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return f.simpleQueryString(); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SimpleQueryStringPredicateSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SimpleQueryStringPredicateSpecificsIT.java index 15de4ea02f9..49e5e1a1cb2 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SimpleQueryStringPredicateSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SimpleQueryStringPredicateSpecificsIT.java @@ -35,7 +35,7 @@ import org.junit.jupiter.params.provider.MethodSource; class SimpleQueryStringPredicateSpecificsIT - extends AbstractBaseQueryStringPredicateSpecificsIT> { + extends AbstractBaseQueryStringPredicateSpecificsIT> { @Test @TestForIssue(jiraKey = "HSEARCH-2678") @@ -413,7 +413,7 @@ public static List simpleQueryStringSyntax() { } @Override - SimpleQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { + SimpleQueryStringPredicateFieldStep predicate(SearchPredicateFactory f) { return f.simpleQueryString(); } } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinBoundingBoxPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinBoundingBoxPredicateBaseIT.java index a4dff3d2c55..9275ed07d46 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinBoundingBoxPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinBoundingBoxPredicateBaseIT.java @@ -124,13 +124,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).boundingBox( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet dataSet) { return f.withParameters( params -> f.spatial().within().field( fieldPath ) .boundingBox( params.get( paramName, GeoBoundingBox.class ) ) ); @@ -162,7 +162,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).field( otherFieldPath ) @@ -170,14 +170,14 @@ protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) .boundingBox( MultiFieldConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).fields( fieldPaths ) @@ -210,7 +210,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .boundingBox( InObjectFieldConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); @@ -235,28 +235,28 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .boundingBox( ScoreConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) .boundingBox( ScoreConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) .boundingBox( ScoreConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ).boost( predicateBoost ); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) @@ -264,14 +264,14 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).boost( fieldBoost ) .boundingBox( ScoreConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).boost( fieldBoost ) @@ -279,7 +279,7 @@ protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(Search } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.spatial().within().field( fieldPath ).boost( fieldBoost ) @@ -301,7 +301,7 @@ public InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.spatial().within().field( fieldPath ) // We need this because the backend is not involved before the call to boundingBox() .boundingBox( 0.0, 0.0, 0.1, 0.1 ); @@ -335,7 +335,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.spatial().within().field( fieldPath ) // We need this because the backend is not involved before the call to boundingBox() .boundingBox( 0.0, 0.0, 0.1, 0.1 ); @@ -370,7 +370,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.spatial().within().field( fieldPath ) // We need this because the backend is not involved before the call to boundingBox() .boundingBox( 0.0, 0.0, 0.1, 0.1 ); @@ -397,7 +397,7 @@ public static List params() { } @Override - protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { f.spatial().within().field( fieldPath ).boundingBox( null ); } } @@ -434,14 +434,14 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .boundingBox( TypeCheckingNoConversionConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( field0Path ).field( field1Path ) .boundingBox( TypeCheckingNoConversionConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinCirclePredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinCirclePredicateBaseIT.java index e7c77cff7e5..b97bc87d184 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinCirclePredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinCirclePredicateBaseIT.java @@ -126,7 +126,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .circle( SingleFieldConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), @@ -134,7 +134,7 @@ protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPat } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet dataSet) { return f.withParameters( params -> f.spatial().within().field( fieldPath ) .circle( params.get( paramName + "_center", GeoPoint.class ), @@ -171,7 +171,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).field( otherFieldPath ) .circle( MultiFieldConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), @@ -179,7 +179,7 @@ protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) .circle( MultiFieldConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), @@ -187,7 +187,7 @@ protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[ } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).fields( fieldPaths ) .circle( MultiFieldConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), @@ -218,7 +218,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .circle( InObjectFieldConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), @@ -243,7 +243,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .circle( ScoreConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), @@ -251,7 +251,7 @@ protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPat } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) .circle( ScoreConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), @@ -260,7 +260,7 @@ protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) .circle( ScoreConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), @@ -269,7 +269,7 @@ protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFac } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) @@ -279,7 +279,7 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).boost( fieldBoost ) .circle( ScoreConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), @@ -287,7 +287,7 @@ protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).boost( fieldBoost ) @@ -297,7 +297,7 @@ protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(Search } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.spatial().within().field( fieldPath ).boost( fieldBoost ) @@ -321,7 +321,7 @@ public InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.spatial().within().field( fieldPath ) // We need this because the backend is not involved before the call to circle() .circle( GeoPoint.of( 0, 0 ), 1 ); @@ -355,7 +355,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.spatial().within().field( fieldPath ) // We need this because the backend is not involved before the call to circle() .circle( GeoPoint.of( 0, 0 ), 1 ); @@ -390,7 +390,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.spatial().within().field( fieldPath ) // We need this because the backend is not involved before the call to circle() .circle( GeoPoint.of( 0, 0 ), 1 ); @@ -419,7 +419,7 @@ public static List params() { @ParameterizedTest(name = "{1}") @MethodSource("params") void nullUnit(SimpleMappedIndex index, FieldTypeDescriptor fieldType) { - SearchPredicateFactory f = index.createScope().predicate(); + SearchPredicateFactory f = index.createScope().predicate(); assertThatThrownBy( () -> f.spatial().within().field( fieldPath( index, fieldType ) ).circle( 0.0, 0.0, 10.0, null ) ) @@ -428,7 +428,7 @@ void nullUnit(SimpleMappedIndex index, FieldTypeDescriptor f } @Override - protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { f.spatial().within().field( fieldPath ).circle( null, 10.0 ); } } @@ -466,7 +466,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .circle( TypeCheckingNoConversionConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), @@ -474,7 +474,7 @@ protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPat } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( field0Path ).field( field1Path ) .circle( TypeCheckingNoConversionConfigured.dataSet.values.matchingCenter( matchingDocOrdinal ), diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinPolygonPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinPolygonPredicateBaseIT.java index a6cd506ce65..99a0027a361 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinPolygonPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/SpatialWithinPolygonPredicateBaseIT.java @@ -128,14 +128,14 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .polygon( SingleFieldConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet dataSet) { return f.withParameters( params -> f.spatial().within().field( fieldPath ) .polygon( params.get( paramName, GeoPolygon.class ) ) ); @@ -166,21 +166,21 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).field( otherFieldPath ) .polygon( MultiFieldConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) .polygon( MultiFieldConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).fields( fieldPaths ) @@ -211,7 +211,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .polygon( InObjectFieldConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); @@ -235,28 +235,28 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .polygon( ScoreConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) .polygon( ScoreConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) .polygon( ScoreConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ).boost( predicateBoost ); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.spatial().within().fields( fieldPaths ) @@ -265,14 +265,14 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).boost( fieldBoost ) .polygon( ScoreConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ).boost( fieldBoost ) @@ -281,7 +281,7 @@ protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(Search } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.spatial().within().field( fieldPath ).boost( fieldBoost ) @@ -303,7 +303,7 @@ public InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.spatial().within().field( fieldPath ) // We need this because the backend is not involved before the call to polygon() .polygon( unsusedPolygon() ); @@ -337,7 +337,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.spatial().within().field( fieldPath ) // We need this because the backend is not involved before the call to polygon() .polygon( unsusedPolygon() ); @@ -379,7 +379,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.spatial().within().field( fieldPath ) // We need this because the backend is not involved before the call to polygon() .polygon( unsusedPolygon() ); @@ -406,7 +406,7 @@ public static List params() { } @Override - protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { f.spatial().within().field( fieldPath ).polygon( null ); } } @@ -444,14 +444,14 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( fieldPath ) .polygon( TypeCheckingNoConversionConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, int matchingDocOrdinal, DataSet dataSet) { return f.spatial().within().field( field0Path ).field( field1Path ) .polygon( TypeCheckingNoConversionConfigured.dataSet.values.matchingArg( matchingDocOrdinal ) ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/TermsPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/TermsPredicateBaseIT.java index 0b45e13ce90..7d3f47176b7 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/TermsPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/TermsPredicateBaseIT.java @@ -157,13 +157,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.terms().field( fieldPath ).matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet> dataSet) { return f.withParameters( params -> f.terms().field( fieldPath ) .matchingAny( params.get( paramName, dataSet.fieldType.getJavaType() ) ) ); @@ -202,7 +202,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { assumeTrue( TckConfiguration.get().getBackendFeatures().canPerformTermsQuery( dataSet.fieldType ) @@ -219,7 +219,7 @@ protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPat } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet> dataSet) { return f.withParameters( params -> f.terms().field( fieldPath ) .matchingAny( params.get( paramName, Collection.class ) ) ); @@ -268,20 +268,20 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.terms().field( fieldPath ).field( otherFieldPath ) .matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return f.terms().fields( fieldPaths ).matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return f.terms().field( fieldPath ).fields( fieldPaths ) .matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ); @@ -319,7 +319,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.terms().field( fieldPath ).matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @@ -351,27 +351,27 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet> dataSet) { return f.terms().field( fieldPath ).matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet> dataSet) { return f.terms().fields( fieldPaths ).matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ) .constantScore(); } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return f.terms().fields( fieldPaths ).matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ) .boost( predicateBoost ); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return f.terms().fields( fieldPaths ).matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ) @@ -379,21 +379,21 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet> dataSet) { return f.terms().field( fieldPath ).boost( fieldBoost ) .matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet> dataSet) { return f.terms().field( fieldPath ).boost( fieldBoost ) .matchingAny( dataSet.values.matchingArg( matchingDocOrdinal ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet> dataSet) { return f.terms().field( fieldPath ).boost( fieldBoost ) @@ -415,7 +415,7 @@ protected InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.terms().field( fieldPath ); } @@ -448,7 +448,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.terms().field( fieldPath ); } @@ -487,7 +487,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.terms().field( fieldPath ); } @@ -520,7 +520,7 @@ public static List params() { } @Override - protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { f.terms().field( fieldPath ).matchingAny( null ); } } @@ -576,18 +576,18 @@ public static List integerIndexParams() { @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { return f.terms().field( fieldPath ).matchingAny( matchingParam ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam, ValueModel valueModel) { return f.terms().field( fieldPath ).matchingAny( Collections.singletonList( matchingParam ), valueModel ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, Object matchingParam, ValueModel valueModel) { return f.terms().field( field0Path ).field( field1Path ) .matchingAny( Collections.singletonList( matchingParam ), valueModel ); @@ -595,14 +595,14 @@ protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Pa @Deprecated @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam, org.hibernate.search.engine.search.common.ValueConvert valueConvert) { return f.terms().field( fieldPath ).matchingAny( Collections.singletonList( matchingParam ), valueConvert ); } @Deprecated @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, Object matchingParam, org.hibernate.search.engine.search.common.ValueConvert valueConvert) { return f.terms().field( field0Path ).field( field1Path ) .matchingAny( Collections.singletonList( matchingParam ), valueConvert ); @@ -670,7 +670,7 @@ public ScaleCheckingConfigured() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, Object matchingParam) { return f.terms().field( fieldPath ).matchingAny( matchingParam ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/WildcardPredicateBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/WildcardPredicateBaseIT.java index 39147bff129..1ac09290b00 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/WildcardPredicateBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/predicate/WildcardPredicateBaseIT.java @@ -129,13 +129,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, String paramName, DataSet dataSet) { return f.withParameters( params -> f.wildcard().field( fieldPath ) .matching( params.get( paramName, String.class ) ) ); @@ -173,20 +173,20 @@ public static List params() { } @Override - protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndField(SearchPredicateFactory f, String fieldPath, String otherFieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().field( fieldPath ).field( otherFieldPath ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, + protected PredicateFinalStep predicateOnFields(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateOnFieldAndFields(SearchPredicateFactory f, String fieldPath, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().field( fieldPath ).fields( fieldPaths ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); @@ -222,7 +222,7 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @@ -253,27 +253,27 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithConstantScore(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) .constantScore(); } @Override - protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, + protected PredicateFinalStep predicateWithPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.wildcard().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) .boost( predicateBoost ); } @Override - protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(SearchPredicateFactory f, String[] fieldPaths, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.wildcard().fields( fieldPaths ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ) @@ -281,21 +281,21 @@ protected PredicateFinalStep predicateWithConstantScoreAndPredicateLevelBoost(Se } @Override - protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, + protected PredicateFinalStep predicateWithFieldLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().field( fieldPath ).boost( fieldBoost ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndConstantScore(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().field( fieldPath ).boost( fieldBoost ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ).constantScore(); } @Override - protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, + protected PredicateFinalStep predicateWithFieldLevelBoostAndPredicateLevelBoost(SearchPredicateFactory f, String fieldPath, float fieldBoost, int matchingDocOrdinal, float predicateBoost, DataSet dataSet) { return f.wildcard().field( fieldPath ).boost( fieldBoost ) @@ -317,7 +317,7 @@ protected InvalidFieldConfigured() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.wildcard().field( fieldPath ); } @@ -349,7 +349,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath) { f.wildcard().field( fieldPath ); } @@ -388,7 +388,7 @@ public static List params() { } @Override - protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryPredicate(SearchPredicateFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.wildcard().field( fieldPath ); } @@ -420,7 +420,7 @@ public static List params() { } @Override - protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { + protected void tryPredicateWithNullMatchingParam(SearchPredicateFactory f, String fieldPath) { f.wildcard().field( fieldPath ).matching( null ); } } @@ -464,13 +464,13 @@ public static List params() { } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String fieldPath, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().field( fieldPath ).matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); } @Override - protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, + protected PredicateFinalStep predicate(SearchPredicateFactory f, String field0Path, String field1Path, int matchingDocOrdinal, DataSet dataSet) { return f.wildcard().field( field0Path ).field( field1Path ) .matching( dataSet.values.matchingArg( matchingDocOrdinal ) ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractCompositeProjectionFromAsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractCompositeProjectionFromAsIT.java index ee8cad1044a..056bda6aa77 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractCompositeProjectionFromAsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractCompositeProjectionFromAsIT.java @@ -70,9 +70,9 @@ protected AbstractCompositeProjectionFromAsIT(SimpleMappedIndex index, Abstra this.dataSet = dataSet; } - protected abstract CompositeProjectionInnerStep startProjection(SearchProjectionFactory f); + protected abstract CompositeProjectionInnerStep startProjection(SearchProjectionFactory f); - protected abstract CompositeProjectionInnerStep startProjectionForMulti(SearchProjectionFactory f); + protected abstract CompositeProjectionInnerStep startProjectionForMulti(SearchProjectionFactory f); private abstract class AbstractFromAnyNumberIT { @@ -220,17 +220,17 @@ public void inComposite() { .collect( Collectors.toList() ) ); } - protected CompositeProjectionFromAsStep doFrom(SearchProjectionFactory f, + protected CompositeProjectionFromAsStep doFrom(SearchProjectionFactory f, CompositeProjectionInnerStep step) { return doFrom( f, index.binding().composite(), CompositeBinding::absolutePath, step ); } - protected CompositeProjectionFromAsStep doFromForMulti(SearchProjectionFactory f, + protected CompositeProjectionFromAsStep doFromForMulti(SearchProjectionFactory f, CompositeProjectionInnerStep step) { return doFrom( f, index.binding().compositeForMulti(), CompositeBinding::absolutePath, step ); } - protected abstract CompositeProjectionFromAsStep doFrom(SearchProjectionFactory f, CompositeBinding binding, + protected abstract CompositeProjectionFromAsStep doFrom(SearchProjectionFactory f, CompositeBinding binding, BiFunction, String> pathGetter, CompositeProjectionInnerStep step); @@ -278,17 +278,17 @@ public void as_transformer_multi() { } @Override - protected final S doFrom(SearchProjectionFactory f, CompositeProjectionInnerStep step) { + protected final S doFrom(SearchProjectionFactory f, CompositeProjectionInnerStep step) { return doFrom( f, index.binding().composite(), CompositeBinding::absolutePath, step ); } @Override - protected final S doFromForMulti(SearchProjectionFactory f, CompositeProjectionInnerStep step) { + protected final S doFromForMulti(SearchProjectionFactory f, CompositeProjectionInnerStep step) { return doFrom( f, index.binding().compositeForMulti(), CompositeBinding::absolutePath, step ); } @Override - protected abstract S doFrom(SearchProjectionFactory f, CompositeBinding binding, + protected abstract S doFrom(SearchProjectionFactory f, CompositeBinding binding, BiFunction, String> pathGetter, CompositeProjectionInnerStep step); @@ -310,7 +310,7 @@ protected final Collection> expectedTransformedForMulti() { class From1IT extends AbstractFromSpecificNumberIT, ValueWrapper> { @Override - protected CompositeProjectionFrom1AsStep doFrom(SearchProjectionFactory f, + protected CompositeProjectionFrom1AsStep doFrom(SearchProjectionFactory f, CompositeBinding binding, BiFunction, String> pathGetter, CompositeProjectionInnerStep step) { return step.from( f.field( pathGetter.apply( binding, binding.field1 ), String.class ) ); @@ -336,7 +336,7 @@ protected ValueWrapper expectedTransformed(int docOrdinal, int inDocOrdi class From2IT extends AbstractFromSpecificNumberIT, Pair> { @Override - protected CompositeProjectionFrom2AsStep doFrom(SearchProjectionFactory f, + protected CompositeProjectionFrom2AsStep doFrom(SearchProjectionFactory f, CompositeBinding binding, BiFunction, String> pathGetter, CompositeProjectionInnerStep step) { return step.from( f.field( pathGetter.apply( binding, binding.field1 ), String.class ), @@ -367,7 +367,7 @@ class From3IT extends AbstractFromSpecificNumberIT, Triplet> { @Override - protected CompositeProjectionFrom3AsStep doFrom(SearchProjectionFactory f, + protected CompositeProjectionFrom3AsStep doFrom(SearchProjectionFactory f, CompositeBinding binding, BiFunction, String> pathGetter, CompositeProjectionInnerStep step) { return step.from( f.field( pathGetter.apply( binding, binding.field1 ), String.class ), @@ -400,7 +400,7 @@ protected Triplet expectedTransformed(int docOrdinal, class From4IT extends AbstractFromAnyNumberIT { @Override - protected CompositeProjectionFromAsStep doFrom(SearchProjectionFactory f, + protected CompositeProjectionFromAsStep doFrom(SearchProjectionFactory f, CompositeBinding binding, BiFunction, String> pathGetter, CompositeProjectionInnerStep step) { return step.from( f.field( pathGetter.apply( binding, binding.field1 ), String.class ), diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractDistanceProjectionMultiValuedBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractDistanceProjectionMultiValuedBaseIT.java index c788a4ccd9c..01068db6853 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractDistanceProjectionMultiValuedBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractDistanceProjectionMultiValuedBaseIT.java @@ -384,17 +384,17 @@ private static List divideAll(List distances, double denominator return distances.stream().map( v -> v / denominator ).collect( Collectors.toList() ); } - protected abstract void addParameter(SearchQueryOptionsStep query, String parameterName, Object value); + protected abstract void addParameter(SearchQueryOptionsStep query, String parameterName, Object value); protected abstract ProjectionFinalStep> distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, String parameterName); protected abstract ProjectionFinalStep> distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, DistanceUnit unit, String centerParam, String unitParam); - protected abstract SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, + protected abstract SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, String parameterName); private static class DataSet { diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractDistanceProjectionSingleValuedBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractDistanceProjectionSingleValuedBaseIT.java index fd08b53941c..b500cb2dd81 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractDistanceProjectionSingleValuedBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractDistanceProjectionSingleValuedBaseIT.java @@ -439,21 +439,21 @@ private String getFieldPath(TestedFieldStructure fieldStructure) { return mainIndex.binding().getFieldPath( fieldStructure, fieldType ); } - protected abstract void addParameter(SearchQueryOptionsStep query, String parameterName, Object value); + protected abstract void addParameter(SearchQueryOptionsStep query, String parameterName, Object value); protected abstract ProjectionFinalStep distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, String parameterName); protected abstract ProjectionFinalStep> distanceMulti( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, String parameterName); protected abstract ProjectionFinalStep distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, DistanceUnit unit, String centerParam, String unitParam); - protected abstract SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, + protected abstract SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, String parameterName); private static class DataSet { diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractEntityProjectionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractEntityProjectionIT.java index cd8e74a5495..048d2d54a47 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractEntityProjectionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractEntityProjectionIT.java @@ -85,8 +85,8 @@ protected AbstractEntityProjectionIT(SimpleMappedIndex mainIndex, this.multiIndex4 = multiIndex4; } - public abstract SearchQueryWhereStep select( - SearchQuerySelectStep step); + public abstract SearchQueryWhereStep select( + SearchQuerySelectStep step); @Test @TestForIssue(jiraKey = "HSEARCH-3578") @@ -104,7 +104,7 @@ void entityLoading() { mainIndex.mapping().with() .typeContext( mainIndex.typeName(), mainTypeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); SearchQuery query = select( scope.query() ) .where( f -> f.matchAll() ) @@ -149,7 +149,7 @@ void entityLoading_timeout() { mainIndex.mapping().with() .typeContext( mainIndex.typeName(), mainTypeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); SearchQuery query = select( scope.query() ) .where( f -> f.matchAll() ) @@ -208,7 +208,7 @@ void entityLoading_callGetProjectionHitMapperEveryTime() { mainIndex.mapping().with() .typeContext( mainIndex.typeName(), mainTypeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); SearchQuery query = select( scope.query() ) .where( f -> f.matchAll() ) @@ -254,7 +254,7 @@ void entityLoading_failed_skipHit() { mainIndex.mapping().with() .typeContext( mainIndex.typeName(), mainTypeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); SearchQuery query = select( scope.query() ) .where( f -> f.matchAll() ) @@ -291,7 +291,7 @@ void noLoadingAvailable_noProjectionRegistryEntry_fails() { .typeContext( mainIndex.typeName(), mainTypeContextMock ) .projectionRegistry( projectionRegistryMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); SearchQuery query = select( scope.query( loadingContextMock ) ) .where( f -> f.matchAll() ) @@ -334,7 +334,7 @@ void projectionRegistryFallback_withLoadingAvailable_doesNotCheckProjectionRegis .typeContext( mainIndex.typeName(), mainTypeContextMock ) .projectionRegistry( projectionRegistryMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); expectHitMapping( @@ -383,7 +383,7 @@ void projectionRegistryFallback_noLoadingAvailable_withProjectionRegistryEntry_u .typeContext( mainIndex.typeName(), mainTypeContextMock ) .projectionRegistry( projectionRegistryMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); SearchQuery query = select( scope.query( loadingContextMock ) ) @@ -472,7 +472,7 @@ void projectionRegistryFallback_multiType() { .typeContext( multiIndex4.typeName(), type4ContextMock ) .projectionRegistry( projectionRegistryMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = multiIndex1.createGenericScope( loadingContextMock, multiIndex2, multiIndex3, multiIndex4 ); SearchQuery query = select( scope.query( loadingContextMock ) ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractEntityReferenceProjectionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractEntityReferenceProjectionIT.java index 0194d4e1ee8..877ed796ea2 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractEntityReferenceProjectionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractEntityReferenceProjectionIT.java @@ -47,8 +47,8 @@ protected AbstractEntityReferenceProjectionIT(StubMappedIndex mainIndex) { this.mainIndex = mainIndex; } - public abstract SearchQueryWhereStep select( - SearchQuerySelectStep step); + public abstract SearchQueryWhereStep select( + SearchQuerySelectStep step); @Test void test() { @@ -63,7 +63,7 @@ void test() { mainIndex.mapping().with() .typeContext( mainIndex.typeName(), mainTypeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); SearchQuery referencesQuery = select( scope.query() ) .where( f -> f.matchAll() ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionInObjectProjectionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionInObjectProjectionIT.java index 985357c9a42..f9a5e7e0dfd 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionInObjectProjectionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionInObjectProjectionIT.java @@ -1035,10 +1035,11 @@ private String level2MultiValuedFieldPath(SimpleMappedIndex mainIn .multiValuedFieldAbsolutePath( dataSet.fieldType ); } - protected abstract ProjectionFinalStep

singleValuedProjection(SearchProjectionFactory f, String absoluteFieldPath, + protected abstract ProjectionFinalStep

singleValuedProjection(SearchProjectionFactory f, + String absoluteFieldPath, DataSet dataSet); - protected abstract ProjectionFinalStep> multiValuedProjection(SearchProjectionFactory f, + protected abstract ProjectionFinalStep> multiValuedProjection(SearchProjectionFactory f, String absoluteFieldPath, DataSet dataSet); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionInvalidFieldIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionInvalidFieldIT.java index 3c223456bd5..a7842129806 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionInvalidFieldIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionInvalidFieldIT.java @@ -27,7 +27,7 @@ protected AbstractProjectionInvalidFieldIT(SimpleMappedIndex index @Test void use_unknownField() { - SearchProjectionFactory f = index.createScope().projection(); + SearchProjectionFactory f = index.createScope().projection(); assertThatThrownBy( () -> tryProjection( f, "unknown_field" ) ) .isInstanceOf( SearchException.class ) @@ -57,7 +57,7 @@ void trait_objectField_flattened() { @Test void use_objectField_nested() { - SearchProjectionFactory f = index.createScope().projection(); + SearchProjectionFactory f = index.createScope().projection(); String fieldPath = index.binding().nested.relativeFieldName; @@ -68,7 +68,7 @@ void use_objectField_nested() { @Test void use_objectField_flattened() { - SearchProjectionFactory f = index.createScope().projection(); + SearchProjectionFactory f = index.createScope().projection(); String fieldPath = index.binding().flattened.relativeFieldName; @@ -77,7 +77,7 @@ void use_objectField_flattened() { .hasMessageContaining( "Cannot use '" + projectionTrait() + "' on field '" + fieldPath + "'" ); } - protected abstract void tryProjection(SearchProjectionFactory f, String fieldPath); + protected abstract void tryProjection(SearchProjectionFactory f, String fieldPath); protected abstract String projectionTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionProjectableIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionProjectableIT.java index db71d8f2a41..df112886437 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionProjectableIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionProjectableIT.java @@ -91,7 +91,7 @@ void projectable_default_use( "Skipping this test as the backend makes fields projectable by default." ); - SearchProjectionFactory f = projectableDefaultIndex.createScope().projection(); + SearchProjectionFactory f = projectableDefaultIndex.createScope().projection(); String fieldPath = projectableDefaultIndex.binding().field.get( fieldType ).relativeFieldName; @@ -110,7 +110,7 @@ void projectable_no_use( SimpleMappedIndex projectableYesIndex, SimpleMappedIndex projectableNoIndex, FieldTypeDescriptor fieldType) { - SearchProjectionFactory f = projectableNoIndex.createScope().projection(); + SearchProjectionFactory f = projectableNoIndex.createScope().projection(); String fieldPath = projectableNoIndex.binding().field.get( fieldType ).relativeFieldName; @@ -130,7 +130,7 @@ void multiIndex_incompatibleProjectable( SimpleMappedIndex projectableYesIndex, SimpleMappedIndex projectableNoIndex, FieldTypeDescriptor fieldType) { - SearchProjectionFactory f = projectableYesIndex.createScope( projectableNoIndex ).projection(); + SearchProjectionFactory f = projectableYesIndex.createScope( projectableNoIndex ).projection(); String fieldPath = projectableYesIndex.binding().field.get( fieldType ).relativeFieldName; @@ -142,7 +142,7 @@ void multiIndex_incompatibleProjectable( ); } - protected abstract void tryProjection(SearchProjectionFactory f, String fieldPath, + protected abstract void tryProjection(SearchProjectionFactory f, String fieldPath, FieldTypeDescriptor fieldType); protected abstract String projectionTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionUnsupportedTypesIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionUnsupportedTypesIT.java index 8c62cc51a6d..a2987339eb4 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionUnsupportedTypesIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/AbstractProjectionUnsupportedTypesIT.java @@ -50,7 +50,7 @@ void use(SimpleMappedIndex index, FieldTypeDescriptor fieldT ); } - protected abstract void tryProjection(SearchProjectionFactory f, String fieldPath); + protected abstract void tryProjection(SearchProjectionFactory f, String fieldPath); protected abstract String projectionTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/CompositeProjectionBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/CompositeProjectionBaseIT.java index c1a93004d88..bd36653f73e 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/CompositeProjectionBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/CompositeProjectionBaseIT.java @@ -62,12 +62,12 @@ public FromAsConfigured() { } @Override - protected CompositeProjectionInnerStep startProjection(SearchProjectionFactory f) { + protected CompositeProjectionInnerStep startProjection(SearchProjectionFactory f) { return f.composite(); } @Override - protected CompositeProjectionInnerStep startProjectionForMulti(SearchProjectionFactory f) { + protected CompositeProjectionInnerStep startProjectionForMulti(SearchProjectionFactory f) { return f.composite(); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionBaseIT.java index 931693eee14..355327d4fdb 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionBaseIT.java @@ -145,13 +145,13 @@ protected RecursiveComparisonConfiguration.Builder configureRecursiveComparison( } @Override - protected ProjectionFinalStep singleValuedProjection(SearchProjectionFactory f, + protected ProjectionFinalStep singleValuedProjection(SearchProjectionFactory f, String absoluteFieldPath, DataSet dataSet) { return f.distance( absoluteFieldPath, dataSet.values.projectionCenterPoint() ); } @Override - protected ProjectionFinalStep> multiValuedProjection(SearchProjectionFactory f, + protected ProjectionFinalStep> multiValuedProjection(SearchProjectionFactory f, String absoluteFieldPath, DataSet dataSet) { return f.distance( absoluteFieldPath, dataSet.values.projectionCenterPoint() ).multi(); } @@ -172,7 +172,7 @@ public InvalidFieldConfigured() { } @Override - protected void tryProjection(SearchProjectionFactory f, String fieldPath) { + protected void tryProjection(SearchProjectionFactory f, String fieldPath) { f.distance( fieldPath, GeoPoint.of( 0.0, 0.0 ) ); } @@ -204,7 +204,7 @@ public static List params() { } @Override - protected void tryProjection(SearchProjectionFactory f, String fieldPath) { + protected void tryProjection(SearchProjectionFactory f, String fieldPath) { f.distance( fieldPath, GeoPoint.of( 0.0, 0.0 ) ); } @@ -243,7 +243,8 @@ public static List params() { } @Override - protected void tryProjection(SearchProjectionFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryProjection(SearchProjectionFactory f, String fieldPath, + FieldTypeDescriptor fieldType) { f.distance( fieldPath, GeoPoint.of( 0.0, 0.0 ) ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionMultiValuedBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionMultiValuedBaseIT.java index bf9e888dc4d..b0426c7bd98 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionMultiValuedBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionMultiValuedBaseIT.java @@ -19,26 +19,26 @@ class DistanceProjectionMultiValuedBaseIT extends AbstractDistanceProjectionMultiValuedBaseIT { @Override - protected void addParameter(SearchQueryOptionsStep query, String parameterName, Object value) { + protected void addParameter(SearchQueryOptionsStep query, String parameterName, Object value) { // do nothing } @Override protected ProjectionFinalStep> distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, String parameterName) { return projection.distance( path, center ).multi(); } @Override protected ProjectionFinalStep> distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, DistanceUnit unit, String centerParam, String unitParam) { return projection.distance( path, center ).multi().unit( unit ); } @Override - protected SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, + protected SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, String parameterName) { return sort.distance( path, center ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionParameterMultiValuedBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionParameterMultiValuedBaseIT.java index 8a7fabc7371..b5e4cc5ec3a 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionParameterMultiValuedBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionParameterMultiValuedBaseIT.java @@ -21,13 +21,13 @@ class DistanceProjectionParameterMultiValuedBaseIT extends AbstractDistanceProjectionMultiValuedBaseIT { @Override - protected void addParameter(SearchQueryOptionsStep query, String parameterName, Object value) { + protected void addParameter(SearchQueryOptionsStep query, String parameterName, Object value) { query.param( parameterName, value ); } @Override protected ProjectionFinalStep> distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, String parameterName) { return projection.withParameters( params -> projection.distance( path, params.get( parameterName, GeoPoint.class ) ).multi() ); @@ -35,7 +35,7 @@ protected ProjectionFinalStep> distance( @Override protected ProjectionFinalStep> distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, DistanceUnit unit, String centerParam, String unitParam) { return projection.withParameters( params -> projection.distance( path, params.get( centerParam, GeoPoint.class ) ).multi() @@ -43,7 +43,7 @@ protected ProjectionFinalStep> distance( } @Override - protected SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, String parameterName) { + protected SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, String parameterName) { return sort.withParameters( param -> sort.distance( path, param.get( parameterName, GeoPoint.class ) ) ); } } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionParameterSingleValuedBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionParameterSingleValuedBaseIT.java index fe07f7b79e2..2698a9d5eb0 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionParameterSingleValuedBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionParameterSingleValuedBaseIT.java @@ -20,13 +20,13 @@ class DistanceProjectionParameterSingleValuedBaseIT extends AbstractDistanceProj @Override - protected void addParameter(SearchQueryOptionsStep query, String parameterName, Object value) { + protected void addParameter(SearchQueryOptionsStep query, String parameterName, Object value) { query.param( parameterName, value ); } @Override protected ProjectionFinalStep distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, String parameterName) { return projection.withParameters( params -> projection.distance( path, params.get( parameterName, GeoPoint.class ) ) ); @@ -34,7 +34,7 @@ protected ProjectionFinalStep distance( @Override protected ProjectionFinalStep> distanceMulti( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, String parameterName) { return projection.withParameters( params -> projection.distance( path, params.get( parameterName, GeoPoint.class ) ).multi() ); @@ -42,7 +42,7 @@ protected ProjectionFinalStep> distanceMulti( @Override protected ProjectionFinalStep distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, DistanceUnit unit, String centerParam, String unitParam) { return projection.withParameters( params -> projection.distance( path, params.get( centerParam, GeoPoint.class ) ) @@ -50,7 +50,7 @@ protected ProjectionFinalStep distance( } @Override - protected SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, String parameterName) { + protected SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, String parameterName) { return sort.withParameters( param -> sort.distance( path, param.get( parameterName, GeoPoint.class ) ) ); } } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionSingleValuedBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionSingleValuedBaseIT.java index 0c1d4dffed7..0813cad420f 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionSingleValuedBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/DistanceProjectionSingleValuedBaseIT.java @@ -22,33 +22,33 @@ class DistanceProjectionSingleValuedBaseIT extends AbstractDistanceProjectionSin @Override - protected void addParameter(SearchQueryOptionsStep query, String parameterName, Object value) { + protected void addParameter(SearchQueryOptionsStep query, String parameterName, Object value) { // do nothing } @Override protected DistanceToFieldProjectionValueStep distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, String parameterName) { return projection.distance( path, center ); } @Override protected ProjectionFinalStep> distanceMulti( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, String parameterName) { return projection.distance( path, center ).multi(); } @Override protected DistanceToFieldProjectionOptionsStep distance( - SearchProjectionFactory projection, String path, GeoPoint center, + SearchProjectionFactory projection, String path, GeoPoint center, DistanceUnit unit, String centerParam, String unitParam) { return projection.distance( path, center ).unit( unit ); } @Override - protected SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, String parameterName) { + protected SortFinalStep sort(SearchSortFactory sort, String path, GeoPoint center, String parameterName) { return sort.distance( path, center ); } } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/EntityProjectionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/EntityProjectionIT.java index ad8e0fb0b49..8560e748575 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/EntityProjectionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/EntityProjectionIT.java @@ -79,7 +79,7 @@ static void setup() { } @Override - public SearchQueryWhereStep select(SearchQuerySelectStep step) { + public SearchQueryWhereStep select(SearchQuerySelectStep step) { return step.select( f -> f.entity() ); } @@ -114,7 +114,7 @@ void projectionRegistryFallback_noLoadingAvailable_withProjectionRegistryEntry_i .typeContext( mainIndex.typeName(), mainTypeContextMock ) .projectionRegistry( projectionRegistryMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); IndexBinding binding = mainIndex.binding(); @@ -172,7 +172,7 @@ void expectedType_exact() { mainIndex.mapping().with() .typeContext( mainIndex.typeName(), mainTypeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); SearchQuery query = scope.query().select( f -> f.entity( StubEntity.class ) ) .where( f -> f.matchAll() ) @@ -206,7 +206,7 @@ void expectedType_superType() { mainIndex.mapping().with() .typeContext( mainIndex.typeName(), mainTypeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); SearchQuery query = scope.query().select( f -> f.entity( Object.class ) ) .where( f -> f.matchAll() ) @@ -235,7 +235,7 @@ void expectedType_invalid() { mainIndex.mapping().with() .typeContext( mainIndex.typeName(), mainTypeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); assertThatThrownBy( () -> scope.query().select( f -> f.entity( Integer.class ) ) ) .isInstanceOf( SearchException.class ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/EntityReferenceProjectionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/EntityReferenceProjectionIT.java index 95072e648e5..c8ad319b17d 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/EntityReferenceProjectionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/EntityReferenceProjectionIT.java @@ -34,7 +34,7 @@ static void setup() { } @Override - public SearchQueryWhereStep select(SearchQuerySelectStep step) { + public SearchQueryWhereStep select(SearchQuerySelectStep step) { return step.select( f -> f.entityReference() ); } } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/FieldProjectionBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/FieldProjectionBaseIT.java index 7eaeba53010..80c646f6565 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/FieldProjectionBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/FieldProjectionBaseIT.java @@ -135,13 +135,13 @@ protected RecursiveComparisonConfiguration.Builder configureRecursiveComparison( } @Override - protected ProjectionFinalStep singleValuedProjection(SearchProjectionFactory f, + protected ProjectionFinalStep singleValuedProjection(SearchProjectionFactory f, String absoluteFieldPath, DataSet> dataSet) { return f.field( absoluteFieldPath, dataSet.fieldType.getJavaType() ); } @Override - protected ProjectionFinalStep> multiValuedProjection(SearchProjectionFactory f, + protected ProjectionFinalStep> multiValuedProjection(SearchProjectionFactory f, String absoluteFieldPath, DataSet> dataSet) { return f.field( absoluteFieldPath, dataSet.fieldType.getJavaType() ).multi(); } @@ -162,7 +162,7 @@ public InvalidFieldConfigured() { } @Override - protected void tryProjection(SearchProjectionFactory f, String fieldPath) { + protected void tryProjection(SearchProjectionFactory f, String fieldPath) { f.field( fieldPath ); } @@ -201,7 +201,8 @@ public static List params() { } @Override - protected void tryProjection(SearchProjectionFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void tryProjection(SearchProjectionFactory f, String fieldPath, + FieldTypeDescriptor fieldType) { f.field( fieldPath ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/ObjectProjectionBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/ObjectProjectionBaseIT.java index 59cfafd3127..f53288d57b0 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/ObjectProjectionBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/ObjectProjectionBaseIT.java @@ -66,12 +66,12 @@ public FromAsConfigured() { } @Override - protected CompositeProjectionInnerStep startProjection(SearchProjectionFactory f) { + protected CompositeProjectionInnerStep startProjection(SearchProjectionFactory f) { return f.object( index.binding().objectField.relativeName ); } @Override - protected CompositeProjectionInnerStep startProjectionForMulti(SearchProjectionFactory f) { + protected CompositeProjectionInnerStep startProjectionForMulti(SearchProjectionFactory f) { return f.object( index.binding().objectField_multi.relativeName ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/ObjectProjectionSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/ObjectProjectionSpecificsIT.java index fc6cacc3104..05e2fef10f1 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/ObjectProjectionSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/ObjectProjectionSpecificsIT.java @@ -42,7 +42,7 @@ static void setup() { @Test void nullFieldPath() { - assertThatThrownBy( () -> index.createScope().projection().object( null ) ) + assertThatThrownBy( () -> index.createScope().projection().object( (String) null ) ) .isInstanceOf( IllegalArgumentException.class ) .hasMessageContaining( "'objectFieldPath' must not be null" ); } @@ -109,7 +109,7 @@ void multiValuedObjectField_flattened_unsupported() { TckConfiguration.get().getBackendFeatures().reliesOnNestedDocumentsForMultiValuedObjectProjection(), "This test is only relevant if the backend relies on nested documents to implement object projections on multi-valued fields" ); - SearchProjectionFactory f = index.createScope().projection(); + SearchProjectionFactory f = index.createScope().projection(); assertThatThrownBy( () -> f.object( "flattenedLevel1" ) ) .isInstanceOf( SearchException.class ) .hasMessageContainingAll( "Cannot use 'projection:object' on field 'flattenedLevel1'", @@ -121,7 +121,7 @@ void multiValuedObjectField_flattened_unsupported() { @Test void multiValuedObjectField_singleValuedObjectProjection() { - SearchProjectionFactory f = index.createScope().projection(); + SearchProjectionFactory f = index.createScope().projection(); assertThatThrownBy( () -> f.object( "level1" ) .from( f.field( "level1.field1" ) ) .asList() diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/SearchProjectionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/SearchProjectionIT.java index ef570968304..f84e2b16a7f 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/SearchProjectionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/projection/SearchProjectionIT.java @@ -163,7 +163,7 @@ void references() { mainIndex.mapping().with() .typeContext( mainIndex.typeName(), mainTypeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = mainIndex.createGenericScope( loadingContextMock ); SearchQuery> query; /* @@ -873,28 +873,28 @@ private FieldModel(IndexFieldReference reference, String relativeFieldName, } } - private static class SupportedExtension - implements SearchProjectionFactoryExtension, R, E> { + private static class SupportedExtension + implements SearchProjectionFactoryExtension, R, E> { @Override - public Optional> extendOptional(SearchProjectionFactory original) { + public Optional> extendOptional(SearchProjectionFactory original) { assertThat( original ).isNotNull(); return Optional.of( new MyExtendedFactory<>( original ) ); } } - private static class UnSupportedExtension - implements SearchProjectionFactoryExtension, R, E> { + private static class UnSupportedExtension + implements SearchProjectionFactoryExtension, R, E> { @Override - public Optional> extendOptional(SearchProjectionFactory original) { + public Optional> extendOptional(SearchProjectionFactory original) { assertThat( original ).isNotNull(); return Optional.empty(); } } - private static class MyExtendedFactory { - private final SearchProjectionFactory delegate; + private static class MyExtendedFactory { + private final SearchProjectionFactory delegate; - MyExtendedFactory(SearchProjectionFactory delegate) { + MyExtendedFactory(SearchProjectionFactory delegate) { this.delegate = delegate; } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryBaseIT.java index ab6e4a1e763..03ddb34712d 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryBaseIT.java @@ -14,6 +14,7 @@ import java.time.Duration; import java.time.LocalDate; import java.time.temporal.ChronoUnit; +import java.util.Map; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; @@ -205,12 +206,13 @@ void queryParameters_nulls() { void queryParameters_access() { StubMappingScope scope = index.createScope(); AtomicInteger counter = new AtomicInteger( 0 ); + AggregationKey> key = AggregationKey.of( "key" ); scope.query() .select( f -> f.withParameters( params -> assertParameters( params, f, counter ) .field( "string" ) ) ) .where( f -> f.withParameters( ctx -> assertParameters( ctx, f, counter ).matchAll() ) ) .sort( f -> f.withParameters( ctx -> assertParameters( ctx, f, counter ).score() ) ) - .aggregation( AggregationKey.of( "key" ), f -> f.withParameters( + .aggregation( key, f -> f.withParameters( ctx -> assertParameters( ctx, f, counter ).terms().field( "string", String.class ) ) ) .param( "p1", null ) .param( "p2", 1 ) @@ -269,7 +271,7 @@ private static T assertParameters(NamedValues params, T factory, AtomicInteg return factory; } - private SearchQueryOptionsStep matchAllSortedByScoreQuery() { + private SearchQueryOptionsStep matchAllSortedByScoreQuery() { return index.query() .where( f -> f.matchAll() ); } @@ -280,7 +282,7 @@ private static T assertParameters(NamedValues params, T factory, AtomicInteg * because optimizations are possible with MatchAllDocsQuery that would allow Hibernate Search * to return an exact total hit count in constant time, ignoring the total hit count threshold. */ - private SearchQueryOptionsStep matchAllWithConditionSortedByScoreQuery() { + private SearchQueryOptionsStep matchAllWithConditionSortedByScoreQuery() { return index.query() .where( f -> f.exists().field( "string" ) ); } @@ -338,26 +340,26 @@ public Optional> extendOptional(SearchQuery original, } } - private static class SupportedQueryDslExtension + private static class SupportedQueryDslExtension implements - SearchQueryDslExtension, R, E, LOS> { + SearchQueryDslExtension, R, E, LOS> { @Override - public Optional> extendOptional(SearchQuerySelectStep original, + public Optional> extendOptional(SearchQuerySelectStep original, SearchQueryIndexScope scope, BackendSessionContext sessionContext, SearchLoadingContextBuilder loadingContextBuilder) { assertThat( original ).isNotNull(); assertThat( scope ).isNotNull(); assertThat( sessionContext ).isNotNull(); assertThat( loadingContextBuilder ).isNotNull(); - return Optional.of( new MyExtendedDslContext( original.selectEntity() ) ); + return Optional.of( new MyExtendedDslContext( original.selectEntity() ) ); } } - private static class UnSupportedQueryDslExtension + private static class UnSupportedQueryDslExtension implements - SearchQueryDslExtension, R, E, LOS> { + SearchQueryDslExtension, R, E, LOS> { @Override - public Optional> extendOptional(SearchQuerySelectStep original, + public Optional> extendOptional(SearchQuerySelectStep original, SearchQueryIndexScope scope, BackendSessionContext sessionContext, SearchLoadingContextBuilder loadingContextBuilder) { assertThat( original ).isNotNull(); @@ -368,10 +370,10 @@ public Optional> extendOptional(SearchQuerySelectStep { - private final SearchQueryWhereStep delegate; + private static class MyExtendedDslContext { + private final SearchQueryWhereStep delegate; - MyExtendedDslContext(SearchQueryWhereStep delegate) { + MyExtendedDslContext(SearchQueryWhereStep delegate) { this.delegate = delegate; } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryFetchIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryFetchIT.java index 448d7f2ebea..2239dfa3304 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryFetchIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryFetchIT.java @@ -366,33 +366,33 @@ void maxResults_zero() { .hasNoHits(); } - private SearchQueryOptionsStep matchAllQuerySortByField() { + private SearchQueryOptionsStep matchAllQuerySortByField() { StubMappingScope scope = index.createScope(); return scope.query() .where( f -> f.matchAll() ) .sort( f -> f.field( "integer" ).asc() ); } - private SearchQueryOptionsStep matchAllQuerySortByDefault() { + private SearchQueryOptionsStep matchAllQuerySortByDefault() { StubMappingScope scope = index.createScope(); return scope.query().where( f -> f.simpleQueryString().field( "text" ) .matching( "mostimportantword^100 lessimportantword^10 leastimportantword^0.1" ) ); } - private SearchQueryOptionsStep matchFirstHalfQuery() { + private SearchQueryOptionsStep matchFirstHalfQuery() { StubMappingScope scope = index.createScope(); return scope.query() .where( f -> f.range().field( "integer" ).lessThan( DOCUMENT_COUNT / 2 ) ) .sort( f -> f.field( "integer" ).asc() ); } - private SearchQueryOptionsStep matchOneQuery(int id) { + private SearchQueryOptionsStep matchOneQuery(int id) { StubMappingScope scope = index.createScope(); return scope.query() .where( f -> f.match().field( "integer" ).matching( id ) ); } - private SearchQueryOptionsStep matchNoneQuery() { + private SearchQueryOptionsStep matchNoneQuery() { StubMappingScope scope = index.createScope(); return scope.query() .where( f -> f.match().field( "integer" ).matching( DOCUMENT_COUNT + 2 ) ); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryLoadingOptionsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryLoadingOptionsIT.java index 3a9a5bd8a18..ff7657a9fa0 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryLoadingOptionsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryLoadingOptionsIT.java @@ -59,7 +59,7 @@ void defaultResultType() { index.mapping().with() .typeContext( index.typeName(), typeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = index.createGenericScope( loadingContextMock ); scope.query( loadingOptionsStepMock ) .where( f -> f.matchAll() ) @@ -82,7 +82,7 @@ void selectEntity() { index.mapping().with() .typeContext( index.typeName(), typeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = index.createGenericScope( loadingContextMock ); scope.query( loadingOptionsStepMock ) .selectEntity() @@ -104,7 +104,7 @@ void selectEntityReference() { index.mapping().with() .typeContext( index.typeName(), typeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = index.createGenericScope( loadingContextMock ); scope.query( loadingOptionsStepMock ) .selectEntityReference() @@ -129,7 +129,7 @@ void select() { index.mapping().with() .typeContext( index.typeName(), typeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = index.createGenericScope( loadingContextMock ); scope.query( loadingOptionsStepMock ) .select( f -> f.composite( f.entity(), f.field( "string" ) ) ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryScrollIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryScrollIT.java index 7ec3a988f35..da34f7ed55d 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryScrollIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryScrollIT.java @@ -256,7 +256,7 @@ private void checkScrolling(SearchScroll scroll, int document assertThat( scrollResult.hasHits() ).isFalse(); } - private SearchQueryOptionsStep matchAllQuery() { + private SearchQueryOptionsStep matchAllQuery() { return index.query() .where( f -> f.matchAll() ) .sort( f -> f.field( "integer" ).asc() ); @@ -268,23 +268,23 @@ private void checkScrolling(SearchScroll scroll, int document * because optimizations are possible with MatchAllDocsQuery that would allow Hibernate Search * to return an exact total hit count in constant time, ignoring the total hit count threshold. */ - private SearchQueryOptionsStep matchAllWithConditionSortedByScoreQuery() { + private SearchQueryOptionsStep matchAllWithConditionSortedByScoreQuery() { return index.query() .where( f -> f.exists().field( "integer" ) ); } - private SearchQueryOptionsStep matchFirstHalfQuery() { + private SearchQueryOptionsStep matchFirstHalfQuery() { return index.query() .where( f -> f.range().field( "integer" ).lessThan( DOCUMENT_COUNT / 2 ) ) .sort( f -> f.field( "integer" ).asc() ); } - private SearchQueryOptionsStep matchOneQuery(int id) { + private SearchQueryOptionsStep matchOneQuery(int id) { return index.query() .where( f -> f.match().field( "integer" ).matching( id ) ); } - private SearchQueryOptionsStep matchNoneQuery() { + private SearchQueryOptionsStep matchNoneQuery() { return index.query() .where( f -> f.match().field( "integer" ).matching( DOCUMENT_COUNT + 2 ) ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryScrollResultLoadingIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryScrollResultLoadingIT.java index e451bb189db..06c64ae13a1 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryScrollResultLoadingIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryScrollResultLoadingIT.java @@ -75,7 +75,8 @@ void resultLoadingOnScrolling() { index.mapping().with() .typeContext( index.typeName(), typeContextMock ) .run( () -> { - GenericStubMappingScope scope = index.createGenericScope( loadingContextMock ); + GenericStubMappingScope scope = + index.createGenericScope( loadingContextMock ); SearchQuery query = scope.query() .where( f -> f.matchAll() ) .sort( f -> f.field( "integer" ) ) @@ -97,7 +98,7 @@ void resultLoadingOnScrolling_entityLoadingTimeout() { index.mapping().with() .typeContext( index.typeName(), typeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = index.createGenericScope( loadingContextMock ); SearchQuery query = scope.query() .where( f -> f.matchAll() ) @@ -121,7 +122,7 @@ void resultLoadingOnScrolling_softTimeout() { index.mapping().with() .typeContext( index.typeName(), typeContextMock ) .run( () -> { - GenericStubMappingScope scope = + GenericStubMappingScope scope = index.createGenericScope( loadingContextMock ); SearchQuery query = scope.query() .where( f -> f.matchAll() ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQuerySelectIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQuerySelectIT.java index a9208f08ba5..df4e8705a3e 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQuerySelectIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQuerySelectIT.java @@ -74,7 +74,8 @@ public SelectDefaultIT() { } @Override - public SearchQueryWhereStep select(SearchQuerySelectStep step) { + public SearchQueryWhereStep select( + SearchQuerySelectStep step) { return step; } } @@ -88,7 +89,8 @@ public SelectEntityIT() { } @Override - public SearchQueryWhereStep select(SearchQuerySelectStep step) { + public SearchQueryWhereStep select( + SearchQuerySelectStep step) { return step.selectEntity(); } } @@ -100,7 +102,8 @@ public SelectEntityReferenceIT() { } @Override - public SearchQueryWhereStep select(SearchQuerySelectStep step) { + public SearchQueryWhereStep select( + SearchQuerySelectStep step) { return step.selectEntityReference(); } } @@ -118,7 +121,8 @@ public SelectDefaultWithExtensionIT() { } @Override - public SearchQueryWhereStep select(SearchQuerySelectStep step) { + public SearchQueryWhereStep select( + SearchQuerySelectStep step) { return step.extension( TckConfiguration.get().getBackendHelper().queryDslExtension() ); } } @@ -132,8 +136,9 @@ public SelectEntityWithExtensionIT() { } @Override - public SearchQueryWhereStep select(SearchQuerySelectStep step) { - return step.extension( TckConfiguration.get().getBackendHelper().queryDslExtension() ) + public SearchQueryWhereStep select( + SearchQuerySelectStep step) { + return step.extension( TckConfiguration.get().getBackendHelper().queryDslExtension() ) .selectEntity(); } } @@ -145,8 +150,9 @@ public SelectEntityReferenceWithExtensionIT() { } @Override - public SearchQueryWhereStep select(SearchQuerySelectStep step) { - return step.extension( TckConfiguration.get().getBackendHelper().queryDslExtension() ) + public SearchQueryWhereStep select( + SearchQuerySelectStep step) { + return step.extension( TckConfiguration.get().getBackendHelper().queryDslExtension() ) .selectEntityReference(); } } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryTimeoutIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryTimeoutIT.java index d4fee636017..9d8250b3332 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryTimeoutIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/query/SearchQueryTimeoutIT.java @@ -198,12 +198,12 @@ void scroll_truncateAfter_fastQuery_largeTimeout() { } } - private SearchQueryOptionsStep startSlowQuery() { + private SearchQueryOptionsStep startSlowQuery() { return index.createScope().query() .where( f -> TckConfiguration.get().getBackendHelper().createSlowPredicate( f ) ); } - private SearchQueryOptionsStep startFastQuery() { + private SearchQueryOptionsStep startFastQuery() { return index.createScope().query() .where( f -> f.match().field( EMPTY_FIELD_NAME ).matching( NON_MATCHING_INTEGER ) ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortInvalidFieldIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortInvalidFieldIT.java index 56b2c806c27..4cd57a099cc 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortInvalidFieldIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortInvalidFieldIT.java @@ -27,7 +27,7 @@ protected AbstractSortInvalidFieldIT(SimpleMappedIndex index) { @Test void use_unknownField() { - SearchSortFactory f = index.createScope().sort(); + SearchSortFactory f = index.createScope().sort(); assertThatThrownBy( () -> trySort( f, "unknown_field" ) ) .isInstanceOf( SearchException.class ) @@ -57,7 +57,7 @@ void trait_objectField_flattened() { @Test void use_objectField_nested() { - SearchSortFactory f = index.createScope().sort(); + SearchSortFactory f = index.createScope().sort(); String fieldPath = index.binding().nested.relativeFieldName; @@ -68,7 +68,7 @@ void use_objectField_nested() { @Test void use_objectField_flattened() { - SearchSortFactory f = index.createScope().sort(); + SearchSortFactory f = index.createScope().sort(); String fieldPath = index.binding().flattened.relativeFieldName; @@ -77,7 +77,7 @@ void use_objectField_flattened() { .hasMessageContaining( "Cannot use '" + sortTrait() + "' on field '" + fieldPath + "'" ); } - protected abstract void trySort(SearchSortFactory f, String fieldPath); + protected abstract void trySort(SearchSortFactory f, String fieldPath); protected abstract String sortTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortSortableIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortSortableIT.java index d761fab54dd..49f85b06644 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortSortableIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortSortableIT.java @@ -75,7 +75,7 @@ void sortable_default_use( SimpleMappedIndex sortableYesIndex, SimpleMappedIndex sortableNoIndex, FieldTypeDescriptor fieldType) { - SearchSortFactory f = sortableDefaultIndex.createScope().sort(); + SearchSortFactory f = sortableDefaultIndex.createScope().sort(); String fieldPath = sortableDefaultIndex.binding().field.get( fieldType ).relativeFieldName; @@ -94,7 +94,7 @@ void sortable_no_use( SimpleMappedIndex sortableYesIndex, SimpleMappedIndex sortableNoIndex, FieldTypeDescriptor fieldType) { - SearchSortFactory f = sortableNoIndex.createScope().sort(); + SearchSortFactory f = sortableNoIndex.createScope().sort(); String fieldPath = sortableNoIndex.binding().field.get( fieldType ).relativeFieldName; @@ -114,7 +114,7 @@ void multiIndex_incompatibleSortable( SimpleMappedIndex sortableYesIndex, SimpleMappedIndex sortableNoIndex, FieldTypeDescriptor fieldType) { - SearchSortFactory f = sortableYesIndex.createScope( sortableNoIndex ).sort(); + SearchSortFactory f = sortableYesIndex.createScope( sortableNoIndex ).sort(); String fieldPath = sortableYesIndex.binding().field.get( fieldType ).relativeFieldName; @@ -126,7 +126,7 @@ void multiIndex_incompatibleSortable( ); } - protected abstract void trySort(SearchSortFactory f, String fieldPath, + protected abstract void trySort(SearchSortFactory f, String fieldPath, FieldTypeDescriptor fieldType); protected abstract String sortTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortUnsupportedTypesIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortUnsupportedTypesIT.java index d4555449b54..a2c90a7a891 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortUnsupportedTypesIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/AbstractSortUnsupportedTypesIT.java @@ -50,7 +50,7 @@ void use(SimpleMappedIndex index, FieldTypeDescriptor fieldT ); } - protected abstract void trySort(SearchSortFactory f, String fieldPath); + protected abstract void trySort(SearchSortFactory f, String fieldPath); protected abstract String sortTrait(); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/CompositeSortIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/CompositeSortIT.java index c96930c4ee8..b544cf686a4 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/CompositeSortIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/CompositeSortIT.java @@ -270,12 +270,12 @@ void then_flattened_nested_filterByPredicate() { } private SearchQuery simpleQuery( - Function sortContributor) { + Function, ? extends SortFinalStep> sortContributor) { return simpleQuery( index.createScope(), sortContributor ); } private SearchQuery simpleQuery(StubMappingScope scope, - Function sortContributor) { + Function, ? extends SortFinalStep> sortContributor) { return scope.query() .where( f -> f.matchAll() ) .sort( sortContributor ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortBaseIT.java index 2b658c953f7..d155c505b2c 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortBaseIT.java @@ -70,7 +70,7 @@ public InvalidFieldConfigured() { } @Override - protected void trySort(SearchSortFactory f, String fieldPath) { + protected void trySort(SearchSortFactory f, String fieldPath) { f.distance( fieldPath, GeoPoint.of( 0.0, 0.0 ) ); } @@ -102,7 +102,7 @@ public static List params() { } @Override - protected void trySort(SearchSortFactory f, String fieldPath) { + protected void trySort(SearchSortFactory f, String fieldPath) { f.distance( fieldPath, GeoPoint.of( 0.0, 0.0 ) ); } @@ -210,7 +210,7 @@ void multiIndex_incompatibleSortable(SimpleMappedIndex fieldType) { + protected void trySort(SearchSortFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.distance( fieldPath, GeoPoint.of( 0.0, 0.0 ) ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortDynamicFieldIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortDynamicFieldIT.java index b51fda3251e..13d5efe80d1 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortDynamicFieldIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortDynamicFieldIT.java @@ -123,17 +123,17 @@ void neverPopulatedParameter() { } private SearchQuery matchNonEmptyQuery( - Function sortContributor) { + Function, ? extends SortFinalStep> sortContributor) { return matchNonEmptyQuery( sortContributor, mainIndex.createScope(), null, null ); } private SearchQuery matchNonEmptyQuery( - Function sortContributor, String parameter, Object value) { + Function, ? extends SortFinalStep> sortContributor, String parameter, Object value) { return matchNonEmptyQuery( sortContributor, mainIndex.createScope(), parameter, value ); } private SearchQuery matchNonEmptyQuery( - Function sortContributor, StubMappingScope scope, + Function, ? extends SortFinalStep> sortContributor, StubMappingScope scope, String parameter, Object value) { if ( parameter == null ) { return scope.query() diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortFilteringSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortFilteringSpecificsIT.java index cd88ea2f749..584582bd829 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortFilteringSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortFilteringSpecificsIT.java @@ -96,12 +96,12 @@ void invalidNestedPath_sibling() { } private SearchQuery matchAllQuery( - Function sortContributor) { + Function, ? extends SortFinalStep> sortContributor) { return matchAllQuery( sortContributor, index.createScope() ); } private SearchQuery matchAllQuery( - Function sortContributor, StubMappingScope scope) { + Function, ? extends SortFinalStep> sortContributor, StubMappingScope scope) { return scope.query() .where( f -> f.matchAll() ) .sort( sortContributor ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortSpecificsIT.java index 2f70f1d29e6..de484d0886a 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortSpecificsIT.java @@ -478,11 +478,11 @@ void factoryWithRoot(TestedFieldStructure fieldStructure, SortMode sortMode, assertThatQuery( index.query() .where( f -> f.matchAll() ) .routing( dataSet.routingKey ) - .sort( ( (Function>) f -> f.withRoot( parentObjectBinding.absolutePath ) + .sort( ( (Function, + DistanceSortOptionsStep>) f -> f.withRoot( parentObjectBinding.absolutePath ) .distance( parentObjectBinding.getRelativeFieldName( fieldStructure, fieldType ), CENTER_POINT ) ) - .andThen( (DistanceSortOptionsStep optionsStep1) -> applySortMode( optionsStep1, sortMode + .andThen( (DistanceSortOptionsStep optionsStep1) -> applySortMode( optionsStep1, sortMode ) ) // Don't call this.applyFilter: we need to use the relative name of the discriminator field. .andThen( optionsStep -> { @@ -550,7 +550,7 @@ private boolean isSum(SortMode sortMode) { } private SearchQuery simpleQuery(DataSet dataSet, - Function> sortContributor, + Function, ? extends DistanceSortOptionsStep> sortContributor, SortMode sortMode, TestedFieldStructure fieldStructure) { return index.query() .where( f -> f.matchAll() ) @@ -560,7 +560,7 @@ private SearchQuery simpleQuery(DataSet dataSet, .toQuery(); } - private DistanceSortOptionsStep applySortMode(DistanceSortOptionsStep optionsStep, SortMode sortMode) { + private DistanceSortOptionsStep applySortMode(DistanceSortOptionsStep optionsStep, SortMode sortMode) { if ( sortMode != null ) { return optionsStep.mode( sortMode ); } @@ -569,7 +569,7 @@ private SearchQuery simpleQuery(DataSet dataSet, } } - private DistanceSortOptionsStep applyFilter(DistanceSortOptionsStep optionsStep, + private DistanceSortOptionsStep applyFilter(DistanceSortOptionsStep optionsStep, TestedFieldStructure fieldStructure) { if ( fieldStructure.isInNested() ) { return optionsStep.filter( f -> f.match() diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortTypeCheckingAndConversionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortTypeCheckingAndConversionIT.java index 6d5209ef1ee..914ef53a04a 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortTypeCheckingAndConversionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/DistanceSortTypeCheckingAndConversionIT.java @@ -208,7 +208,7 @@ void multiIndex_withIncompatibleIndex() { } private SearchQuery matchAllQuery( - Function sortContributor, StubMappingScope scope) { + Function, ? extends SortFinalStep> sortContributor, StubMappingScope scope) { return scope.query() .where( f -> f.matchAll() ) .sort( sortContributor ) @@ -216,7 +216,7 @@ private SearchQuery matchAllQuery( } private SearchQuery matchNonEmptyQuery( - Function sortContributor, StubMappingScope scope) { + Function, ? extends SortFinalStep> sortContributor, StubMappingScope scope) { return scope.query() .where( f -> f.matchAll().except( f.id().matching( EMPTY ) ) ) .sort( sortContributor ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortBaseIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortBaseIT.java index a58796caace..619f047081b 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortBaseIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortBaseIT.java @@ -64,7 +64,7 @@ public InvalidFieldConfigured() { } @Override - protected void trySort(SearchSortFactory f, String fieldPath) { + protected void trySort(SearchSortFactory f, String fieldPath) { f.field( fieldPath ); } @@ -96,7 +96,7 @@ public static List params() { } @Override - protected void trySort(SearchSortFactory f, String fieldPath) { + protected void trySort(SearchSortFactory f, String fieldPath) { f.field( fieldPath ); } @@ -135,7 +135,7 @@ public static List params() { } @Override - protected void trySort(SearchSortFactory f, String fieldPath, FieldTypeDescriptor fieldType) { + protected void trySort(SearchSortFactory f, String fieldPath, FieldTypeDescriptor fieldType) { f.field( fieldPath ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortDynamicFieldIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortDynamicFieldIT.java index e81a3b31c41..dcacf0b2285 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortDynamicFieldIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortDynamicFieldIT.java @@ -114,12 +114,12 @@ void neverPopulated(FieldTypeDescriptor fieldTypeDescriptor) { } private SearchQuery matchNonEmptyQuery( - Function sortContributor) { + Function, ? extends SortFinalStep> sortContributor) { return matchNonEmptyQuery( sortContributor, mainIndex.createScope() ); } private SearchQuery matchNonEmptyQuery( - Function sortContributor, StubMappingScope scope) { + Function, ? extends SortFinalStep> sortContributor, StubMappingScope scope) { return scope.query() .where( f -> f.matchAll().except( f.id().matching( EMPTY ) ) ) .sort( sortContributor ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortFilteringSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortFilteringSpecificsIT.java index f0a33b76a93..29158c1a27c 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortFilteringSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortFilteringSpecificsIT.java @@ -120,12 +120,12 @@ void invalidNestedPath_sibling(FieldTypeDescriptor fieldTypeDescriptor) { } private SearchQuery matchAllQuery( - Function sortContributor) { + Function, ? extends SortFinalStep> sortContributor) { return matchAllQuery( sortContributor, index.createScope() ); } private SearchQuery matchAllQuery( - Function sortContributor, StubMappingScope scope) { + Function, ? extends SortFinalStep> sortContributor, StubMappingScope scope) { return scope.query() .where( f -> f.matchAll() ) .sort( sortContributor ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortSpecificsIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortSpecificsIT.java index fa8afa1f4a0..738c29f0e4a 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortSpecificsIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortSpecificsIT.java @@ -493,10 +493,10 @@ void factoryWithRoot(TestedFieldStructure fieldStructure, dataSet.emptyDoc1Id, dataSet.emptyDoc2Id, dataSet.emptyDoc3Id, dataSet.emptyDoc4Id ) ) ) ) .routing( dataSet.routingKey ) - .sort( ( (Function>) f -> f.withRoot( parentObjectBinding.absolutePath ) + .sort( ( (Function, + FieldSortOptionsStep>) f -> f.withRoot( parentObjectBinding.absolutePath ) .field( parentObjectBinding.getRelativeFieldName( fieldStructure, fieldType ) ) ) - .andThen( (FieldSortOptionsStep optionsStep1) -> applySortMode( optionsStep1, sortMode ) ) + .andThen( (FieldSortOptionsStep optionsStep1) -> applySortMode( optionsStep1, sortMode ) ) // Don't call this.applyFilter: we need to use the relative name of the discriminator field. .andThen( optionsStep -> { if ( fieldStructure.isInNested() ) { @@ -587,13 +587,14 @@ void missingValue_multipleOptionsSameTime(TestedFieldStructure fieldStructure, } private SearchQuery matchNonEmptyQuery(DataSet dataSet, - Function> sortContributor, + Function, ? extends FieldSortOptionsStep> sortContributor, SortMode sortMode, TestedFieldStructure fieldStructure) { return matchNonEmptyQuery( dataSet, sortContributor, index.createScope(), sortMode, fieldStructure ); } private SearchQuery matchNonEmptyQuery(DataSet dataSet, - Function> sortContributor, StubMappingScope scope, + Function, ? extends FieldSortOptionsStep> sortContributor, + StubMappingScope scope, SortMode sortMode, TestedFieldStructure fieldStructure) { return query( dataSet, @@ -609,13 +610,14 @@ private SearchQuery matchNonEmptyQuery(DataSet dataSet, } private SearchQuery matchNonEmptyAndEmpty1Query(DataSet dataSet, - Function> sortContributor, + Function, ? extends FieldSortOptionsStep> sortContributor, SortMode sortMode, TestedFieldStructure fieldStructure) { return matchNonEmptyAndEmpty1Query( dataSet, sortContributor, index.createScope(), sortMode, fieldStructure ); } private SearchQuery matchNonEmptyAndEmpty1Query(DataSet dataSet, - Function> sortContributor, StubMappingScope scope, + Function, ? extends FieldSortOptionsStep> sortContributor, + StubMappingScope scope, SortMode sortMode, TestedFieldStructure fieldStructure) { return query( dataSet, @@ -629,20 +631,21 @@ private SearchQuery matchNonEmptyAndEmpty1Query(DataSet da } private SearchQuery matchAllQuery(DataSet dataSet, - Function> sortContributor, + Function, ? extends FieldSortOptionsStep> sortContributor, SortMode sortMode, TestedFieldStructure fieldStructure) { return matchAllQuery( dataSet, sortContributor, index.createScope(), sortMode, fieldStructure ); } private SearchQuery matchAllQuery(DataSet dataSet, - Function> sortContributor, StubMappingScope scope, + Function, ? extends FieldSortOptionsStep> sortContributor, + StubMappingScope scope, SortMode sortMode, TestedFieldStructure fieldStructure) { return query( dataSet, f -> f.matchAll(), sortContributor, scope, sortMode, fieldStructure ); } private SearchQuery query(DataSet dataSet, - Function predicateContributor, - Function> sortContributor, + Function, ? extends PredicateFinalStep> predicateContributor, + Function, ? extends FieldSortOptionsStep> sortContributor, StubMappingScope scope, SortMode sortMode, TestedFieldStructure fieldStructure) { return scope.query() .where( predicateContributor ) @@ -652,7 +655,7 @@ private SearchQuery query(DataSet dataSet, .toQuery(); } - private FieldSortOptionsStep applySortMode(FieldSortOptionsStep optionsStep, SortMode sortMode) { + private FieldSortOptionsStep applySortMode(FieldSortOptionsStep optionsStep, SortMode sortMode) { if ( sortMode != null ) { return optionsStep.mode( sortMode ); } @@ -661,7 +664,7 @@ private SearchQuery query(DataSet dataSet, } } - private FieldSortOptionsStep applyFilter(FieldSortOptionsStep optionsStep, + private FieldSortOptionsStep applyFilter(FieldSortOptionsStep optionsStep, TestedFieldStructure fieldStructure) { if ( fieldStructure.isInNested() ) { return optionsStep.filter( f -> f.match() diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortTypeCheckingAndConversionIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortTypeCheckingAndConversionIT.java index 293fa051afb..bac73b60be3 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortTypeCheckingAndConversionIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/FieldSortTypeCheckingAndConversionIT.java @@ -531,12 +531,12 @@ void multiIndex_withIncompatibleIndex_dslConverterDisabled(StandardFieldTypeDesc } private SearchQuery matchAllQuery( - Function sortContributor) { + Function, ? extends SortFinalStep> sortContributor) { return matchAllQuery( sortContributor, mainIndex.createScope() ); } private SearchQuery matchAllQuery( - Function sortContributor, StubMappingScope scope) { + Function, ? extends SortFinalStep> sortContributor, StubMappingScope scope) { return scope.query() .where( f -> f.matchAll() ) .sort( sortContributor ) @@ -544,7 +544,7 @@ private SearchQuery matchAllQuery( } private SearchQuery matchNonEmptyQuery( - Function sortContributor, StubMappingScope scope) { + Function, ? extends SortFinalStep> sortContributor, StubMappingScope scope) { return scope.query() .where( f -> f.matchAll().except( f.id().matching( EMPTY ) ) ) .sort( sortContributor ) diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/SearchSortIT.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/SearchSortIT.java index af98fe13772..e3c7fe690a0 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/SearchSortIT.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/search/sort/SearchSortIT.java @@ -81,7 +81,7 @@ void setup() { } private SearchQuery simpleQuery( - Function sortContributor) { + Function, ? extends SortFinalStep> sortContributor) { StubMappingScope scope = mainIndex.createScope(); return scope.query() .where( f -> f.matchAll() ) @@ -349,19 +349,19 @@ void extension() { // Mandatory extension, supported query = simpleQuery( c -> c - .extension( new SupportedExtension() ).extendedSort( "string" ).missing().last() + .extension( new SupportedExtension<>() ).extendedSort( "string" ).missing().last() ); assertThatQuery( query ) .hasDocRefHitsAnyOrder( mainIndex.typeName(), FIRST_ID, SECOND_ID, THIRD_ID, EMPTY_ID ); query = simpleQuery( b -> b - .extension( new SupportedExtension() ).extendedSort( "string" ).desc().missing().last() + .extension( new SupportedExtension<>() ).extendedSort( "string" ).desc().missing().last() ); assertThatQuery( query ) .hasDocRefHitsAnyOrder( mainIndex.typeName(), THIRD_ID, SECOND_ID, FIRST_ID, EMPTY_ID ); // Mandatory extension, unsupported assertThatThrownBy( - () -> mainIndex.createScope().sort().extension( new UnSupportedExtension() ) + () -> mainIndex.createScope().sort().extension( new UnSupportedExtension<>() ) ) .isInstanceOf( SearchException.class ); @@ -369,11 +369,11 @@ void extension() { query = simpleQuery( b -> b .extension() .ifSupported( - new SupportedExtension(), + new SupportedExtension<>(), c -> c.extendedSort( "string" ).missing().last() ) .ifSupported( - new SupportedExtension(), + new SupportedExtension<>(), ignored -> fail( "This should not be called" ) ) .orElseFail() @@ -383,11 +383,11 @@ void extension() { query = simpleQuery( b -> b .extension() .ifSupported( - new SupportedExtension(), + new SupportedExtension<>(), c -> c.extendedSort( "string" ).desc().missing().last() ) .ifSupported( - new SupportedExtension(), + new SupportedExtension<>(), ignored -> fail( "This should not be called" ) ) .orElseFail() @@ -399,11 +399,11 @@ void extension() { query = simpleQuery( b -> b .extension() .ifSupported( - new UnSupportedExtension(), + new UnSupportedExtension<>(), ignored -> fail( "This should not be called" ) ) .ifSupported( - new SupportedExtension(), + new SupportedExtension<>(), c -> c.extendedSort( "string" ).missing().last() ) .orElse( ignored -> fail( "This should not be called" ) ) @@ -413,11 +413,11 @@ void extension() { query = simpleQuery( b -> b .extension() .ifSupported( - new UnSupportedExtension(), + new UnSupportedExtension<>(), ignored -> fail( "This should not be called" ) ) .ifSupported( - new SupportedExtension(), + new SupportedExtension<>(), c -> c.extendedSort( "string" ).desc().missing().last() ) .orElse( ignored -> fail( "This should not be called" ) ) @@ -429,11 +429,11 @@ void extension() { query = simpleQuery( b -> b .extension() .ifSupported( - new UnSupportedExtension(), + new UnSupportedExtension<>(), ignored -> fail( "This should not be called" ) ) .ifSupported( - new UnSupportedExtension(), + new UnSupportedExtension<>(), ignored -> fail( "This should not be called" ) ) .orElse( @@ -445,11 +445,11 @@ void extension() { query = simpleQuery( b -> b .extension() .ifSupported( - new UnSupportedExtension(), + new UnSupportedExtension<>(), ignored -> fail( "This should not be called" ) ) .ifSupported( - new UnSupportedExtension(), + new UnSupportedExtension<>(), ignored -> fail( "This should not be called" ) ) .orElse( @@ -554,30 +554,30 @@ private static class ObjectFieldBinding { } } - private static class SupportedExtension implements SearchSortFactoryExtension { + private static class SupportedExtension implements SearchSortFactoryExtension> { @Override - public Optional extendOptional(SearchSortFactory original) { + public Optional> extendOptional(SearchSortFactory original) { assertThat( original ).isNotNull(); - return Optional.of( new MyExtendedFactory( original ) ); + return Optional.of( new MyExtendedFactory<>( original ) ); } } - private static class UnSupportedExtension implements SearchSortFactoryExtension { + private static class UnSupportedExtension implements SearchSortFactoryExtension> { @Override - public Optional extendOptional(SearchSortFactory original) { + public Optional> extendOptional(SearchSortFactory original) { assertThat( original ).isNotNull(); return Optional.empty(); } } - private static class MyExtendedFactory { - private final SearchSortFactory delegate; + private static class MyExtendedFactory { + private final SearchSortFactory delegate; - MyExtendedFactory(SearchSortFactory delegate) { + MyExtendedFactory(SearchSortFactory delegate) { this.delegate = delegate; } - public FieldSortOptionsStep extendedSort(String absoluteFieldPath) { + public FieldSortOptionsStep> extendedSort(String absoluteFieldPath) { return delegate.field( absoluteFieldPath ); } } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/RangeAggregationDescriptor.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/RangeAggregationDescriptor.java index 9ef7686be69..fb1ce8d3ca5 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/RangeAggregationDescriptor.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/RangeAggregationDescriptor.java @@ -137,10 +137,10 @@ private AggregationScenario, Long>> doCreate(Map, Long return new AggregationScenario, Long>>() { @Override - public AggregationFinalStep, Long>> setup(SearchAggregationFactory factory, + public AggregationFinalStep, Long>> setup(SearchAggregationFactory factory, String fieldPath, - Function filterOrNull) { - RangeAggregationOptionsStep, Long>> optionsStep = + Function, ? extends PredicateFinalStep> filterOrNull) { + RangeAggregationOptionsStep, Long>> optionsStep = factory.range().field( fieldPath, helper.getJavaClass() ) .range( helper.create( ascendingValues.get( 0 ) ), helper.create( ascendingValues.get( 2 ) ) ) @@ -157,7 +157,8 @@ public AggregationFinalStep, Long>> setup(SearchAggregationFactory } @Override - public AggregationFinalStep, Long>> setupWithConverterSetting(SearchAggregationFactory factory, + public AggregationFinalStep, Long>> setupWithConverterSetting( + SearchAggregationFactory factory, String fieldPath, ValueModel valueModel) { return factory.range().field( fieldPath, helper.getJavaClass(), valueModel ) .range( helper.create( ascendingValues.get( 0 ) ), @@ -198,7 +199,7 @@ public String aggregationName() { } @Override - public void trySetup(SearchAggregationFactory factory, String fieldPath) { + public void trySetup(SearchAggregationFactory factory, String fieldPath) { factory.range().field( fieldPath, typeDescriptor.getJavaType() ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/TermsAggregationDescriptor.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/TermsAggregationDescriptor.java index 7268cf83749..75f6770c132 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/TermsAggregationDescriptor.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/TermsAggregationDescriptor.java @@ -137,9 +137,9 @@ private AggregationScenario> doCreate(Map expectedResu TypeAssertionHelper helper) { return new AggregationScenario>() { @Override - public AggregationFinalStep> setup(SearchAggregationFactory factory, String fieldPath, - Function filterOrNull) { - TermsAggregationOptionsStep> optionsStep = + public AggregationFinalStep> setup(SearchAggregationFactory factory, String fieldPath, + Function, ? extends PredicateFinalStep> filterOrNull) { + TermsAggregationOptionsStep> optionsStep = factory.terms().field( fieldPath, helper.getJavaClass() ); if ( filterOrNull == null ) { return optionsStep; @@ -150,7 +150,7 @@ public AggregationFinalStep> setup(SearchAggregationFactory factory } @Override - public AggregationFinalStep> setupWithConverterSetting(SearchAggregationFactory factory, + public AggregationFinalStep> setupWithConverterSetting(SearchAggregationFactory factory, String fieldPath, ValueModel valueModel) { return factory.terms().field( fieldPath, helper.getJavaClass(), valueModel ); } @@ -199,7 +199,7 @@ public String aggregationName() { } @Override - public void trySetup(SearchAggregationFactory factory, String fieldPath) { + public void trySetup(SearchAggregationFactory factory, String fieldPath) { factory.terms().field( fieldPath, typeDescriptor.getJavaType() ); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/expectations/AggregationScenario.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/expectations/AggregationScenario.java index 2c28a0485c0..fa576fcca96 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/expectations/AggregationScenario.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/expectations/AggregationScenario.java @@ -14,14 +14,14 @@ public interface AggregationScenario { - default AggregationFinalStep setup(SearchAggregationFactory factory, String fieldPath) { + default AggregationFinalStep setup(SearchAggregationFactory factory, String fieldPath) { return setup( factory, fieldPath, null ); } - AggregationFinalStep setup(SearchAggregationFactory factory, String fieldPath, - Function filterOrNull); + AggregationFinalStep setup(SearchAggregationFactory factory, String fieldPath, + Function, ? extends PredicateFinalStep> filterOrNull); - AggregationFinalStep setupWithConverterSetting(SearchAggregationFactory factory, String fieldPath, + AggregationFinalStep setupWithConverterSetting(SearchAggregationFactory factory, String fieldPath, ValueModel valueModel); void check(A aggregationResult); diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/expectations/UnsupportedSingleFieldAggregationExpectations.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/expectations/UnsupportedSingleFieldAggregationExpectations.java index fd3eda673a7..42dbd2a487d 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/expectations/UnsupportedSingleFieldAggregationExpectations.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/expectations/UnsupportedSingleFieldAggregationExpectations.java @@ -10,6 +10,6 @@ public interface UnsupportedSingleFieldAggregationExpectations { String aggregationName(); - void trySetup(SearchAggregationFactory factory, String fieldPath); + void trySetup(SearchAggregationFactory factory, String fieldPath); } diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/util/TckBackendHelper.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/util/TckBackendHelper.java index 928f00764aa..a235272b817 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/util/TckBackendHelper.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/util/TckBackendHelper.java @@ -44,8 +44,12 @@ public interface TckBackendHelper { * @param f A {@link SearchPredicateFactory} * @return A slow predicate, i.e. a predicate whose execution will take more than 10 milliseconds per document. */ - PredicateFinalStep createSlowPredicate(SearchPredicateFactory f); + PredicateFinalStep createSlowPredicate(SearchPredicateFactory f); - SearchQueryDslExtension, R, E, LOS> queryDslExtension(); + SearchQueryDslExtension, + R, + E, + LOS> queryDslExtension(); } diff --git a/integrationtest/mapper/orm-realbackend/src/test/java/org/hibernate/search/integrationtest/mapper/orm/realbackend/multitenant/RealBackendDatabaseMultitenancyIT.java b/integrationtest/mapper/orm-realbackend/src/test/java/org/hibernate/search/integrationtest/mapper/orm/realbackend/multitenant/RealBackendDatabaseMultitenancyIT.java index 23fbc21def1..2cf8f21be10 100644 --- a/integrationtest/mapper/orm-realbackend/src/test/java/org/hibernate/search/integrationtest/mapper/orm/realbackend/multitenant/RealBackendDatabaseMultitenancyIT.java +++ b/integrationtest/mapper/orm-realbackend/src/test/java/org/hibernate/search/integrationtest/mapper/orm/realbackend/multitenant/RealBackendDatabaseMultitenancyIT.java @@ -206,7 +206,7 @@ private void checkMultitenancy(SessionFactory sessionFactory, BiConsumer scope = searchMapping.scope( Object.class ); + SearchScope scope = searchMapping.scope( Object.class ); // aws-serverless does not support purge, so we'll just drop the entire index here: scope.schemaManager().dropAndCreate(); diff --git a/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/dynamicmap/DynamicMapBaseIT.java b/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/dynamicmap/DynamicMapBaseIT.java index 4d9f23e3668..b4fdfa2ef78 100644 --- a/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/dynamicmap/DynamicMapBaseIT.java +++ b/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/dynamicmap/DynamicMapBaseIT.java @@ -259,7 +259,7 @@ void massIndexing(boolean jpaCompliance) { with( sessionFactory ).runNoTransaction( session -> { SearchSession searchSession = Search.session( session ); - SearchScope scope = searchSession.scope( Map.class, entityTypeName ); + SearchScope scope = searchSession.scope( Map.class, entityTypeName ); backendMock.expectIndexScaleWorks( INDEX1_NAME ) .purge() diff --git a/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/mapping/SearchMappingIT.java b/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/mapping/SearchMappingIT.java index 47cffb49b16..0a270ab8ae2 100644 --- a/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/mapping/SearchMappingIT.java +++ b/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/mapping/SearchMappingIT.java @@ -180,7 +180,7 @@ void allIndexedEntities() { @Test @TestForIssue(jiraKey = "HSEARCH-3994") void scope_indexedEntities() { - SearchScope objectScope = mapping.scope( Object.class ); + SearchScope objectScope = mapping.scope( Object.class ); Set> objectEntities = objectScope.includedTypes(); assertThat( objectEntities ) .extracting( SearchIndexedEntity::jpaName ) @@ -189,7 +189,7 @@ void scope_indexedEntities() { Pet.JPA_ENTITY_NAME ); - SearchScope personScope = mapping.scope( Person.class ); + SearchScope personScope = mapping.scope( Person.class ); Set> personEntities = personScope.includedTypes(); assertThat( personEntities ) .extracting( SearchIndexedEntity::jpaName ) @@ -197,7 +197,7 @@ void scope_indexedEntities() { Person.JPA_ENTITY_NAME ); - SearchScope petScope = mapping.scope( Pet.class ); + SearchScope petScope = mapping.scope( Pet.class ); Set> petEntities = petScope.includedTypes(); assertThat( petEntities ) .extracting( SearchIndexedEntity::jpaName ) diff --git a/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/search/SearchQueryBaseIT.java b/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/search/SearchQueryBaseIT.java index cc7999333f3..bc0f89a2fef 100644 --- a/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/search/SearchQueryBaseIT.java +++ b/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/search/SearchQueryBaseIT.java @@ -410,7 +410,7 @@ void select_searchProjection_single() { with( sessionFactory ).runInTransaction( session -> { SearchSession searchSession = Search.session( session ); - SearchScope scope = searchSession.scope( Book.class ); + SearchScope scope = searchSession.scope( Book.class ); SearchQuery query = searchSession.search( scope ) .select( @@ -442,7 +442,7 @@ void select_searchProjection_multiple() { with( sessionFactory ).runInTransaction( session -> { SearchSession searchSession = Search.session( session ); - SearchScope scope = searchSession.scope( Book.class ); + SearchScope scope = searchSession.scope( Book.class ); SearchQuery> query = searchSession.search( scope ) .select( @@ -602,7 +602,7 @@ void select_compositeAndLoading() { @TestForIssue(jiraKey = "HSEARCH-3671") void componentsFromMappingWithoutSession() { SearchMapping mapping = Search.mapping( sessionFactory ); - SearchScope scope = mapping.scope( Book.class ); + SearchScope scope = mapping.scope( Book.class ); /* * The backend is a stub, so these components are stub too: @@ -659,7 +659,7 @@ void select_searchProjection_entityReference() { with( sessionFactory ).runInTransaction( session -> { SearchSession searchSession = Search.session( session ); - SearchScope scope = searchSession.scope( Book.class ); + SearchScope scope = searchSession.scope( Book.class ); SearchQuery query = searchSession.search( scope ) .select( f -> f.entityReference() ) @@ -690,7 +690,7 @@ void select_searchProjection_entityReference_deprecatedEntityReferenceType() { with( sessionFactory ).runInTransaction( session -> { SearchSession searchSession = Search.session( session ); - SearchScope scope = searchSession.scope( Book.class ); + SearchScope scope = searchSession.scope( Book.class ); SearchQuery query = searchSession.search( scope ) .select( f -> f.entityReference() ) diff --git a/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/search/loading/AbstractSearchQueryEntityLoadingIT.java b/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/search/loading/AbstractSearchQueryEntityLoadingIT.java index d71bf1a2f2d..e4ce5fdbfca 100644 --- a/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/search/loading/AbstractSearchQueryEntityLoadingIT.java +++ b/integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/search/loading/AbstractSearchQueryEntityLoadingIT.java @@ -66,7 +66,7 @@ protected final void testLoading( SearchSession searchSession = Search.session( session ); - SearchQueryOptionsStep optionsStep = searchSession.search( targetClasses ) + SearchQueryOptionsStep optionsStep = searchSession.search( targetClasses ) .where( f -> f.matchAll() ) .loading( loadingOptionsContributor ); diff --git a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/SearchMappingIT.java b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/SearchMappingIT.java index b3436529e68..8f1d3cd6667 100644 --- a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/SearchMappingIT.java +++ b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/SearchMappingIT.java @@ -174,7 +174,7 @@ void allIndexedEntities() { @Test @TestForIssue(jiraKey = "HSEARCH-3994") void scope_indexedEntities() { - SearchScope objectScope = mapping.scope( Object.class ); + SearchScope objectScope = mapping.scope( Object.class ); Set> objectEntities = objectScope.includedTypes(); assertThat( objectEntities ) .extracting( SearchIndexedEntity::name ) @@ -183,7 +183,7 @@ void scope_indexedEntities() { Pet.ENTITY_NAME ); - SearchScope personScope = mapping.scope( Person.class ); + SearchScope personScope = mapping.scope( Person.class ); Set> personEntities = personScope.includedTypes(); assertThat( personEntities ) .extracting( SearchIndexedEntity::name ) @@ -191,7 +191,7 @@ void scope_indexedEntities() { Person.ENTITY_NAME ); - SearchScope petScope = mapping.scope( Pet.class ); + SearchScope petScope = mapping.scope( Pet.class ); Set> petEntities = petScope.includedTypes(); assertThat( petEntities ) .extracting( SearchIndexedEntity::name ) diff --git a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/annotation/processing/CustomConstructorMappingAnnotationBaseIT.java b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/annotation/processing/CustomConstructorMappingAnnotationBaseIT.java index ba11d6f41c3..891ea66a4ce 100644 --- a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/annotation/processing/CustomConstructorMappingAnnotationBaseIT.java +++ b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/annotation/processing/CustomConstructorMappingAnnotationBaseIT.java @@ -59,7 +59,7 @@ class CustomConstructorMappingAnnotationBaseIT { @RegisterExtension public StaticCounters counters = StaticCounters.create(); - protected final ProjectionFinalStep dummyProjectionForEnclosingClassInstance(SearchProjectionFactory f) { + protected final ProjectionFinalStep dummyProjectionForEnclosingClassInstance(SearchProjectionFactory f) { return f.constant( null ); } @@ -96,7 +96,7 @@ public MyProjection(String text) { backendMock.expectSearchProjection( INDEX_NAME, b -> { - SearchProjectionFactory f = mapping.scope( IndexedEntity.class ).projection(); + SearchProjectionFactory f = mapping.scope( IndexedEntity.class ).projection(); b.projection( f.composite() .from( dummyProjectionForEnclosingClassInstance( f ), diff --git a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/annotation/processing/CustomMethodParameterMappingAnnotationBaseIT.java b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/annotation/processing/CustomMethodParameterMappingAnnotationBaseIT.java index 8edac01dd09..a052c7f2baf 100644 --- a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/annotation/processing/CustomMethodParameterMappingAnnotationBaseIT.java +++ b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/annotation/processing/CustomMethodParameterMappingAnnotationBaseIT.java @@ -60,7 +60,7 @@ class CustomMethodParameterMappingAnnotationBaseIT { @RegisterExtension public StaticCounters counters = StaticCounters.create(); - protected final ProjectionFinalStep dummyProjectionForEnclosingClassInstance(SearchProjectionFactory f) { + protected final ProjectionFinalStep dummyProjectionForEnclosingClassInstance(SearchProjectionFactory f) { return f.constant( null ); } @@ -97,7 +97,7 @@ public MyProjection(@WorkingAnnotation String text) { backendMock.expectSearchProjection( INDEX_NAME, b -> { - SearchProjectionFactory f = mapping.scope( IndexedEntity.class ).projection(); + SearchProjectionFactory f = mapping.scope( IndexedEntity.class ).projection(); b.projection( f.composite() .from( dummyProjectionForEnclosingClassInstance( f ), diff --git a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/AbstractProjectionConstructorIT.java b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/AbstractProjectionConstructorIT.java index c73f982147f..c232ca649c7 100644 --- a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/AbstractProjectionConstructorIT.java +++ b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/AbstractProjectionConstructorIT.java @@ -25,7 +25,7 @@ public abstract class AbstractProjectionConstructorIT { @RegisterExtension public BackendMock backendMock = BackendMock.create(); - protected final ProjectionFinalStep dummyProjectionForEnclosingClassInstance(SearchProjectionFactory f) { + protected final ProjectionFinalStep dummyProjectionForEnclosingClassInstance(SearchProjectionFactory f) { return f.constant( null ); } @@ -53,7 +53,7 @@ protected final

void testSuccessfulRootProjectionExecutionOnly(SearchMapping protected final

void testSuccessfulRootProjection(SearchMapping mapping, Class indexedType, Class

projectionType, List rawProjectionResults, - Function, ProjectionFinalStep> expectedProjection, + Function, ProjectionFinalStep> expectedProjection, List

expectedProjectionResults) { try ( SearchSession session = createSession( mapping ) ) { backendMock.expectSearchProjection( diff --git a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/ProjectionConstructorProjectionBindingIT.java b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/ProjectionConstructorProjectionBindingIT.java index 46ef8be524a..dbfc136a2e0 100644 --- a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/ProjectionConstructorProjectionBindingIT.java +++ b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/ProjectionConstructorProjectionBindingIT.java @@ -50,7 +50,7 @@ class ProjectionConstructorProjectionBindingIT { public StandalonePojoMappingSetupHelper setupHelper = StandalonePojoMappingSetupHelper.withBackendMock( MethodHandles.lookup(), backendMock ); - protected final ProjectionFinalStep dummyProjectionForEnclosingClassInstance(SearchProjectionFactory f) { + protected final ProjectionFinalStep dummyProjectionForEnclosingClassInstance(SearchProjectionFactory f) { return f.constant( null ); } @@ -85,7 +85,7 @@ public MyProjection( backendMock.expectSearchProjection( INDEX_NAME, b -> { - SearchProjectionFactory f = mapping.scope( IndexedEntity.class ).projection(); + SearchProjectionFactory f = mapping.scope( IndexedEntity.class ).projection(); b.projection( f.composite() .from( dummyProjectionForEnclosingClassInstance( f ), @@ -182,7 +182,7 @@ public MyProjection(@ProjectionBinding(binder = @ProjectionBinderRef(type = Para backendMock.expectSearchProjection( INDEX_NAME, b -> { - SearchProjectionFactory f = mapping.scope( IndexedEntity.class ).projection(); + SearchProjectionFactory f = mapping.scope( IndexedEntity.class ).projection(); b.projection( f.composite() .from( dummyProjectionForEnclosingClassInstance( f ), @@ -313,7 +313,7 @@ public MyProjection(String text) { backendMock.expectSearchProjection( INDEX_NAME, b -> { - SearchProjectionFactory f = mapping.scope( IndexedEntity.class ).projection(); + SearchProjectionFactory f = mapping.scope( IndexedEntity.class ).projection(); b.projection( f.composite() .from( dummyProjectionForEnclosingClassInstance( f ), diff --git a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/search/loading/AbstractSearchQueryEntityLoadingIT.java b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/search/loading/AbstractSearchQueryEntityLoadingIT.java index 5a883f894ef..7661082e204 100644 --- a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/search/loading/AbstractSearchQueryEntityLoadingIT.java +++ b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/search/loading/AbstractSearchQueryEntityLoadingIT.java @@ -50,7 +50,7 @@ protected final void testLoading( try ( SearchSession searchSession = mapping().createSessionWithOptions() .loading( o -> o.context( StubLoadingContext.class, loadingContext ) ) .build() ) { - SearchQueryOptionsStep optionsStep = searchSession.search( targetClasses ) + SearchQueryOptionsStep optionsStep = searchSession.search( targetClasses ) .where( f -> f.matchAll() ); SearchQuery query = optionsStep diff --git a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/AnnotationMappingSmokeIT.java b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/AnnotationMappingSmokeIT.java index 3a60fb47905..9b977baa9e3 100644 --- a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/AnnotationMappingSmokeIT.java +++ b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/AnnotationMappingSmokeIT.java @@ -407,7 +407,7 @@ void search_singleElementProjection() { @Test void search_multipleElementsProjection() { - SearchScope scope = mapping.scope( + SearchScope scope = mapping.scope( Arrays.asList( IndexedEntity.class, YetAnotherIndexedEntity.class ) ); diff --git a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/ProgrammaticMappingSmokeIT.java b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/ProgrammaticMappingSmokeIT.java index f1bb3cc7852..b3d33b6aaef 100644 --- a/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/ProgrammaticMappingSmokeIT.java +++ b/integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/ProgrammaticMappingSmokeIT.java @@ -460,7 +460,7 @@ void search_singleElementProjection() { @Test void search_multipleElementsProjection() { - SearchScope scope = mapping.scope( + SearchScope scope = mapping.scope( Arrays.asList( IndexedEntity.class, YetAnotherIndexedEntity.class ) ); diff --git a/integrationtest/v5migrationhelper/engine/src/test/java/org/hibernate/search/testsupport/migration/V5MigrationStandalonePojoSearchScopeAdapter.java b/integrationtest/v5migrationhelper/engine/src/test/java/org/hibernate/search/testsupport/migration/V5MigrationStandalonePojoSearchScopeAdapter.java index a7934f8fd5c..0f1d58f8e5d 100644 --- a/integrationtest/v5migrationhelper/engine/src/test/java/org/hibernate/search/testsupport/migration/V5MigrationStandalonePojoSearchScopeAdapter.java +++ b/integrationtest/v5migrationhelper/engine/src/test/java/org/hibernate/search/testsupport/migration/V5MigrationStandalonePojoSearchScopeAdapter.java @@ -20,9 +20,9 @@ public class V5MigrationStandalonePojoSearchScopeAdapter implements V5MigrationSearchScope { - private final SearchScope delegate; + private final SearchScope delegate; - public V5MigrationStandalonePojoSearchScopeAdapter(SearchScope delegate) { + public V5MigrationStandalonePojoSearchScopeAdapter(SearchScope delegate) { this.delegate = delegate; } @@ -37,23 +37,23 @@ public Set indexManagers() { } @Override - public SearchPredicateFactory predicate() { + public SearchPredicateFactory predicate() { return delegate.predicate(); } @Override - public SearchSortFactory sort() { + public SearchSortFactory sort() { return delegate.sort(); } @Override - public SearchProjectionFactory projection() { + public SearchProjectionFactory projection() { return delegate.projection(); } @Override public SearchProjection idProjection() { - SearchProjectionFactory factory = delegate.projection(); + SearchProjectionFactory factory = delegate.projection(); // Not using factory.id() because that one throws an exception if IDs have inconsistent types. return factory.composite().from( factory.entityReference() ) .as( EntityReference::id ).toProjection(); @@ -61,13 +61,13 @@ public SearchProjection idProjection() { @Override public SearchProjection> objectClassProjection() { - SearchProjectionFactory factory = delegate.projection(); + SearchProjectionFactory factory = delegate.projection(); return factory.composite().from( factory.entityReference() ) .as( EntityReference::type ).toProjection(); } @Override - public SearchAggregationFactory aggregation() { + public SearchAggregationFactory aggregation() { return delegate.aggregation(); } diff --git a/integrationtest/v5migrationhelper/engine/src/test/java/org/hibernate/search/testsupport/migration/V5MigrationStandalonePojoSearchSessionAdapter.java b/integrationtest/v5migrationhelper/engine/src/test/java/org/hibernate/search/testsupport/migration/V5MigrationStandalonePojoSearchSessionAdapter.java index 4877479e849..beb8894b31d 100644 --- a/integrationtest/v5migrationhelper/engine/src/test/java/org/hibernate/search/testsupport/migration/V5MigrationStandalonePojoSearchSessionAdapter.java +++ b/integrationtest/v5migrationhelper/engine/src/test/java/org/hibernate/search/testsupport/migration/V5MigrationStandalonePojoSearchSessionAdapter.java @@ -18,7 +18,7 @@ public V5MigrationStandalonePojoSearchSessionAdapter(SearchSession delegate) { } @Override - public SearchQuerySelectStep search(V5MigrationSearchScope scope) { + public SearchQuerySelectStep search(V5MigrationSearchScope scope) { return delegate.search( ( (V5MigrationStandalonePojoSearchScopeAdapter) scope ).toSearchScope() ); } } diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/mapping/impl/HibernateOrmMapping.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/mapping/impl/HibernateOrmMapping.java index 966d700c4d4..04e3055aacd 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/mapping/impl/HibernateOrmMapping.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/mapping/impl/HibernateOrmMapping.java @@ -31,6 +31,7 @@ import org.hibernate.search.mapper.orm.automaticindexing.spi.AutomaticIndexingMappingContext; import org.hibernate.search.mapper.orm.automaticindexing.spi.AutomaticIndexingQueueEventProcessingPlan; import org.hibernate.search.mapper.orm.cfg.HibernateOrmMapperSettings; +import org.hibernate.search.mapper.orm.common.EntityReference; import org.hibernate.search.mapper.orm.common.impl.HibernateOrmUtils; import org.hibernate.search.mapper.orm.coordination.common.spi.CoordinationStrategy; import org.hibernate.search.mapper.orm.entity.SearchIndexedEntity; @@ -184,12 +185,12 @@ public CompletableFuture start(MappingStartContext context) { this ); - Optional> scopeOptional = createAllScope(); + Optional> scopeOptional = createAllScope(); if ( !scopeOptional.isPresent() ) { // No indexed type return CompletableFuture.completedFuture( null ); } - SearchScopeImpl scope = scopeOptional.get(); + SearchScopeImpl scope = scopeOptional.get(); this.tenancyConfiguration = TenancyConfiguration.create( context.beanResolver(), delegate().tenancyMode(), @@ -205,7 +206,7 @@ public CompletableFuture start(MappingStartContext context) { @Override public CompletableFuture preStop(MappingPreStopContext context) { - Optional> scope = createAllScope(); + Optional> scope = createAllScope(); if ( !scope.isPresent() ) { // No indexed type return CompletableFuture.completedFuture( null ); @@ -231,22 +232,22 @@ public BackendMappingHints hints() { } @Override - public SearchScopeImpl scope(Class clazz) { + public SearchScopeImpl scope(Class clazz) { return scope( Collections.singleton( clazz ) ); } @Override - public SearchScopeImpl scope(Class expectedSuperType, String entityName) { + public SearchScopeImpl scope(Class expectedSuperType, String entityName) { return scope( expectedSuperType, Collections.singleton( entityName ) ); } @Override - public SearchScopeImpl scope(Collection> classes) { + public SearchScopeImpl scope(Collection> classes) { return createScope( classes ); } @Override - public SearchScopeImpl scope(Class expectedSuperType, Collection entityNames) { + public SearchScopeImpl scope(Class expectedSuperType, Collection entityNames) { return createScope( expectedSuperType, entityNames ); } @@ -415,8 +416,9 @@ public HibernateOrmTypeContextContainer typeContextProvider() { } @Override - public SearchScopeImpl createScope(Collection> classes) { - PojoScopeDelegate SearchScopeImpl createScope(Collection> classes) { + PojoScopeDelegate> scopeDelegate = delegate().createPojoScopeForClasses( @@ -426,12 +428,13 @@ public SearchScopeImpl createScope(Collection( this, tenancyConfiguration, scopeDelegate ); + return new SearchScopeImpl( this, tenancyConfiguration, scopeDelegate ); } @Override - public SearchScopeImpl createScope(Class expectedSuperType, Collection entityNames) { - PojoScopeDelegate SearchScopeImpl createScope(Class expectedSuperType, Collection entityNames) { + PojoScopeDelegate> scopeDelegate = delegate().createPojoScopeForEntityNames( @@ -441,7 +444,7 @@ public SearchScopeImpl createScope(Class expectedSuperType, Collection ); // Explicit type parameter is necessary here for ECJ (Eclipse compiler) - return new SearchScopeImpl( this, tenancyConfiguration, scopeDelegate ); + return new SearchScopeImpl( this, tenancyConfiguration, scopeDelegate ); } @Override @@ -466,8 +469,8 @@ private SearchIntegration searchIntegration() { return integrationHandle.getOrFail(); } - private Optional> createAllScope() { - return delegate().> createAllScope() { + return delegate().>createPojoAllScope( this, typeContextContainer::indexedForExactType diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/HibernateOrmRootReferenceScope.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/HibernateOrmRootReferenceScope.java new file mode 100644 index 00000000000..d412d8b101e --- /dev/null +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/HibernateOrmRootReferenceScope.java @@ -0,0 +1,14 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.mapper.orm.scope; + +import org.hibernate.search.engine.search.reference.RootReferenceScope; +import org.hibernate.search.util.common.annotation.Incubating; + +@Incubating +public interface HibernateOrmRootReferenceScope extends RootReferenceScope { + + SearchScope scope(SearchScopeProvider scopeProvider); +} diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/SearchScope.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/SearchScope.java index 240c58f822a..d50adb3dfc6 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/SearchScope.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/SearchScope.java @@ -18,6 +18,7 @@ import org.hibernate.search.engine.search.query.dsl.SearchQuerySelectStep; import org.hibernate.search.engine.search.query.dsl.SearchQueryWhereStep; import org.hibernate.search.engine.search.sort.dsl.SearchSortFactory; +import org.hibernate.search.mapper.orm.common.EntityReference; import org.hibernate.search.mapper.orm.entity.SearchIndexedEntity; import org.hibernate.search.mapper.orm.massindexing.MassIndexer; import org.hibernate.search.mapper.orm.schema.management.SearchSchemaManager; @@ -36,7 +37,8 @@ * * @param A supertype of all types in this scope. */ -public interface SearchScope { +@SuppressWarnings("deprecation") +public interface SearchScope { /** * Initiate the building of a search predicate. @@ -52,7 +54,7 @@ public interface SearchScope { * @return A predicate factory. * @see SearchPredicateFactory */ - SearchPredicateFactory predicate(); + SearchPredicateFactory predicate(); /** * Initiate the building of a search sort. @@ -69,7 +71,7 @@ public interface SearchScope { * @return A sort factory. * @see SearchSortFactory */ - SearchSortFactory sort(); + SearchSortFactory sort(); /** * Initiate the building of a search projection that will be valid for the indexes in this scope. @@ -86,7 +88,7 @@ public interface SearchScope { * @see SearchProjectionFactory */ @SuppressWarnings("deprecation") - SearchProjectionFactory projection(); + SearchProjectionFactory projection(); /** * Initiate the building of a search aggregation that will be valid for the indexes in this scope. @@ -102,7 +104,7 @@ public interface SearchScope { * @return An aggregation factory. * @see SearchAggregationFactory */ - SearchAggregationFactory aggregation(); + SearchAggregationFactory aggregation(); /** * Create a {@link SearchSchemaManager} for the indexes mapped to types in this scope, or to any of their sub-types. diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/SearchScopeProvider.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/SearchScopeProvider.java index c74e5ef8c2a..afb23612937 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/SearchScopeProvider.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/SearchScopeProvider.java @@ -15,6 +15,7 @@ * @see org.hibernate.search.mapper.orm.mapping.SearchMapping * @see org.hibernate.search.mapper.orm.session.SearchSession */ +@SuppressWarnings("deprecation") public interface SearchScopeProvider { /** @@ -22,11 +23,12 @@ public interface SearchScopeProvider { * indexed entity types among the given class and its subtypes. * * @param clazz A class that must be an indexed entity type or a supertype of such type. + * @param Scope root type. * @param A supertype of all indexed entity types to include in the scope. * @return The created scope. * @see SearchScope */ - default SearchScope scope(Class clazz) { + default SearchScope scope(Class clazz) { return scope( Collections.singleton( clazz ) ); } @@ -36,11 +38,12 @@ default SearchScope scope(Class clazz) { * * @param classes A collection of classes. * Each must be an indexed entity type or a supertype of such type. + * @param Scope root type. * @param A supertype of all indexed entity types to include in the scope. * @return The created scope. * @see SearchScope */ - SearchScope scope(Collection> classes); + SearchScope scope(Collection> classes); /** * Creates a {@link SearchScope} limited to @@ -49,11 +52,12 @@ default SearchScope scope(Class clazz) { * @param expectedSuperType A supertype of all entity types to include in the scope. * @param entityName An entity name. See {@link Entity#name()}. * The referenced entity type must be an indexed entity type or a supertype of such type. + * @param Scope root type. * @param A supertype of all indexed entity types to include in the scope. * @return The created scope. * @see SearchScope */ - default SearchScope scope(Class expectedSuperType, String entityName) { + default SearchScope scope(Class expectedSuperType, String entityName) { return scope( expectedSuperType, Collections.singleton( entityName ) ); } @@ -64,10 +68,11 @@ default SearchScope scope(Class expectedSuperType, String entityName) * @param expectedSuperType A supertype of all indexed entity types to include in the scope. * @param entityNames A collection of entity names. See {@link Entity#name()}. * Each entity type referenced in the collection must be an indexed entity type or a supertype of such type. + * @param Scope root type. * @param A supertype of all indexed entity types to include in the scope. * @return The created scope. * @see SearchScope */ - SearchScope scope(Class expectedSuperType, Collection entityNames); + SearchScope scope(Class expectedSuperType, Collection entityNames); } diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/impl/SearchScopeImpl.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/impl/SearchScopeImpl.java index 8bdb6012a51..a5be04c066c 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/impl/SearchScopeImpl.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/scope/impl/SearchScopeImpl.java @@ -17,6 +17,7 @@ import org.hibernate.search.engine.search.projection.dsl.SearchProjectionFactory; import org.hibernate.search.engine.search.query.dsl.SearchQuerySelectStep; import org.hibernate.search.engine.search.sort.dsl.SearchSortFactory; +import org.hibernate.search.mapper.orm.common.EntityReference; import org.hibernate.search.mapper.orm.entity.SearchIndexedEntity; import org.hibernate.search.mapper.orm.loading.impl.HibernateOrmSelectionLoadingContext; import org.hibernate.search.mapper.orm.massindexing.MassIndexer; @@ -36,17 +37,19 @@ import org.hibernate.search.mapper.pojo.work.spi.PojoScopeWorkspace; @SuppressWarnings("deprecation") -public class SearchScopeImpl implements SearchScope, BatchScopeContext { +public class SearchScopeImpl implements SearchScope, BatchScopeContext { private final HibernateOrmScopeMappingContext mappingContext; private final TenancyConfiguration tenancyConfiguration; - private final PojoScopeDelegate> delegate; public SearchScopeImpl(HibernateOrmScopeMappingContext mappingContext, TenancyConfiguration tenancyConfiguration, - PojoScopeDelegate> delegate) { this.mappingContext = mappingContext; @@ -54,8 +57,9 @@ public SearchScopeImpl(HibernateOrmScopeMappingContext mappingContext, this.delegate = delegate; } - public SearchQuerySelectStep predicate() { return delegate.predicate(); } @Override - public SearchSortFactory sort() { + public SearchSortFactory sort() { return delegate.sort(); } @Override - public SearchProjectionFactory projection() { + public SearchProjectionFactory projection() { return delegate.projection(); } @Override - public SearchAggregationFactory aggregation() { + public SearchAggregationFactory aggregation() { return delegate.aggregation(); } diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/SearchSession.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/SearchSession.java index 319c93f962a..3857a907adf 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/SearchSession.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/SearchSession.java @@ -15,6 +15,7 @@ import org.hibernate.search.mapper.orm.mapping.SearchMapping; import org.hibernate.search.mapper.orm.massindexing.MassIndexer; import org.hibernate.search.mapper.orm.schema.management.SearchSchemaManager; +import org.hibernate.search.mapper.orm.scope.HibernateOrmRootReferenceScope; import org.hibernate.search.mapper.orm.scope.SearchScope; import org.hibernate.search.mapper.orm.scope.SearchScopeProvider; import org.hibernate.search.mapper.orm.search.loading.dsl.SearchLoadingOptionsStep; @@ -44,7 +45,8 @@ public interface SearchSession extends SearchScopeProvider { * @see SearchQuerySelectStep */ @SuppressWarnings("deprecation") - default SearchQuerySelectStep SearchQuerySelectStep SearchQuerySelectStep SearchQuerySelectStep SearchQuerySelectStep SearchQuerySelectStep search(SearchScope scope); + + /** + * Initiate the building of a search query. + *

+ * The query will target the indexes in the given scope. + * + * @param scope A scope representing all indexed types that will be targeted by the search query. + * @param A supertype of all types in the given scope. + * @return The initial step of a DSL where the search query can be defined. + * @see SearchQuerySelectStep + */ + @SuppressWarnings("deprecation") + @Incubating + SearchQuerySelectStep search(SearchScope scope); + ?> search(HibernateOrmRootReferenceScope scope); /** * Create a {@link SearchSchemaManager} for all indexes. diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/DelegatingSearchSession.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/DelegatingSearchSession.java index f9483bfb842..0c0853c9c22 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/DelegatingSearchSession.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/DelegatingSearchSession.java @@ -15,6 +15,7 @@ import org.hibernate.search.mapper.orm.common.impl.HibernateOrmUtils; import org.hibernate.search.mapper.orm.massindexing.MassIndexer; import org.hibernate.search.mapper.orm.schema.management.SearchSchemaManager; +import org.hibernate.search.mapper.orm.scope.HibernateOrmRootReferenceScope; import org.hibernate.search.mapper.orm.scope.SearchScope; import org.hibernate.search.mapper.orm.search.loading.dsl.SearchLoadingOptionsStep; import org.hibernate.search.mapper.orm.session.SearchSession; @@ -42,7 +43,8 @@ public DelegatingSearchSession(Supplier SearchQuerySelectStep SearchQuerySelectStep SearchQuerySelectStep SearchQuerySelectStep search( - SearchScope scope) { + ?> search(SearchScope scope) { + return getDelegate().search( scope ); + } + + @Override + @SuppressWarnings("deprecation") + public < + SR, + T> SearchQuerySelectStep search( + HibernateOrmRootReferenceScope scope) { return getDelegate().search( scope ); } @@ -80,12 +97,12 @@ public MassIndexer massIndexer(Collection> classes) { } @Override - public SearchScope scope(Collection> classes) { + public SearchScope scope(Collection> classes) { return getDelegate().scope( classes ); } @Override - public SearchScope scope(Class expectedSuperType, Collection entityNames) { + public SearchScope scope(Class expectedSuperType, Collection entityNames) { return getDelegate().scope( expectedSuperType, entityNames ); } diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/HibernateOrmSearchSession.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/HibernateOrmSearchSession.java index 6b03cea1c80..071cd9408a7 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/HibernateOrmSearchSession.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/HibernateOrmSearchSession.java @@ -22,11 +22,13 @@ import org.hibernate.search.engine.search.query.dsl.SearchQuerySelectStep; import org.hibernate.search.mapper.orm.automaticindexing.session.impl.DelegatingAutomaticIndexingSynchronizationStrategy; import org.hibernate.search.mapper.orm.automaticindexing.spi.AutomaticIndexingEventSendingSessionContext; +import org.hibernate.search.mapper.orm.common.EntityReference; import org.hibernate.search.mapper.orm.loading.impl.HibernateOrmSelectionLoadingContext; import org.hibernate.search.mapper.orm.logging.impl.Log; import org.hibernate.search.mapper.orm.massindexing.MassIndexer; import org.hibernate.search.mapper.orm.model.impl.HibernateOrmRuntimeIntrospector; import org.hibernate.search.mapper.orm.schema.management.SearchSchemaManager; +import org.hibernate.search.mapper.orm.scope.HibernateOrmRootReferenceScope; import org.hibernate.search.mapper.orm.scope.SearchScope; import org.hibernate.search.mapper.orm.scope.impl.HibernateOrmScopeSessionContext; import org.hibernate.search.mapper.orm.scope.impl.SearchScopeImpl; @@ -138,34 +140,30 @@ public PojoIndexer createIndexer() { } @Override - public SearchQuerySelectStep search( - Collection> classes) { + public SearchQuerySelectStep search( + Collection> classes) { return search( scope( classes ) ); } @Override - public SearchQuerySelectStep search( - SearchScope scope) { - return search( (SearchScopeImpl) scope ); + public SearchQuerySelectStep search( + SearchScope scope) { + return search( (SearchScopeImpl) scope ); } - public SearchQuerySelectStep SearchQuerySelectStep search( + HibernateOrmRootReferenceScope scope) { + return search( ( scope.scope( this ) ) ); + } + + private SearchQuerySelectStep search( - SearchScopeImpl scope) { + ?> search(SearchScopeImpl scope) { return scope.search( this, loadingContextBuilder() ); } @@ -185,13 +183,13 @@ public MassIndexer massIndexer(Collection> classes) { } @Override - public SearchScopeImpl scope(Collection> classes) { + public SearchScopeImpl scope(Collection> classes) { checkOpen(); return mappingContext.createScope( classes ); } @Override - public SearchScope scope(Class expectedSuperType, Collection entityNames) { + public SearchScope scope(Class expectedSuperType, Collection entityNames) { checkOpen(); return mappingContext.createScope( expectedSuperType, entityNames ); } diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/HibernateOrmSearchSessionMappingContext.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/HibernateOrmSearchSessionMappingContext.java index 2501e24f8d3..20c9bea9839 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/HibernateOrmSearchSessionMappingContext.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/session/impl/HibernateOrmSearchSessionMappingContext.java @@ -20,9 +20,9 @@ public interface HibernateOrmSearchSessionMappingContext @Override FailureHandler failureHandler(); - SearchScopeImpl createScope(Collection> types); + SearchScopeImpl createScope(Collection> types); - SearchScopeImpl createScope(Class expectedSuperType, Collection entityNames); + SearchScopeImpl createScope(Class expectedSuperType, Collection entityNames); HibernateOrmSearchSession.Builder createSessionBuilder( SessionImplementor sessionImplementor); diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/spi/BatchMappingContext.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/spi/BatchMappingContext.java index 3e00c6e5498..b3453a2c1da 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/spi/BatchMappingContext.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/spi/BatchMappingContext.java @@ -17,11 +17,11 @@ public interface BatchMappingContext { BatchSessionContext sessionContext(EntityManager entityManager); - BatchScopeContext scope(Class expectedSuperType); + BatchScopeContext scope(Class expectedSuperType); - BatchScopeContext scope(Class expectedSuperType, String entityName); + BatchScopeContext scope(Class expectedSuperType, String entityName); - BatchScopeContext scope(Collection> classes); + BatchScopeContext scope(Collection> classes); TenancyConfiguration tenancyConfiguration(); diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/impl/PojoIndexedTypeManager.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/impl/PojoIndexedTypeManager.java index 46a1651bd05..00c350f95e6 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/impl/PojoIndexedTypeManager.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/impl/PojoIndexedTypeManager.java @@ -129,12 +129,12 @@ public IndexIndexingPlan createIndexingPlan(PojoWorkSessionContext sessionContex } @Override - public MappedIndexScopeBuilder createScopeBuilder(BackendMappingContext mappingContext) { + public MappedIndexScopeBuilder createScopeBuilder(BackendMappingContext mappingContext) { return indexManager.createScopeBuilder( mappingContext ); } @Override - public void addTo(MappedIndexScopeBuilder builder) { + public void addTo(MappedIndexScopeBuilder builder) { indexManager.addTo( builder ); } diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/impl/PojoMappingDelegateImpl.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/impl/PojoMappingDelegateImpl.java index 256ccf04611..dec8a2dcc3c 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/impl/PojoMappingDelegateImpl.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/impl/PojoMappingDelegateImpl.java @@ -111,7 +111,7 @@ public PojoEntityReferenceFactory createEntityReferenceFactory(PojoEntityReferen } @Override - public PojoScopeDelegate createPojoScopeForClasses( + public PojoScopeDelegate createPojoScopeForClasses( PojoScopeMappingContext mappingContext, Collection> classes, PojoScopeTypeExtendedContextProvider indexedTypeExtendedContextProvider) { @@ -128,7 +128,7 @@ public PojoScopeDelegate createPojoSc @Override @SuppressWarnings("unchecked") // The cast is checked through reflection - public PojoScopeDelegate createPojoScopeForEntityNames( + public PojoScopeDelegate createPojoScopeForEntityNames( PojoScopeMappingContext mappingContext, Class expectedSuperType, Collection entityNames, PojoScopeTypeExtendedContextProvider indexedTypeExtendedContextProvider) { if ( entityNames.isEmpty() ) { @@ -151,7 +151,7 @@ public PojoScopeDelegate createPojoSc @Override @Deprecated - public PojoScopeDelegate createPojoScope( + public PojoScopeDelegate createPojoScope( PojoScopeMappingContext mappingContext, Collection> targetedTypes, PojoScopeTypeExtendedContextProvider indexedTypeExtendedContextProvider) { @@ -167,7 +167,7 @@ public PojoScopeDelegate createPojoSc } @Override - public Optional> createPojoAllScope( + public Optional> createPojoAllScope( PojoScopeMappingContext mappingContext, PojoScopeTypeExtendedContextProvider indexedTypeExtendedContextProvider) { if ( typeManagers.allIndexed().isEmpty() ) { diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/spi/PojoMappingDelegate.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/spi/PojoMappingDelegate.java index 42e848bc413..ecdcee82add 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/spi/PojoMappingDelegate.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/mapping/spi/PojoMappingDelegate.java @@ -61,11 +61,12 @@ public interface PojoMappingDelegate extends AutoCloseable { * @param indexedTypeExtendedContextProvider A provider of extended, mapper-specific type contexts. * that will be made available through {@link PojoScopeDelegate#includedIndexedTypes()}. * @return A {@link PojoScopeDelegate} + * @param Scope root type. * @param The type of entity references. * @param A supertype of all indexed entity types to include in the scope. * @param The type of extended, mapper-specific type contexts. */ - PojoScopeDelegate createPojoScopeForClasses( + PojoScopeDelegate createPojoScopeForClasses( PojoScopeMappingContext mappingContext, Collection> classes, PojoScopeTypeExtendedContextProvider indexedTypeExtendedContextProvider); @@ -81,11 +82,12 @@ PojoScopeDelegate createPojoScopeForC * @param indexedTypeExtendedContextProvider A provider of extended, mapper-specific type contexts. * that will be made available through {@link PojoScopeDelegate#includedIndexedTypes()}. * @return A {@link PojoScopeDelegate} + * @param Scope root type. * @param The type of entity references. * @param A supertype of all indexed entity types to include in the scope. * @param The type of extended, mapper-specific type contexts. */ - PojoScopeDelegate createPojoScopeForEntityNames( + PojoScopeDelegate createPojoScopeForEntityNames( PojoScopeMappingContext mappingContext, Class expectedSuperType, Collection entityNames, PojoScopeTypeExtendedContextProvider indexedTypeExtendedContextProvider); @@ -100,6 +102,7 @@ PojoScopeDelegate createPojoScopeForE * @param indexedTypeExtendedContextProvider A provider of extended, mapper-specific type contexts. * that will be made available through {@link PojoScopeDelegate#includedIndexedTypes()}. * @return A {@link PojoScopeDelegate} + * @param Scope root type. * @param The type of entity references. * @param A supertype of all indexed entity types to include in the scope. * @param The type of extended, mapper-specific type contexts. @@ -110,12 +113,12 @@ PojoScopeDelegate createPojoScopeForE * instead. */ @Deprecated - PojoScopeDelegate createPojoScope( + PojoScopeDelegate createPojoScope( PojoScopeMappingContext mappingContext, Collection> targetedTypes, PojoScopeTypeExtendedContextProvider indexedTypeExtendedContextProvider); - Optional> createPojoAllScope( + Optional> createPojoAllScope( PojoScopeMappingContext mappingContext, PojoScopeTypeExtendedContextProvider indexedTypeExtendedContextProvider); diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/massindexing/impl/PojoDefaultMassIndexer.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/massindexing/impl/PojoDefaultMassIndexer.java index d1f46edb23e..1df6f548869 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/massindexing/impl/PojoDefaultMassIndexer.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/massindexing/impl/PojoDefaultMassIndexer.java @@ -51,7 +51,7 @@ public void afterExecution(Context context) { private final PojoMassIndexingTypeContextProvider typeContextProvider; private final Set> targetedIndexedTypes; private final PojoScopeSchemaManager scopeSchemaManager; - private final PojoScopeDelegate pojoScopeDelegate; + private final PojoScopeDelegate pojoScopeDelegate; // default settings defined here: private int typesToIndexInParallel = 1; @@ -71,7 +71,7 @@ public PojoDefaultMassIndexer(PojoMassIndexingContext massIndexingContext, PojoMassIndexingTypeContextProvider typeContextProvider, Set> targetedIndexedTypes, PojoScopeSchemaManager scopeSchemaManager, - PojoScopeDelegate pojoScopeDelegate) { + PojoScopeDelegate pojoScopeDelegate) { this.massIndexingContext = massIndexingContext; this.mappingContext = mappingContext; this.typeContextProvider = typeContextProvider; diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/massindexing/impl/PojoMassIndexingBatchCoordinator.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/massindexing/impl/PojoMassIndexingBatchCoordinator.java index 1f47a9cfdf6..9823d592c9d 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/massindexing/impl/PojoMassIndexingBatchCoordinator.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/massindexing/impl/PojoMassIndexingBatchCoordinator.java @@ -43,7 +43,7 @@ public class PojoMassIndexingBatchCoordinator extends PojoMassIndexingFailureHan private final PojoMassIndexingContext massIndexingContext; private final PojoScopeSchemaManager scopeSchemaManager; - private final PojoScopeDelegate pojoScopeDelegate; + private final PojoScopeDelegate pojoScopeDelegate; private final int typesToIndexInParallel; private final int documentBuilderThreads; private final Boolean mergeSegmentsOnFinish; @@ -61,7 +61,7 @@ public PojoMassIndexingBatchCoordinator(PojoMassIndexingMappingContext mappingCo List> typeGroupsToIndex, PojoMassIndexingContext massIndexingContext, PojoScopeSchemaManager scopeSchemaManager, - PojoScopeDelegate pojoScopeDelegate, + PojoScopeDelegate pojoScopeDelegate, MassIndexingEnvironment environment, int typesToIndexInParallel, int documentBuilderThreads, Boolean mergeSegmentsOnFinish, boolean dropAndCreateSchemaOnStart, Boolean purgeAtStart, Boolean mergeSegmentsAfterPurge) { diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/impl/PojoScopeDelegateImpl.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/impl/PojoScopeDelegateImpl.java index b06d502e807..959c136d21c 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/impl/PojoScopeDelegateImpl.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/impl/PojoScopeDelegateImpl.java @@ -39,9 +39,9 @@ import org.hibernate.search.mapper.pojo.work.impl.PojoScopeWorkspaceImpl; import org.hibernate.search.mapper.pojo.work.spi.PojoScopeWorkspace; -public final class PojoScopeDelegateImpl implements PojoScopeDelegate { +public final class PojoScopeDelegateImpl implements PojoScopeDelegate { - public static PojoScopeDelegate create( + public static PojoScopeDelegate create( PojoScopeMappingContext mappingContext, PojoScopeTypeContextProvider typeContextProvider, Set> targetedTypeContexts, @@ -62,7 +62,7 @@ public static PojoScopeDelegate creat private final PojoScopeTypeContextProvider indexedTypeContextProvider; private final Set> targetedTypeContexts; private final Set targetedTypeExtendedContexts; - private MappedIndexScope delegate; + private MappedIndexScope delegate; private PojoScopeDelegateImpl(PojoScopeMappingContext mappingContext, PojoScopeTypeContextProvider indexedTypeContextProvider, @@ -80,7 +80,7 @@ public Set includedIndexedTypes() { } @Override - public SearchQuerySelectStep, ?> search( + public SearchQuerySelectStep, ?> search( PojoScopeSessionContext sessionContext, PojoSelectionLoadingContextBuilder loadingContextBuilder) { Map> targetTypesByEntityName = new LinkedHashMap<>(); @@ -93,22 +93,22 @@ public Set includedIndexedTypes() { } @Override - public SearchPredicateFactory predicate() { + public SearchPredicateFactory predicate() { return getIndexScope().predicate(); } @Override - public SearchSortFactory sort() { + public SearchSortFactory sort() { return getIndexScope().sort(); } @Override - public SearchProjectionFactory projection() { + public SearchProjectionFactory projection() { return getIndexScope().projection(); } @Override - public SearchAggregationFactory aggregation() { + public SearchAggregationFactory aggregation() { return getIndexScope().aggregation(); } @@ -143,10 +143,10 @@ public T extension(IndexScopeExtension extension) { return getIndexScope().extension( extension ); } - private MappedIndexScope getIndexScope() { + private MappedIndexScope getIndexScope() { if ( delegate == null ) { Iterator> iterator = targetedTypeContexts.iterator(); - MappedIndexScopeBuilder builder = iterator.next().createScopeBuilder( mappingContext ); + MappedIndexScopeBuilder builder = iterator.next().createScopeBuilder( mappingContext ); while ( iterator.hasNext() ) { iterator.next().addTo( builder ); } diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/impl/PojoScopeIndexedTypeContext.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/impl/PojoScopeIndexedTypeContext.java index 3dbfe9c4ec5..af0c0567094 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/impl/PojoScopeIndexedTypeContext.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/impl/PojoScopeIndexedTypeContext.java @@ -19,8 +19,8 @@ public interface PojoScopeIndexedTypeContext extends PojoWorkIndexedTypeContext, PojoSchemaManagementIndexedTypeContext, PojoSearchLoadingIndexedTypeContext, PojoMassIndexingIndexedTypeContext { - MappedIndexScopeBuilder createScopeBuilder(BackendMappingContext mappingContext); + MappedIndexScopeBuilder createScopeBuilder(BackendMappingContext mappingContext); - void addTo(MappedIndexScopeBuilder builder); + void addTo(MappedIndexScopeBuilder builder); } diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/spi/PojoScopeDelegate.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/spi/PojoScopeDelegate.java index 1f495299586..965e4266776 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/spi/PojoScopeDelegate.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/scope/spi/PojoScopeDelegate.java @@ -21,6 +21,7 @@ import org.hibernate.search.mapper.pojo.work.spi.PojoScopeWorkspace; /** + * @param Scope root type. * @param The type of entity references, i.e. the type of hits returned by * {@link SearchQuerySelectStep#selectEntityReference()} reference queries}, * @param The type of loaded entities, i.e. the type of hits returned by @@ -30,21 +31,21 @@ * {@link #includedIndexedTypes()}. * or the type of objects returned for {@link SearchProjectionFactory#entity() entity projections}. */ -public interface PojoScopeDelegate { +public interface PojoScopeDelegate { Set includedIndexedTypes(); - SearchQuerySelectStep, ?> search( + SearchQuerySelectStep, ?> search( PojoScopeSessionContext sessionContext, PojoSelectionLoadingContextBuilder loadingContextBuilder); - SearchPredicateFactory predicate(); + SearchPredicateFactory predicate(); - SearchSortFactory sort(); + SearchSortFactory sort(); - SearchProjectionFactory projection(); + SearchProjectionFactory projection(); - SearchAggregationFactory aggregation(); + SearchAggregationFactory aggregation(); SearchHighlighterFactory highlighter(); diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/DocumentReferenceProjectionBinder.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/DocumentReferenceProjectionBinder.java index 3ba6d1daa92..1d6fa628dad 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/DocumentReferenceProjectionBinder.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/DocumentReferenceProjectionBinder.java @@ -49,7 +49,7 @@ protected String type() { } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.documentReference().toProjection(); } diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/EntityProjectionBinder.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/EntityProjectionBinder.java index 95c9aa234f6..b664f6d6242 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/EntityProjectionBinder.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/EntityProjectionBinder.java @@ -63,7 +63,7 @@ public void appendTo(ToStringTreeAppender appender) { } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.entity( requestedEntityType ).toProjection(); } diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/EntityReferenceProjectionBinder.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/EntityReferenceProjectionBinder.java index 632c83942c9..917113f43ab 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/EntityReferenceProjectionBinder.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/EntityReferenceProjectionBinder.java @@ -53,7 +53,7 @@ protected String type() { // Mappers are required to have their entity reference type extend EntityReference. // The generic parameter R in SearchProjectionFactory is only there for backwards compatibility. @SuppressWarnings("unchecked") - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return (SearchProjection) factory.entityReference().toProjection(); } diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/HighlightProjectionBinder.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/HighlightProjectionBinder.java index b72524df6b4..20b89458bb5 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/HighlightProjectionBinder.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/HighlightProjectionBinder.java @@ -140,7 +140,7 @@ private Single(String fieldPath, String highlighterName) { } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.highlight( fieldPath ).highlighter( highlighterName ).single().toProjection(); } @@ -153,7 +153,7 @@ private Multi(String fieldPath, String highlighterName) { } @Override - public SearchProjection> create(SearchProjectionFactory factory, + public SearchProjection> create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.highlight( fieldPath ).highlighter( highlighterName ).toProjection(); } diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/IdProjectionBinder.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/IdProjectionBinder.java index 9020a190b6b..f2c9eedf6cd 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/IdProjectionBinder.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/IdProjectionBinder.java @@ -63,7 +63,7 @@ public void appendTo(ToStringTreeAppender appender) { } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.id( requestedIdentifierType ).toProjection(); } diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/ScoreProjectionBinder.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/ScoreProjectionBinder.java index d42e76280aa..268e3bff516 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/ScoreProjectionBinder.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/binding/builtin/ScoreProjectionBinder.java @@ -47,7 +47,7 @@ protected String type() { } @Override - public SearchProjection create(SearchProjectionFactory factory, + public SearchProjection create(SearchProjectionFactory factory, ProjectionDefinitionContext context) { return factory.score().toProjection(); } diff --git a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/impl/PojoConstructorProjectionDefinition.java b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/impl/PojoConstructorProjectionDefinition.java index 19fa6362b89..3a1926ec436 100644 --- a/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/impl/PojoConstructorProjectionDefinition.java +++ b/mapper/pojo-base/src/main/java/org/hibernate/search/mapper/pojo/search/definition/impl/PojoConstructorProjectionDefinition.java @@ -67,7 +67,7 @@ public void close() { } @Override - public CompositeProjectionValueStep apply(SearchProjectionFactory projectionFactory, + public CompositeProjectionValueStep apply(SearchProjectionFactory projectionFactory, CompositeProjectionInnerStep initialStep, ProjectionDefinitionContext context) { int i = -1; try { diff --git a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/mapping/impl/StandalonePojoMapping.java b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/mapping/impl/StandalonePojoMapping.java index 65cc599f684..4ede3c28d34 100644 --- a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/mapping/impl/StandalonePojoMapping.java +++ b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/mapping/impl/StandalonePojoMapping.java @@ -70,12 +70,12 @@ public CompletableFuture start(MappingStartContext context) { configuredIndexingPlanSynchronizationStrategyHolder.start( context ); - Optional> scopeOptional = createAllScope(); + Optional> scopeOptional = createAllScope(); if ( !scopeOptional.isPresent() ) { // No indexed type return CompletableFuture.completedFuture( null ); } - SearchScopeImpl scope = scopeOptional.get(); + SearchScopeImpl scope = scopeOptional.get(); // Schema management PojoScopeSchemaManager schemaManager = scope.schemaManagerDelegate(); @@ -88,7 +88,7 @@ public CompletableFuture start(MappingStartContext context) { @Override public CompletableFuture preStop(MappingPreStopContext context) { - Optional> scope = createAllScope(); + Optional> scope = createAllScope(); if ( !scope.isPresent() ) { // No indexed type return CompletableFuture.completedFuture( null ); @@ -130,12 +130,12 @@ public MassIndexingDefaultCleanOperation massIndexingDefaultCleanOperation() { } @Override - public SearchScope scope(Collection> targetedTypes) { + public SearchScope scope(Collection> targetedTypes) { return createScope( targetedTypes ); } @Override - public SearchScope scope(Class expectedSuperType, Collection entityNames) { + public SearchScope scope(Class expectedSuperType, Collection entityNames) { return createScope( expectedSuperType, entityNames ); } @@ -155,8 +155,8 @@ public SearchSessionBuilder createSessionWithOptions() { } @Override - public SearchScopeImpl createScope(Collection> classes) { - PojoScopeDelegate> scopeDelegate = + public SearchScopeImpl createScope(Collection> classes) { + PojoScopeDelegate> scopeDelegate = delegate().createPojoScopeForClasses( this, classes, @@ -164,12 +164,12 @@ public SearchScopeImpl createScope(Collection( this, tenancyConfiguration, scopeDelegate ); + return new SearchScopeImpl( this, tenancyConfiguration, scopeDelegate ); } @Override - public SearchScopeImpl createScope(Class expectedSuperType, Collection entityNames) { - PojoScopeDelegate> scopeDelegate = + public SearchScopeImpl createScope(Class expectedSuperType, Collection entityNames) { + PojoScopeDelegate> scopeDelegate = delegate().createPojoScopeForEntityNames( this, expectedSuperType, entityNames, @@ -177,7 +177,7 @@ public SearchScopeImpl createScope(Class expectedSuperType, Collection ); // Explicit type parameter is necessary here for ECJ (Eclipse compiler) - return new SearchScopeImpl( this, tenancyConfiguration, scopeDelegate ); + return new SearchScopeImpl( this, tenancyConfiguration, scopeDelegate ); } @Override @@ -235,9 +235,9 @@ private SearchIntegration searchIntegration() { return integrationHandle.getOrFail(); } - private Optional> createAllScope() { + private Optional> createAllScope() { return delegate() - .>createPojoAllScope( + .>createPojoAllScope( this, typeContextContainer::indexedForExactType ) diff --git a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/SearchScope.java b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/SearchScope.java index 18c0ea744fb..c87a2bf2a3a 100644 --- a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/SearchScope.java +++ b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/SearchScope.java @@ -40,7 +40,7 @@ * @param A supertype of all types in this scope. */ @Incubating -public interface SearchScope { +public interface SearchScope { /** * Initiate the building of a search predicate. @@ -56,7 +56,7 @@ public interface SearchScope { * @return A predicate factory. * @see SearchPredicateFactory */ - SearchPredicateFactory predicate(); + SearchPredicateFactory predicate(); /** * Initiate the building of a search sort. @@ -72,7 +72,7 @@ public interface SearchScope { * @return A sort factory. * @see SearchSortFactory */ - SearchSortFactory sort(); + SearchSortFactory sort(); /** * Initiate the building of a search projection that will be valid for the indexes in this scope. @@ -88,7 +88,7 @@ public interface SearchScope { * @return A projection factory. * @see SearchProjectionFactory */ - SearchProjectionFactory projection(); + SearchProjectionFactory projection(); /** * Initiate the building of a search aggregation that will be valid for the indexes in this scope. @@ -104,7 +104,7 @@ public interface SearchScope { * @return An aggregation factory. * @see SearchAggregationFactory */ - SearchAggregationFactory aggregation(); + SearchAggregationFactory aggregation(); /** * Initiate the building of a highlighter that will be valid for the indexes in this scope. diff --git a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/SearchScopeProvider.java b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/SearchScopeProvider.java index 5fc8327a7a9..38a737efcf9 100644 --- a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/SearchScopeProvider.java +++ b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/SearchScopeProvider.java @@ -24,11 +24,12 @@ public interface SearchScopeProvider { * indexed entity types among the given class and its subtypes. * * @param clazz A class that must be an indexed entity type or a supertype of such type. + * @param Scope root type. * @param A supertype of all indexed entity types to include in the scope. * @return The created scope. * @see SearchScope */ - default SearchScope scope(Class clazz) { + default SearchScope scope(Class clazz) { return scope( Collections.singleton( clazz ) ); } @@ -38,11 +39,12 @@ default SearchScope scope(Class clazz) { * * @param classes A collection of classes. * Each must be an indexed entity type or a supertype of such type. + * @param Scope root type. * @param A supertype of all indexed entity types to include in the scope. * @return The created scope. * @see SearchScope */ - SearchScope scope(Collection> classes); + SearchScope scope(Collection> classes); /** * Creates a {@link SearchScope} limited to @@ -51,11 +53,12 @@ default SearchScope scope(Class clazz) { * @param expectedSuperType A supertype of all entity types to include in the scope. * @param entityName An entity name. See {@link SearchEntity#name()}. * The referenced entity type must be an indexed entity type or a supertype of such type. + * @param Scope root type. * @param A supertype of all indexed entity types to include in the scope. * @return The created scope. * @see SearchScope */ - default SearchScope scope(Class expectedSuperType, String entityName) { + default SearchScope scope(Class expectedSuperType, String entityName) { return scope( expectedSuperType, Collections.singleton( entityName ) ); } @@ -66,10 +69,11 @@ default SearchScope scope(Class expectedSuperType, String entityName) * @param expectedSuperType A supertype of all indexed entity types to include in the scope. * @param entityNames A collection of entity names. See {@link SearchEntity#name()}. * Each entity type referenced in the collection must be an indexed entity type or a supertype of such type. + * @param Scope root type. * @param A supertype of all indexed entity types to include in the scope. * @return The created scope. * @see SearchScope */ - SearchScope scope(Class expectedSuperType, Collection entityNames); + SearchScope scope(Class expectedSuperType, Collection entityNames); } diff --git a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/StandalonePojoRootReferenceScope.java b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/StandalonePojoRootReferenceScope.java new file mode 100644 index 00000000000..1f086c4ae28 --- /dev/null +++ b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/StandalonePojoRootReferenceScope.java @@ -0,0 +1,14 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.mapper.pojo.standalone.scope; + +import org.hibernate.search.engine.search.reference.RootReferenceScope; +import org.hibernate.search.util.common.annotation.Incubating; + +@Incubating +public interface StandalonePojoRootReferenceScope extends RootReferenceScope { + + SearchScope create(SearchScopeProvider scopeProvider); +} diff --git a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/impl/SearchScopeImpl.java b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/impl/SearchScopeImpl.java index 5c063c48f4f..50936324a8e 100644 --- a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/impl/SearchScopeImpl.java +++ b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/impl/SearchScopeImpl.java @@ -34,37 +34,37 @@ import org.hibernate.search.mapper.pojo.standalone.work.SearchWorkspace; import org.hibernate.search.mapper.pojo.standalone.work.impl.SearchWorkspaceImpl; -public class SearchScopeImpl implements SearchScope { +public class SearchScopeImpl implements SearchScope { private final StandalonePojoScopeMappingContext mappingContext; - private final PojoScopeDelegate> delegate; + private final PojoScopeDelegate> delegate; private final TenancyConfiguration tenancyConfiguration; public SearchScopeImpl(StandalonePojoScopeMappingContext mappingContext, TenancyConfiguration tenancyConfiguration, - PojoScopeDelegate> delegate) { + PojoScopeDelegate> delegate) { this.mappingContext = mappingContext; this.tenancyConfiguration = tenancyConfiguration; this.delegate = delegate; } @Override - public SearchPredicateFactory predicate() { + public SearchPredicateFactory predicate() { return delegate.predicate(); } @Override - public SearchSortFactory sort() { + public SearchSortFactory sort() { return delegate.sort(); } @Override - public SearchProjectionFactory projection() { + public SearchProjectionFactory projection() { return delegate.projection(); } @Override - public SearchAggregationFactory aggregation() { + public SearchAggregationFactory aggregation() { return delegate.aggregation(); } @@ -104,7 +104,7 @@ public T extension(IndexScopeExtension extension) { return delegate.extension( extension ); } - public SearchQuerySelectStep search(PojoScopeSessionContext sessionContext, + public SearchQuerySelectStep search(PojoScopeSessionContext sessionContext, PojoSelectionLoadingContextBuilder loadingContextBuilder) { return delegate.search( sessionContext, loadingContextBuilder ); } diff --git a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/SearchSession.java b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/SearchSession.java index 3f25afb3ee3..4f5c6dadb39 100644 --- a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/SearchSession.java +++ b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/SearchSession.java @@ -14,6 +14,7 @@ import org.hibernate.search.mapper.pojo.standalone.schema.management.SearchSchemaManager; import org.hibernate.search.mapper.pojo.standalone.scope.SearchScope; import org.hibernate.search.mapper.pojo.standalone.scope.SearchScopeProvider; +import org.hibernate.search.mapper.pojo.standalone.scope.StandalonePojoRootReferenceScope; import org.hibernate.search.mapper.pojo.standalone.work.SearchIndexer; import org.hibernate.search.mapper.pojo.standalone.work.SearchIndexingPlan; import org.hibernate.search.mapper.pojo.standalone.work.SearchWorkspace; @@ -87,7 +88,7 @@ default MassIndexer massIndexer(Class... classes) { * @return The initial step of a DSL where the search query can be defined. * @see SearchQuerySelectStep */ - default SearchQuerySelectStep search(Class clazz) { + default SearchQuerySelectStep search(Class clazz) { return search( Collections.singleton( clazz ) ); } @@ -103,7 +104,7 @@ default MassIndexer massIndexer(Class... classes) { * @return The initial step of a DSL where the search query can be defined. * @see SearchQuerySelectStep */ - SearchQuerySelectStep search(Collection> classes); + SearchQuerySelectStep search(Collection> classes); /** * Initiate the building of a search query. @@ -115,7 +116,27 @@ default MassIndexer massIndexer(Class... classes) { * @return The initial step of a DSL where the search query can be defined. * @see SearchQuerySelectStep */ - SearchQuerySelectStep search(SearchScope scope); + SearchQuerySelectStep search(SearchScope scope); + + /** + * Initiate the building of a search query. + *

+ * The query will target the indexes in the given scope. + * + * @param scope A scope representing all indexed types that will be targeted by the search query. + * @param Scope root type. + * @param A supertype of all types in the given scope. + * @return The initial step of a DSL where the search query can be defined. + * @see SearchQuerySelectStep + */ + @Incubating + SearchQuerySelectStep search(StandalonePojoRootReferenceScope scope); /** * Create a {@link SearchSchemaManager} for all indexes. diff --git a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/impl/StandalonePojoSearchSession.java b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/impl/StandalonePojoSearchSession.java index ea8c63caf6b..7ba9db2a488 100644 --- a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/impl/StandalonePojoSearchSession.java +++ b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/impl/StandalonePojoSearchSession.java @@ -25,6 +25,7 @@ import org.hibernate.search.mapper.pojo.standalone.massindexing.impl.StandalonePojoMassIndexingSessionContext; import org.hibernate.search.mapper.pojo.standalone.schema.management.SearchSchemaManager; import org.hibernate.search.mapper.pojo.standalone.scope.SearchScope; +import org.hibernate.search.mapper.pojo.standalone.scope.StandalonePojoRootReferenceScope; import org.hibernate.search.mapper.pojo.standalone.scope.impl.SearchScopeImpl; import org.hibernate.search.mapper.pojo.standalone.session.SearchSession; import org.hibernate.search.mapper.pojo.standalone.session.SearchSessionBuilder; @@ -129,13 +130,21 @@ public PojoRuntimeIntrospector runtimeIntrospector() { } @Override - public SearchQuerySelectStep search(Collection> classes) { + public SearchQuerySelectStep search( + Collection> classes) { return search( scope( classes ) ); } @Override - public SearchQuerySelectStep search(SearchScope scope) { - return search( (SearchScopeImpl) scope ); + public SearchQuerySelectStep search(SearchScope scope) { + return search( (SearchScopeImpl) scope ); + } + + @Override + public SearchQuerySelectStep search( + StandalonePojoRootReferenceScope referenceScope) { + SearchScope scope = referenceScope.create( this ); + return search( scope ); } @Override @@ -149,12 +158,12 @@ public SearchWorkspace workspace(Collection> classes) { } @Override - public SearchScopeImpl scope(Collection> types) { + public SearchScopeImpl scope(Collection> types) { return mappingContext.createScope( types ); } @Override - public SearchScopeImpl scope(Class expectedSuperType, Collection entityNames) { + public SearchScopeImpl scope(Class expectedSuperType, Collection entityNames) { return mappingContext.createScope( expectedSuperType, entityNames ); } @@ -202,7 +211,7 @@ public StandalonePojoSearchSessionMappingContext mappingContext() { return mappingContext; } - private SearchQuerySelectStep search(SearchScopeImpl scope) { + private SearchQuerySelectStep search(SearchScopeImpl scope) { return scope.search( this, loadingContextBuilder() ); } diff --git a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/impl/StandalonePojoSearchSessionMappingContext.java b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/impl/StandalonePojoSearchSessionMappingContext.java index 67ff85c2516..1f561640457 100644 --- a/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/impl/StandalonePojoSearchSessionMappingContext.java +++ b/mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/session/impl/StandalonePojoSearchSessionMappingContext.java @@ -16,9 +16,9 @@ public interface StandalonePojoSearchSessionMappingContext extends PojoSearchSessionMappingContext, StandalonePojoScopeMappingContext, StandalonePojoMassIndexingMappingContext { - SearchScopeImpl createScope(Collection> types); + SearchScopeImpl createScope(Collection> types); - SearchScopeImpl createScope(Class expectedSuperType, Collection entityNames); + SearchScopeImpl createScope(Class expectedSuperType, Collection entityNames); TenancyConfiguration tenancyConfiguration(); } diff --git a/metamodel/generator-plugin/pom.xml b/metamodel/generator-plugin/pom.xml new file mode 100644 index 00000000000..c3f3014b142 --- /dev/null +++ b/metamodel/generator-plugin/pom.xml @@ -0,0 +1,111 @@ + + 4.0.0 + + org.hibernate.search + hibernate-search-parent-integrationtest + 8.0.0-SNAPSHOT + ../../build/parents/integrationtest + + hibernate-search-metamodel-generator-plugin + maven-plugin + + Hibernate Search Metamodel Generator Plugin + Hibernate Search Metamodel Generator Plugin, creates static metamodel classes + + + + false + true + org.hibernate.search.metamodel.generator.plugin + true + true + + + + + org.hibernate.search + hibernate-search-engine + + + org.hibernate.search + hibernate-search-mapper-orm + true + + + org.hibernate.search + hibernate-search-mapper-pojo-standalone + true + + + org.jboss.logging + jboss-logging + + + org.jboss.logging + jboss-logging-annotations + + + + org.hibernate.search + hibernate-search-util-internal-integrationtest-mapper-orm + + + + org.apache.maven + maven-plugin-api + ${maven.min.version} + + + org.apache.maven + maven-core + ${maven.min.version} + + + org.apache.maven.plugin-tools + maven-plugin-annotations + 3.13.0 + provided + + + org.codehaus.plexus + plexus-utils + 3.5.1 + + + + org.hibernate.search + hibernate-search-util-internal-test-common + + + org.hibernate.search + hibernate-search-util-internal-integrationtest-backend-lucene + + + + com.h2database + h2 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.moditect + moditect-maven-plugin + + + add-module-infos + + none + + + + + + diff --git a/metamodel/generator-plugin/src/main/java/org/hibernate/search/metamodel/generator/plugin/HibernateSearchMetamodelGeneratorMojo.java b/metamodel/generator-plugin/src/main/java/org/hibernate/search/metamodel/generator/plugin/HibernateSearchMetamodelGeneratorMojo.java new file mode 100644 index 00000000000..2dcb350d4cf --- /dev/null +++ b/metamodel/generator-plugin/src/main/java/org/hibernate/search/metamodel/generator/plugin/HibernateSearchMetamodelGeneratorMojo.java @@ -0,0 +1,216 @@ +/* + * Hibernate Search, full-text search for your domain model + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.search.metamodel.generator.plugin; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; +import java.net.URLClassLoader; +import java.nio.charset.StandardCharsets; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Objects; +import java.util.Properties; +import java.util.stream.Collectors; + +import javax.tools.DiagnosticCollector; +import javax.tools.JavaCompiler; +import javax.tools.JavaFileObject; +import javax.tools.StandardJavaFileManager; +import javax.tools.StandardLocation; +import javax.tools.ToolProvider; + +import org.hibernate.SessionFactory; +import org.hibernate.search.engine.backend.metamodel.IndexDescriptor; +import org.hibernate.search.engine.backend.metamodel.IndexFieldDescriptor; +import org.hibernate.search.mapper.orm.Search; +import org.hibernate.search.mapper.orm.entity.SearchIndexedEntity; +import org.hibernate.search.mapper.orm.mapping.SearchMapping; +import org.hibernate.search.util.impl.integrationtest.backend.lucene.LuceneBackendConfiguration; +import org.hibernate.search.util.impl.integrationtest.mapper.orm.OrmSetupHelper; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.model.Dependency; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.plugins.annotations.LifecyclePhase; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.project.MavenProject; + +@Mojo(name = "generate-metamodel", defaultPhase = LifecyclePhase.GENERATE_SOURCES) +public class HibernateSearchMetamodelGeneratorMojo extends AbstractMojo { + + @Parameter(defaultValue = "${project}", required = true, readonly = true) + MavenProject project; + + @Parameter(property = "annotatedTypes") + List annotatedTypes; + + @Parameter(property = "packagesToCompile") + List packagesToCompile; + + @Parameter(property = "properties") + Properties properties; + + @Parameter(property = "sameModuleCompile", defaultValue = "false") + boolean sameModuleCompile; + + private URLClassLoader classLoader; + + @Override + public void execute() throws MojoExecutionException, MojoFailureException { + getLog().info( "Hibernate Search Metamodel Generator" ); + getLog().info( "Dependencies: " + project.getDependencies() ); + + if ( hasOrmMapper( project.getDependencies() ) ) { + getLog().info( "Sources: " + project.getCompileSourceRoots() ); + OrmSetupHelper.SetupContext setupContext = + OrmSetupHelper.withSingleBackend( new LuceneBackendConfiguration() ).start(); + + properties.forEach( (k, v) -> setupContext.withProperty( Objects.toString( k ), v ) ); + + Path generatedMetamodelLocation = + Path.of( project.getBuild().getOutputDirectory() ).resolveSibling( "generated-metamodel-sources" ); + + try ( SessionFactory sessionFactory = setupContext.setup( annotatedTypes() ) ) { + SearchMapping mapping = Search.mapping( sessionFactory ); + + Collection> indexedEntities = mapping.allIndexedEntities(); + + for ( SearchIndexedEntity indexedEntity : indexedEntities ) { + createClass( indexedEntity, generatedMetamodelLocation ); + } + + getLog().info( "Indexed entities: " + indexedEntities ); + + } + project.addCompileSourceRoot( generatedMetamodelLocation.toString() ); + } + } + + private void createClass(SearchIndexedEntity indexedEntity, Path root) { + getLog().info( "Creating class for entity: " + indexedEntity.jpaName() ); + + IndexDescriptor descriptor = indexedEntity.indexManager().descriptor(); + + StringBuilder fields = new StringBuilder(); + + for ( IndexFieldDescriptor staticField : descriptor.staticFields() ) { + fields.append( '\n' ) + .append( '\t' ).append( "public String " ).append( staticField.relativeName() ).append( ";" ); + } + + try { + Class javaClass = indexedEntity.javaClass(); + Path pckg = root.resolve( Path.of( javaClass.getPackageName().replace( '.', '/' ) ) ); + Files.createDirectories( pckg ); + try ( FileOutputStream os = + new FileOutputStream( pckg.resolve( javaClass.getSimpleName() + ".java" ).toFile() ); ) { + os.write( new StringBuilder().append( "package " ).append( javaClass.getPackageName() ).append( ";\n\n" ) + .append( "class " ).append( javaClass.getSimpleName() ).append( "__ {\n" ) + .append( fields ) + .append( "\t\n}" ) + .toString().getBytes( StandardCharsets.UTF_8 ) ); + } + + } + catch (IOException e) { + throw new RuntimeException( e ); + } + + } + + private Class[] annotatedTypes() { + if ( sameModuleCompile ) { + try { + List roots = new ArrayList<>(); + List classes = new ArrayList<>(); + for ( String compileSourceRoot : this.project.getCompileSourceRoots() ) { + Path root = Path.of( compileSourceRoot ); + roots.add( root ); + + for ( String pkg : packagesToCompile ) { + Path path = root.resolve( Path.of( pkg.replace( ".", FileSystems.getDefault().getSeparator() ) ) ); + if ( Files.exists( path ) ) { + Files.list( path ).filter( f -> f.getFileName().toString().endsWith( ".java" ) ) + .forEach( classes::add ); + } + } + } + + Path output = Path.of( project.getBuild().getOutputDirectory() ) + .resolveSibling( "generated-metamodel-pre-compiled-classes" ); + Files.createDirectories( output ); + + JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); + StandardJavaFileManager fileManager = compiler.getStandardFileManager( null, null, null ); + fileManager.setLocationFromPaths( StandardLocation.SOURCE_PATH, roots ); + fileManager.setLocation( StandardLocation.CLASS_PATH, getDependenciesAsFiles() ); + fileManager.setLocationFromPaths( StandardLocation.CLASS_OUTPUT, List.of( output ) ); + + Iterable toCompile = fileManager.getJavaFileObjectsFromPaths( classes ); + + DiagnosticCollector diagnostic = new DiagnosticCollector<>(); + JavaCompiler.CompilationTask task = + compiler.getTask( null, fileManager, diagnostic, List.of(), null, toCompile ); + + task.call(); + + classLoader = new URLClassLoader( "hibernate-search-generator", + new URL[] { output.toUri().toURL() }, this.getClass().getClassLoader() ); + Thread.currentThread().setContextClassLoader( classLoader ); + + Class[] types = new Class[annotatedTypes.size()]; + for ( int i = 0; i < annotatedTypes.size(); i++ ) { + types[i] = classLoader.loadClass( annotatedTypes.get( i ) ); + } + return types; + + } + catch (IOException | ClassNotFoundException e) { + throw new RuntimeException( e ); + } + } + else { + try { + Class[] types = new Class[annotatedTypes.size()]; + for ( int i = 0; i < annotatedTypes.size(); i++ ) { + types[i] = Class.forName( annotatedTypes.get( i ) ); + } + return types; + } + catch (ClassNotFoundException e) { + throw new RuntimeException( e ); + } + } + } + + private Collection getDependenciesAsFiles() { + project.setArtifactFilter( artifact -> true ); + project.setArtifacts( null ); + return project.getArtifacts() + .stream() + .map( Artifact::getFile ) + .collect( Collectors.toList() ); + } + + private boolean hasOrmMapper(List dependencies) { + for ( Dependency dependency : dependencies ) { + if ( "hibernate-search-mapper-orm".equals( dependency.getArtifactId() ) ) { + return true; + } + } + return false; + } +} diff --git a/metamodel/generator-test/generation/pom.xml b/metamodel/generator-test/generation/pom.xml new file mode 100644 index 00000000000..5571ee51238 --- /dev/null +++ b/metamodel/generator-test/generation/pom.xml @@ -0,0 +1,82 @@ + + 4.0.0 + + org.hibernate.search + hibernate-search-metamodel-generator-test-parent + 7.2.0-SNAPSHOT + .. + + hibernate-search-metamodel-generator-test-generation + + Hibernate Search Metamodel Generator TEST + + + + false + org.hibernate.search.metamodel.generator.test + true + + + + + org.hibernate.search + hibernate-search-metamodel-generator-model + ${project.version} + + + org.hibernate.search + hibernate-search-mapper-orm + + + + + + + org.hibernate.search + hibernate-search-metamodel-generator-plugin + ${project.version} + + + generate + + generate-metamodel + + generate-sources + + + org.hibernate.search.metamodel.generator.model.MyEntity + org.hibernate.search.metamodel.generator.model.MyProgrammaticEntity + + + org.hibernate.search.metamodel.generator.model.MyConfigurer + + + + + + + org.hibernate.search + hibernate-search-metamodel-generator-model + ${project.version} + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.moditect + moditect-maven-plugin + + + add-module-infos + + none + + + + + + diff --git a/metamodel/generator-test/model/pom.xml b/metamodel/generator-test/model/pom.xml new file mode 100644 index 00000000000..dde5d20b157 --- /dev/null +++ b/metamodel/generator-test/model/pom.xml @@ -0,0 +1,98 @@ + + 4.0.0 + + org.hibernate.search + hibernate-search-metamodel-generator-test-parent + 7.2.0-SNAPSHOT + .. + + hibernate-search-metamodel-generator-model + + Hibernate Search Metamodel Generator Model + + + + false + org.hibernate.search.metamodel.generator + true + + + + + org.hibernate.search + hibernate-search-engine + + + org.hibernate.search + hibernate-search-mapper-orm + true + + + org.hibernate.search + hibernate-search-mapper-pojo-standalone + true + + + org.jboss.logging + jboss-logging + + + org.jboss.logging + jboss-logging-annotations + + + + org.hibernate.search + hibernate-search-util-internal-test-common + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.moditect + moditect-maven-plugin + + + add-module-infos + + none + + + + + org.hibernate.search + hibernate-search-metamodel-generator-plugin + ${project.version} + + + generate + + generate-metamodel + + generate-sources + + true + + org.hibernate.search.metamodel.generator.model.MyEntity + org.hibernate.search.metamodel.generator.model.MyProgrammaticEntity + + + org.hibernate.search.metamodel.generator.model + + + org.hibernate.search.metamodel.generator.model.MyConfigurer + + + + + + + + diff --git a/metamodel/generator-test/model/src/main/java/org/hibernate/search/metamodel/generator/model/MyConfigurer.java b/metamodel/generator-test/model/src/main/java/org/hibernate/search/metamodel/generator/model/MyConfigurer.java new file mode 100644 index 00000000000..b2a031f0156 --- /dev/null +++ b/metamodel/generator-test/model/src/main/java/org/hibernate/search/metamodel/generator/model/MyConfigurer.java @@ -0,0 +1,28 @@ +/* + * Hibernate Search, full-text search for your domain model + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.search.metamodel.generator.model; + +import org.hibernate.search.engine.backend.types.Projectable; +import org.hibernate.search.engine.backend.types.Sortable; +import org.hibernate.search.mapper.orm.mapping.HibernateOrmMappingConfigurationContext; +import org.hibernate.search.mapper.orm.mapping.HibernateOrmSearchMappingConfigurer; +import org.hibernate.search.mapper.pojo.mapping.definition.programmatic.ProgrammaticMappingConfigurationContext; +import org.hibernate.search.mapper.pojo.mapping.definition.programmatic.TypeMappingStep; + +public class MyConfigurer implements HibernateOrmSearchMappingConfigurer { + @Override + public void configure(HibernateOrmMappingConfigurationContext context) { + ProgrammaticMappingConfigurationContext mapping = context.programmaticMapping(); + TypeMappingStep bookMapping = mapping.type( MyProgrammaticEntity.class ); + bookMapping.indexed(); + bookMapping.property( "text" ) + .fullTextField() + .projectable( Projectable.YES ); + bookMapping.property( "number" ) + .genericField().sortable( Sortable.YES ); + } +} diff --git a/metamodel/generator-test/model/src/main/java/org/hibernate/search/metamodel/generator/model/MyEntity.java b/metamodel/generator-test/model/src/main/java/org/hibernate/search/metamodel/generator/model/MyEntity.java new file mode 100644 index 00000000000..04d9416076b --- /dev/null +++ b/metamodel/generator-test/model/src/main/java/org/hibernate/search/metamodel/generator/model/MyEntity.java @@ -0,0 +1,23 @@ +/* + * Hibernate Search, full-text search for your domain model + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.search.metamodel.generator.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; + +import org.hibernate.search.mapper.pojo.mapping.definition.annotation.FullTextField; +import org.hibernate.search.mapper.pojo.mapping.definition.annotation.Indexed; + +@Indexed +@Entity +public class MyEntity { + @Id + Long id; + + @FullTextField + String text; +} diff --git a/metamodel/generator-test/model/src/main/java/org/hibernate/search/metamodel/generator/model/MyProgrammaticEntity.java b/metamodel/generator-test/model/src/main/java/org/hibernate/search/metamodel/generator/model/MyProgrammaticEntity.java new file mode 100644 index 00000000000..3d715e2da4e --- /dev/null +++ b/metamodel/generator-test/model/src/main/java/org/hibernate/search/metamodel/generator/model/MyProgrammaticEntity.java @@ -0,0 +1,20 @@ +/* + * Hibernate Search, full-text search for your domain model + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.search.metamodel.generator.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; + +@Entity +public class MyProgrammaticEntity { + @Id + Long id; + + String text; + + Integer number; +} diff --git a/metamodel/generator-test/pom.xml b/metamodel/generator-test/pom.xml new file mode 100644 index 00000000000..df1d9015903 --- /dev/null +++ b/metamodel/generator-test/pom.xml @@ -0,0 +1,21 @@ + + 4.0.0 + + org.hibernate.search + hibernate-search-parent-integrationtest + 7.2.0-SNAPSHOT + ../../build/parents/integrationtest + + pom + hibernate-search-metamodel-generator-test-parent + + + false + + + + model + generation + + diff --git a/pom.xml b/pom.xml index d8435af81ad..241d481af91 100644 --- a/pom.xml +++ b/pom.xml @@ -186,6 +186,8 @@ build/parents/integrationtest build/parents/springtest integrationtest + metamodel/generator-test + metamodel/generator-plugin documentation diff --git a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/TestConfigurationProvider.java b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/TestConfigurationProvider.java index e03f717584e..853e54e079c 100644 --- a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/TestConfigurationProvider.java +++ b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/TestConfigurationProvider.java @@ -36,7 +36,7 @@ public final class TestConfigurationProvider private static final String STARTUP_TIMESTAMP = new SimpleDateFormat( "yyyy-MM-dd-HH-mm-ss.SSS", Locale.ROOT ) .format( new Date() ); - private String testId; + private String testId = UUID.randomUUID().toString(); @Override public void afterAll(ExtensionContext context) { diff --git a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/aggregation/dsl/impl/StubSearchAggregationFactory.java b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/aggregation/dsl/impl/StubSearchAggregationFactory.java index 12c163ef229..131741c960c 100644 --- a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/aggregation/dsl/impl/StubSearchAggregationFactory.java +++ b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/aggregation/dsl/impl/StubSearchAggregationFactory.java @@ -9,17 +9,20 @@ import org.hibernate.search.engine.search.aggregation.spi.SearchAggregationIndexScope; import org.hibernate.search.engine.search.predicate.dsl.SearchPredicateFactory; -public class StubSearchAggregationFactory +public class StubSearchAggregationFactory extends - AbstractSearchAggregationFactory, SearchPredicateFactory> { + AbstractSearchAggregationFactory, + SearchAggregationIndexScope, + SearchPredicateFactory> { public StubSearchAggregationFactory( - SearchAggregationDslContext, SearchPredicateFactory> dslContext) { + SearchAggregationDslContext, SearchPredicateFactory> dslContext) { super( dslContext ); } @Override - public StubSearchAggregationFactory withRoot(String objectFieldPath) { - return new StubSearchAggregationFactory( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ), + public StubSearchAggregationFactory withRoot(String objectFieldPath) { + return new StubSearchAggregationFactory<>( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ), dslContext.predicateFactory().withRoot( objectFieldPath ) ) ); } } diff --git a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/common/impl/StubSearchIndexScope.java b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/common/impl/StubSearchIndexScope.java index c1a44de7403..03a5a388393 100644 --- a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/common/impl/StubSearchIndexScope.java +++ b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/common/impl/StubSearchIndexScope.java @@ -108,23 +108,23 @@ public

SearchQueryBuilder

select(BackendSessionContext sessionContext, } @Override - public SearchPredicateFactory predicateFactory() { - return new StubSearchPredicateFactory( SearchPredicateDslContext.root( this ) ); + public SearchPredicateFactory predicateFactory() { + return new StubSearchPredicateFactory<>( SearchPredicateDslContext.root( this ) ); } @Override - public SearchSortFactory sortFactory() { - return new StubSearchSortFactory( SearchSortDslContext.root( this, StubSearchSortFactory::new, predicateFactory() ) ); + public SearchSortFactory sortFactory() { + return new StubSearchSortFactory<>( SearchSortDslContext.root( this, StubSearchSortFactory::new, predicateFactory() ) ); } @Override - public SearchProjectionFactory projectionFactory() { + public SearchProjectionFactory projectionFactory() { return new StubSearchProjectionFactory<>( SearchProjectionDslContext.root( this ) ); } @Override - public SearchAggregationFactory aggregationFactory() { - return new StubSearchAggregationFactory( SearchAggregationDslContext.root( this, predicateFactory() ) ); + public SearchAggregationFactory aggregationFactory() { + return new StubSearchAggregationFactory( SearchAggregationDslContext.root( this, predicateFactory() ) ); } @Override diff --git a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/predicate/dsl/impl/StubSearchPredicateFactory.java b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/predicate/dsl/impl/StubSearchPredicateFactory.java index 62ee7125dfc..bc390495502 100644 --- a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/predicate/dsl/impl/StubSearchPredicateFactory.java +++ b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/predicate/dsl/impl/StubSearchPredicateFactory.java @@ -8,15 +8,15 @@ import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext; import org.hibernate.search.engine.search.predicate.spi.SearchPredicateIndexScope; -public class StubSearchPredicateFactory - extends AbstractSearchPredicateFactory> { +public class StubSearchPredicateFactory + extends AbstractSearchPredicateFactory, SearchPredicateIndexScope> { public StubSearchPredicateFactory( SearchPredicateDslContext> dslContext) { super( dslContext ); } @Override - public StubSearchPredicateFactory withRoot(String objectFieldPath) { - return new StubSearchPredicateFactory( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ) ) ); + public StubSearchPredicateFactory withRoot(String objectFieldPath) { + return new StubSearchPredicateFactory<>( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ) ) ); } } diff --git a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/predicate/impl/StubSearchPredicate.java b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/predicate/impl/StubSearchPredicate.java index f7c55d26124..b3306c03f97 100644 --- a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/predicate/impl/StubSearchPredicate.java +++ b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/predicate/impl/StubSearchPredicate.java @@ -296,7 +296,7 @@ public void nested(SearchPredicate nestedPredicate) { } @Override - public void factory(SearchPredicateFactory factory) { + public void factory(SearchPredicateFactory factory) { // No-op, just simulates a call on this object } diff --git a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/projection/dsl/impl/StubSearchProjectionFactory.java b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/projection/dsl/impl/StubSearchProjectionFactory.java index 3bf23351676..17b012f3cba 100644 --- a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/projection/dsl/impl/StubSearchProjectionFactory.java +++ b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/projection/dsl/impl/StubSearchProjectionFactory.java @@ -8,14 +8,15 @@ import org.hibernate.search.engine.search.projection.dsl.spi.SearchProjectionDslContext; import org.hibernate.search.engine.search.projection.spi.SearchProjectionIndexScope; -public class StubSearchProjectionFactory - extends AbstractSearchProjectionFactory, SearchProjectionIndexScope, R, E> { +public class StubSearchProjectionFactory + extends + AbstractSearchProjectionFactory, SearchProjectionIndexScope, R, E> { public StubSearchProjectionFactory(SearchProjectionDslContext> dslContext) { super( dslContext ); } @Override - public StubSearchProjectionFactory withRoot(String objectFieldPath) { + public StubSearchProjectionFactory withRoot(String objectFieldPath) { return new StubSearchProjectionFactory<>( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ) ) ); } } diff --git a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/sort/dsl/impl/StubSearchSortFactory.java b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/sort/dsl/impl/StubSearchSortFactory.java index bd1f47d603f..02f3db7fa94 100644 --- a/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/sort/dsl/impl/StubSearchSortFactory.java +++ b/util/internal/integrationtest/common/src/main/java/org/hibernate/search/util/impl/integrationtest/common/stub/backend/search/sort/dsl/impl/StubSearchSortFactory.java @@ -9,15 +9,17 @@ import org.hibernate.search.engine.search.sort.dsl.spi.SearchSortDslContext; import org.hibernate.search.engine.search.sort.spi.SearchSortIndexScope; -public class StubSearchSortFactory - extends AbstractSearchSortFactory, SearchPredicateFactory> { - public StubSearchSortFactory(SearchSortDslContext, SearchPredicateFactory> dslContext) { +public class StubSearchSortFactory + extends + AbstractSearchSortFactory, SearchSortIndexScope, SearchPredicateFactory> { + public StubSearchSortFactory( + SearchSortDslContext, SearchPredicateFactory> dslContext) { super( dslContext ); } @Override - public StubSearchSortFactory withRoot(String objectFieldPath) { - return new StubSearchSortFactory( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ), + public StubSearchSortFactory withRoot(String objectFieldPath) { + return new StubSearchSortFactory<>( dslContext.rescope( dslContext.scope().withRoot( objectFieldPath ), dslContext.predicateFactory().withRoot( objectFieldPath ) ) ); } } diff --git a/util/internal/integrationtest/mapper/orm/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/orm/DatabaseContainer.java b/util/internal/integrationtest/mapper/orm/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/orm/DatabaseContainer.java index 75b6cee760e..3b3b6866637 100644 --- a/util/internal/integrationtest/mapper/orm/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/orm/DatabaseContainer.java +++ b/util/internal/integrationtest/mapper/orm/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/orm/DatabaseContainer.java @@ -48,7 +48,7 @@ private DatabaseContainer() { static { - String name = System.getProperty( "org.hibernate.search.integrationtest.orm.database.kind", "" ); + String name = System.getProperty( "org.hibernate.search.integrationtest.orm.database.kind", "h2" ); Path containers = Path.of( System.getProperty( "org.hibernate.search.integrationtest.container.directory", "" ) ); DATABASE = SupportedDatabase.from( name ); diff --git a/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/GenericStubMappingScope.java b/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/GenericStubMappingScope.java index b624b60013f..87da050e8d7 100644 --- a/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/GenericStubMappingScope.java +++ b/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/GenericStubMappingScope.java @@ -19,32 +19,32 @@ * A wrapper around {@link MappedIndexScope} providing some syntactic sugar, * such as methods that do not force to provide a session context. */ -public class GenericStubMappingScope { +public class GenericStubMappingScope { private final StubMapping mapping; - private final MappedIndexScope delegate; + private final MappedIndexScope delegate; private final SearchLoadingContext loadingContext; - GenericStubMappingScope(StubMapping mapping, MappedIndexScope delegate, + GenericStubMappingScope(StubMapping mapping, MappedIndexScope delegate, SearchLoadingContext loadingContext) { this.mapping = mapping; this.delegate = delegate; this.loadingContext = loadingContext; } - public SearchQuerySelectStep query() { + public SearchQuerySelectStep query() { return query( mapping.session() ); } - public SearchQuerySelectStep query(StubSession sessionContext) { + public SearchQuerySelectStep query(StubSession sessionContext) { return query( sessionContext, new StubLoadingOptionsStep() ); } - public SearchQuerySelectStep query(LOS loadingOptionsStep) { + public SearchQuerySelectStep query(LOS loadingOptionsStep) { return query( mapping.session(), loadingOptionsStep ); } - public SearchQuerySelectStep query(StubSession sessionContext, + public SearchQuerySelectStep query(StubSession sessionContext, LOS loadingOptionsStep) { SearchLoadingContextBuilder loadingContextBuilder = new SearchLoadingContextBuilder() { @Override @@ -60,19 +60,19 @@ public SearchLoadingContext build() { return delegate.search( sessionContext, loadingContextBuilder ); } - public SearchPredicateFactory predicate() { + public SearchPredicateFactory predicate() { return delegate.predicate(); } - public SearchSortFactory sort() { + public SearchSortFactory sort() { return delegate.sort(); } - public SearchProjectionFactory projection() { + public SearchProjectionFactory projection() { return delegate.projection(); } - public SearchAggregationFactory aggregation() { + public SearchAggregationFactory aggregation() { return delegate.aggregation(); } diff --git a/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/StubMappedIndex.java b/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/StubMappedIndex.java index 5bb74c50260..4e29b7f6274 100644 --- a/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/StubMappedIndex.java +++ b/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/StubMappedIndex.java @@ -195,7 +195,7 @@ public IndexWorkspace createWorkspace(String tenantId) { /** * @return {@code createScope().query()}. */ - public SearchQuerySelectStep query() { + public SearchQuerySelectStep query() { return createScope().query(); } @@ -203,7 +203,7 @@ public IndexWorkspace createWorkspace(String tenantId) { * @return A scope containing this index only. */ public StubMappingScope createScope() { - MappedIndexScopeBuilder builder = + MappedIndexScopeBuilder builder = delegate().createScopeBuilder( mapping ); return new StubMappingScope( mapping, builder.build() ); } @@ -212,7 +212,7 @@ public StubMappingScope createScope() { * @return A scope containing this index and the given other indexes. */ public StubMappingScope createScope(StubMappedIndex... others) { - MappedIndexScopeBuilder builder = + MappedIndexScopeBuilder builder = delegate().createScopeBuilder( mapping ); for ( StubMappedIndex other : others ) { other.delegate().addTo( builder ); @@ -223,14 +223,14 @@ public StubMappingScope createScope(StubMappedIndex... others) { /** * @return A scope containing this index and the given other indexes. */ - public GenericStubMappingScope createGenericScope( + public GenericStubMappingScope createGenericScope( SearchLoadingContext loadingContext, StubMappedIndex... others) { if ( ( (StubMappingImpl) mapping ).fixture.typeContexts == null ) { throw new AssertionFailure( "When testing loading with a \"generic\" scope," + " you must also set custom type contexts with consistent types." + " Use mapping.with().typeContext(...).run(...)." ); } - MappedIndexScopeBuilder builder = delegate().createScopeBuilder( mapping ); + MappedIndexScopeBuilder builder = delegate().createScopeBuilder( mapping ); for ( StubMappedIndex other : others ) { other.delegate().addTo( builder ); } diff --git a/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/StubMappingScope.java b/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/StubMappingScope.java index 1ab021f7e73..4925a4db525 100644 --- a/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/StubMappingScope.java +++ b/util/internal/integrationtest/mapper/stub/src/main/java/org/hibernate/search/util/impl/integrationtest/mapper/stub/StubMappingScope.java @@ -14,9 +14,9 @@ *

* This is a simpler version of {@link GenericStubMappingScope} that allows user to skip the generic parameters. */ -public class StubMappingScope extends GenericStubMappingScope { +public class StubMappingScope extends GenericStubMappingScope { - StubMappingScope(StubMapping mapping, MappedIndexScope delegate) { + StubMappingScope(StubMapping mapping, MappedIndexScope delegate) { super( mapping, delegate, new StubSearchLoadingContext() ); } } diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/AbstractConnectedMultiFieldsQueryBuilder.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/AbstractConnectedMultiFieldsQueryBuilder.java index 59fb8154d1d..b707a85dfbb 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/AbstractConnectedMultiFieldsQueryBuilder.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/AbstractConnectedMultiFieldsQueryBuilder.java @@ -34,7 +34,7 @@ public final Query createQuery() { } private SearchPredicate createPredicate() { - SearchPredicateFactory factory = queryContext.getScope().predicate(); + SearchPredicateFactory factory = queryContext.getScope().predicate(); if ( fieldsContext.size() == 1 ) { F finalStep = createPredicate( factory, fieldsContext.getFirst() ); queryCustomizer.applyScoreOptions( finalStep ); @@ -42,7 +42,7 @@ private SearchPredicate createPredicate() { return queryCustomizer.applyFilter( factory, predicate ); } else { - BooleanPredicateClausesStep boolStep = factory.bool().with( b -> { + BooleanPredicateClausesStep boolStep = factory.bool().with( b -> { for ( FieldContext fieldContext : fieldsContext ) { b.should( createPredicate( factory, fieldContext ) ); } @@ -53,5 +53,5 @@ private SearchPredicate createPredicate() { } } - protected abstract F createPredicate(SearchPredicateFactory factory, FieldContext fieldContext); + protected abstract F createPredicate(SearchPredicateFactory factory, FieldContext fieldContext); } diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/BooleanQueryBuilder.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/BooleanQueryBuilder.java index 75fdc1a6b6c..fa3b63c5b1d 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/BooleanQueryBuilder.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/BooleanQueryBuilder.java @@ -119,8 +119,8 @@ private SearchPredicate createPredicate() { throw log.booleanQueryWithoutClauses(); } - SearchPredicateFactory factory = queryContext.getScope().predicate(); - BooleanPredicateClausesStep step = factory.bool(); + SearchPredicateFactory factory = queryContext.getScope().predicate(); + BooleanPredicateClausesStep step = factory.bool(); for ( BooleanClause clause : clauses ) { SearchPredicate predicate = factory.extension( LuceneExtension.get() ) .fromLuceneQuery( clause.getQuery() ).toPredicate(); diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedAllContext.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedAllContext.java index 1f98f6fb90e..f1ee2168335 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedAllContext.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedAllContext.java @@ -38,9 +38,9 @@ public Query createQuery() { } private SearchPredicate createPredicate() { - SearchPredicateFactory factory = queryContext.getScope().predicate(); + SearchPredicateFactory factory = queryContext.getScope().predicate(); - MatchAllPredicateOptionsStep optionsStep = factory.matchAll(); + MatchAllPredicateOptionsStep optionsStep = factory.matchAll(); for ( Query query : except ) { optionsStep = optionsStep.except( factory.extension( LuceneExtension.get() ).fromLuceneQuery( query ) ); diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsMatchQueryBuilder.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsMatchQueryBuilder.java index f06b4354dca..3008e505dce 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsMatchQueryBuilder.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsMatchQueryBuilder.java @@ -27,7 +27,7 @@ public ConnectedMultiFieldsMatchQueryBuilder(QueryBuildingContext queryContext, } @Override - protected MatchPredicateOptionsStep createPredicate(SearchPredicateFactory factory, FieldContext fieldContext) { + protected MatchPredicateOptionsStep createPredicate(SearchPredicateFactory factory, FieldContext fieldContext) { MatchPredicateOptionsStep optionsStep = fieldContext.applyBoost( factory.match().field( fieldContext.getField() ) ) .matching( value, fieldContext.getValueModel() ); diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsPhraseQueryBuilder.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsPhraseQueryBuilder.java index 4601ecdce49..bb8ad9eb30c 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsPhraseQueryBuilder.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsPhraseQueryBuilder.java @@ -24,7 +24,7 @@ public ConnectedMultiFieldsPhraseQueryBuilder(QueryBuildingContext queryContext, } @Override - protected PhrasePredicateOptionsStep createPredicate(SearchPredicateFactory factory, FieldContext fieldContext) { + protected PhrasePredicateOptionsStep createPredicate(SearchPredicateFactory factory, FieldContext fieldContext) { PhrasePredicateOptionsStep optionsStep = fieldContext.applyBoost( factory.phrase().field( fieldContext.getField() ) ) .matching( phraseContext.getSentence() ); diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsRangeQueryBuilder.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsRangeQueryBuilder.java index c5d996cf905..24162a53758 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsRangeQueryBuilder.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsRangeQueryBuilder.java @@ -45,7 +45,7 @@ else if ( rangeContext.getTo() != null ) { } @Override - protected RangePredicateOptionsStep createPredicate(SearchPredicateFactory factory, FieldContext fieldContext) { + protected RangePredicateOptionsStep createPredicate(SearchPredicateFactory factory, FieldContext fieldContext) { return fieldContext.applyBoost( factory.range().field( fieldContext.getField() ) ) .within( Range.between( diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsSimpleQueryStringQueryBuilder.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsSimpleQueryStringQueryBuilder.java index 661b5a704c6..18b8187f2ff 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsSimpleQueryStringQueryBuilder.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsSimpleQueryStringQueryBuilder.java @@ -53,10 +53,10 @@ public Query createQuery() { } private SearchPredicate createPredicate() { - SearchPredicateFactory factory = queryContext.getScope().predicate(); + SearchPredicateFactory factory = queryContext.getScope().predicate(); - SimpleQueryStringPredicateFieldStep fieldStep = factory.simpleQueryString(); - SimpleQueryStringPredicateFieldMoreStep fieldMoreStep = null; + SimpleQueryStringPredicateFieldStep fieldStep = factory.simpleQueryString(); + SimpleQueryStringPredicateFieldMoreStep fieldMoreStep = null; for ( FieldContext fieldContext : fieldsContext ) { fieldMoreStep = fieldContext.applyBoost( fieldStep.field( fieldContext.getField() ) ); } diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsWildcardQueryBuilder.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsWildcardQueryBuilder.java index 13e435d6f38..0c8c447c916 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsWildcardQueryBuilder.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsWildcardQueryBuilder.java @@ -25,7 +25,7 @@ public ConnectedMultiFieldsWildcardQueryBuilder(QueryBuildingContext queryContex } @Override - protected WildcardPredicateOptionsStep createPredicate(SearchPredicateFactory factory, FieldContext fieldContext) { + protected WildcardPredicateOptionsStep createPredicate(SearchPredicateFactory factory, FieldContext fieldContext) { return fieldContext.applyBoost( factory.wildcard().field( fieldContext.getField() ) ) .matching( value.toString() ); } diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedSpatialQueryBuilder.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedSpatialQueryBuilder.java index 06e74c0be31..7214c739608 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedSpatialQueryBuilder.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedSpatialQueryBuilder.java @@ -35,7 +35,7 @@ public Query createQuery() { } private SearchPredicate createPredicate() { - SearchPredicateFactory factory = queryContext.getScope().predicate(); + SearchPredicateFactory factory = queryContext.getScope().predicate(); SpatialWithinPredicateOptionsStep optionsStep = factory.spatial().within() .field( spatialContext.getCoordinatesField() ) diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/DiscreteFacetRequest.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/DiscreteFacetRequest.java index fd4ea55c680..77cabb7870d 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/DiscreteFacetRequest.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/DiscreteFacetRequest.java @@ -25,8 +25,8 @@ public class DiscreteFacetRequest extends FacetingRequestImpl> } @Override - public AggregationFinalStep> requestAggregation(SearchAggregationFactory factory) { - TermsAggregationOptionsStep> optionsStep = factory + public AggregationFinalStep> requestAggregation(SearchAggregationFactory factory) { + TermsAggregationOptionsStep> optionsStep = factory .terms().field( getFieldName(), Object.class ); if ( maxNumberOfFacets >= 0 ) { optionsStep = optionsStep.maxTermCount( maxNumberOfFacets ); diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/FacetingRequestImpl.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/FacetingRequestImpl.java index 8d8a3275806..237bb15f1b2 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/FacetingRequestImpl.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/FacetingRequestImpl.java @@ -90,7 +90,7 @@ public void setMaxNumberOfFacets(int maxNumberOfFacets) { this.maxNumberOfFacets = maxNumberOfFacets; } - public abstract AggregationFinalStep requestAggregation(SearchAggregationFactory factory); + public abstract AggregationFinalStep requestAggregation(SearchAggregationFactory factory); public abstract List toFacets(A aggregation); diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/MinimumShouldMatchContextImpl.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/MinimumShouldMatchContextImpl.java index 6654532c3fc..9e7c010b3d2 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/MinimumShouldMatchContextImpl.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/MinimumShouldMatchContextImpl.java @@ -28,7 +28,7 @@ public void requirePercent(int matchingClausesPercent) { ); } - void applyMinimum(BooleanPredicateClausesStep step) { + void applyMinimum(BooleanPredicateClausesStep step) { if ( minimumShouldMatchConstraint != null ) { minimumShouldMatchConstraint.apply( step ); } @@ -50,7 +50,7 @@ private static final class MinimumShouldMatchConstraint { this.matchingClausesPercent = matchingClausesPercent; } - void apply(BooleanPredicateClausesStep step) { + void apply(BooleanPredicateClausesStep step) { if ( matchingClausesNumber != null ) { step.minimumShouldMatchNumber( matchingClausesNumber ); } diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/QueryCustomizer.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/QueryCustomizer.java index ce842463f29..2411e3c0e84 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/QueryCustomizer.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/QueryCustomizer.java @@ -55,16 +55,16 @@ public void applyScoreOptions(PredicateScoreStep step) { } } - public SearchPredicate applyFilter(SearchPredicateFactory factory, SearchPredicate predicate) { + public SearchPredicate applyFilter(SearchPredicateFactory factory, SearchPredicate predicate) { if ( filter == null ) { return predicate; } - BooleanPredicateClausesStep step = factory.bool().must( predicate ); + BooleanPredicateClausesStep step = factory.bool().must( predicate ); applyFilter( factory, step ); return step.toPredicate(); } - public void applyFilter(SearchPredicateFactory factory, BooleanPredicateOptionsCollector collector) { + public void applyFilter(SearchPredicateFactory factory, BooleanPredicateOptionsCollector collector) { if ( filter == null ) { return; } diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/RangeFacetRequest.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/RangeFacetRequest.java index 0500afe2b6d..e1147862a7a 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/RangeFacetRequest.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/impl/RangeFacetRequest.java @@ -32,10 +32,10 @@ public class RangeFacetRequest extends FacetingRequestImpl, Long } @Override - public AggregationFinalStep, Long>> requestAggregation(SearchAggregationFactory factory) { - RangeAggregationRangeStep rangeStep = factory + public AggregationFinalStep, Long>> requestAggregation(SearchAggregationFactory factory) { + RangeAggregationRangeStep rangeStep = factory .range().field( getFieldName(), getFacetValueType() ); - RangeAggregationRangeMoreStep rangeMoreStep = null; + RangeAggregationRangeMoreStep rangeMoreStep = null; for ( FacetRange facetRange : facetRangeList ) { rangeMoreStep = rangeStep.range( facetRange.range() ); rangeStep = rangeMoreStep; diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/sort/impl/SortFieldStates.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/sort/impl/SortFieldStates.java index de96eb6958a..9bada435ca0 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/sort/impl/SortFieldStates.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/dsl/sort/impl/SortFieldStates.java @@ -36,8 +36,8 @@ public class SortFieldStates { private static final Object MISSING_VALUE_LAST = new Object(); private static final Object MISSING_VALUE_FIRST = new Object(); - private final SearchSortFactory factory; - private final CompositeSortComponentsStep delegate; + private final SearchSortFactory factory; + private final CompositeSortComponentsStep delegate; private Type currentType; private String currentName; @@ -92,7 +92,7 @@ public void closeSortField() { .fromLuceneSortField( currentSortFieldNativeSortDescription ).toSort(); } else if ( currentType == Type.SCORE ) { - ScoreSortOptionsStep optionsStep = factory.score(); + ScoreSortOptionsStep optionsStep = factory.score(); applyOrder( optionsStep ); sort = optionsStep.toSort(); } @@ -110,12 +110,12 @@ else if ( coordinates != null || currentLatitude != null ) { else { center = GeoPoint.of( currentLatitude, currentLongitude ); } - DistanceSortOptionsStep optionsStep = factory.distance( currentName, center ); + DistanceSortOptionsStep optionsStep = factory.distance( currentName, center ); applyOrder( optionsStep ); sort = optionsStep.toSort(); } else { - FieldSortOptionsStep optionsStep = factory.field( currentName ); + FieldSortOptionsStep optionsStep = factory.field( currentName ); applyOrder( optionsStep ); applyMissing( optionsStep ); sort = optionsStep.toSort(); @@ -130,7 +130,7 @@ private void applyOrder(SortOrderStep step) { } } - private void applyMissing(FieldSortOptionsStep step) { + private void applyMissing(FieldSortOptionsStep step) { if ( currentMissingValue == null ) { return; } diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/impl/FacetManagerImpl.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/impl/FacetManagerImpl.java index af9012a4260..a1dce18e704 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/impl/FacetManagerImpl.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/impl/FacetManagerImpl.java @@ -78,7 +78,8 @@ public List getFacets(String facetingName) { return facets; } - SearchQueryOptionsStep contributeAggregations(SearchQueryOptionsStep optionsStep) { + SearchQueryOptionsStep contributeAggregations( + SearchQueryOptionsStep optionsStep) { if ( !hasFacets() ) { return optionsStep; } @@ -103,8 +104,8 @@ private boolean hasFacets() { return facetRequests != null && !facetRequests.isEmpty(); } - private SearchQueryOptionsStep requestAggregation( - SearchQueryOptionsStep optionsStep, + private SearchQueryOptionsStep requestAggregation( + SearchQueryOptionsStep optionsStep, FacetingRequestImpl facetRequest) { return optionsStep.aggregation( facetRequest.getKey(), facetRequest::requestAggregation ); } diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/impl/HSQueryImpl.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/impl/HSQueryImpl.java index d0a06ef2c2e..94811809529 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/impl/HSQueryImpl.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/impl/HSQueryImpl.java @@ -213,7 +213,7 @@ private SearchQuery createSearchQuery() { if ( sort == null ) { sort = scope.sort().score().toSort(); } - SearchQueryOptionsStep optionsStep = session.search( scope ) + SearchQueryOptionsStep optionsStep = session.search( scope ) .select( projection ) .where( predicate ) .sort( sort ); @@ -235,7 +235,7 @@ private SearchQuery createSearchQuery() { } private SearchProjection createCompositeProjection() { - SearchProjectionFactory factory = scope.projection(); + SearchProjectionFactory factory = scope.projection(); if ( projectedFields == null || projectedFields.length == 0 ) { // No tuple, so we ignore the tupleTransformer (Search 5 behavior) @@ -259,7 +259,7 @@ private SearchProjection createCompositeProjection() { } private SearchProjection createProjection(String field) { - SearchProjectionFactory factory = scope.projection(); + SearchProjectionFactory factory = scope.projection(); if ( field == null ) { // Hack to return null when a null field name is requested, // which is what Search 5 used to do... diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/spi/V5MigrationSearchSession.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/spi/V5MigrationSearchSession.java index 9d0786fd272..3129f386468 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/spi/V5MigrationSearchSession.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/query/engine/spi/V5MigrationSearchSession.java @@ -17,6 +17,6 @@ @Deprecated public interface V5MigrationSearchSession { - SearchQuerySelectStep search(V5MigrationSearchScope scope); + SearchQuerySelectStep search(V5MigrationSearchScope scope); } diff --git a/v5migrationhelper/engine/src/main/java/org/hibernate/search/scope/spi/V5MigrationSearchScope.java b/v5migrationhelper/engine/src/main/java/org/hibernate/search/scope/spi/V5MigrationSearchScope.java index 1d5154bf3b9..21eb23a2413 100644 --- a/v5migrationhelper/engine/src/main/java/org/hibernate/search/scope/spi/V5MigrationSearchScope.java +++ b/v5migrationhelper/engine/src/main/java/org/hibernate/search/scope/spi/V5MigrationSearchScope.java @@ -23,16 +23,16 @@ public interface V5MigrationSearchScope { Set indexManagers(); - SearchPredicateFactory predicate(); + SearchPredicateFactory predicate(); - SearchSortFactory sort(); + SearchSortFactory sort(); - SearchProjectionFactory projection(); + SearchProjectionFactory projection(); SearchProjection idProjection(); SearchProjection> objectClassProjection(); - SearchAggregationFactory aggregation(); + SearchAggregationFactory aggregation(); } diff --git a/v5migrationhelper/orm/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java b/v5migrationhelper/orm/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java index f0fbd8d8ea1..e770dccb307 100644 --- a/v5migrationhelper/orm/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java +++ b/v5migrationhelper/orm/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java @@ -148,7 +148,7 @@ else if ( type.equals( FullTextSession.class ) ) { } @Override - public SearchQuerySelectStep search(V5MigrationSearchScope scope) { + public SearchQuerySelectStep search(V5MigrationSearchScope scope) { SearchSession searchSession = searchSession(); return searchSession.search( ( (V5MigrationOrmSearchScopeAdapter) scope ).toSearchScope() ); } diff --git a/v5migrationhelper/orm/src/main/java/org/hibernate/search/scope/impl/V5MigrationOrmSearchScopeAdapter.java b/v5migrationhelper/orm/src/main/java/org/hibernate/search/scope/impl/V5MigrationOrmSearchScopeAdapter.java index bd46ff4b5e3..ebde28d1a89 100644 --- a/v5migrationhelper/orm/src/main/java/org/hibernate/search/scope/impl/V5MigrationOrmSearchScopeAdapter.java +++ b/v5migrationhelper/orm/src/main/java/org/hibernate/search/scope/impl/V5MigrationOrmSearchScopeAdapter.java @@ -20,9 +20,9 @@ public class V5MigrationOrmSearchScopeAdapter implements V5MigrationSearchScope { - private final SearchScope delegate; + private final SearchScope delegate; - public V5MigrationOrmSearchScopeAdapter(SearchScope delegate) { + public V5MigrationOrmSearchScopeAdapter(SearchScope delegate) { this.delegate = delegate; } @@ -37,23 +37,23 @@ public Set indexManagers() { } @Override - public SearchPredicateFactory predicate() { + public SearchPredicateFactory predicate() { return delegate.predicate(); } @Override - public SearchSortFactory sort() { + public SearchSortFactory sort() { return delegate.sort(); } @Override - public SearchProjectionFactory projection() { + public SearchProjectionFactory projection() { return delegate.projection(); } @Override public SearchProjection idProjection() { - SearchProjectionFactory factory = delegate.projection(); + SearchProjectionFactory factory = delegate.projection(); // Not using factory.id() because that one throws an exception if IDs have inconsistent types. return factory.composite().from( factory.entityReference() ) .as( EntityReference::id ).toProjection(); @@ -61,17 +61,17 @@ public SearchProjection idProjection() { @Override public SearchProjection> objectClassProjection() { - SearchProjectionFactory factory = delegate.projection(); + SearchProjectionFactory factory = delegate.projection(); return factory.composite().from( factory.entityReference() ) .as( EntityReference::type ).toProjection(); } @Override - public SearchAggregationFactory aggregation() { + public SearchAggregationFactory aggregation() { return delegate.aggregation(); } - public SearchScope toSearchScope() { + public SearchScope toSearchScope() { return delegate; } }