Skip to content

Commit 3c6ad42

Browse files
committed
HSEARCH-5300 More cleanups and improvements
1 parent ed423f1 commit 3c6ad42

File tree

85 files changed

+3998
-456
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+3998
-456
lines changed

build/jqassistant/rules/rules.xml

+2
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,7 @@
472472
<requiresConcept refId="hsearch:UtilArtifacts" />
473473
<requiresConcept refId="hsearch:Main" />
474474
<requiresConcept refId="hsearch:Impl" />
475+
<requiresConcept refId="hsearch:SuppressJQAssistant" />
475476
<description>
476477
Main (non-test) types must not depend on implementation types from other modules.
477478
SPIs must be used for such dependencies.
@@ -485,6 +486,7 @@
485486
artifact1 <> artifact2
486487
// Exceptions
487488
AND NOT artifact2:Util
489+
AND NOT type1:SuppressJQAssistant
488490
RETURN
489491
artifact1, type1, artifact2, type2
490492
]]></cypher>

build/parents/build/pom.xml

+15
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,21 @@
722722
<artifactId>hibernate-search-integrationtest-metamodel-standalone-lucene</artifactId>
723723
<version>${project.version}</version>
724724
</dependency>
725+
<dependency>
726+
<groupId>org.hibernate.search</groupId>
727+
<artifactId>hibernate-search-integrationtest-metamodel-standalone-elasticsearch</artifactId>
728+
<version>${project.version}</version>
729+
</dependency>
730+
<dependency>
731+
<groupId>org.hibernate.search</groupId>
732+
<artifactId>hibernate-search-integrationtest-metamodel-orm-lucene</artifactId>
733+
<version>${project.version}</version>
734+
</dependency>
735+
<dependency>
736+
<groupId>org.hibernate.search</groupId>
737+
<artifactId>hibernate-search-integrationtest-metamodel-orm-elasticsearch</artifactId>
738+
<version>${project.version}</version>
739+
</dependency>
725740
<dependency>
726741
<groupId>org.hibernate.search</groupId>
727742
<artifactId>hibernate-search-integrationtest-backend-lucene-next</artifactId>

build/reports/pom.xml

+12
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,18 @@
152152
<groupId>org.hibernate.search</groupId>
153153
<artifactId>hibernate-search-integrationtest-metamodel-standalone-lucene</artifactId>
154154
</dependency>
155+
<dependency>
156+
<groupId>org.hibernate.search</groupId>
157+
<artifactId>hibernate-search-integrationtest-metamodel-standalone-elasticsearch</artifactId>
158+
</dependency>
159+
<dependency>
160+
<groupId>org.hibernate.search</groupId>
161+
<artifactId>hibernate-search-integrationtest-metamodel-orm-lucene</artifactId>
162+
</dependency>
163+
<dependency>
164+
<groupId>org.hibernate.search</groupId>
165+
<artifactId>hibernate-search-integrationtest-metamodel-orm-elasticsearch</artifactId>
166+
</dependency>
155167
<dependency>
156168
<groupId>org.hibernate.search</groupId>
157169
<artifactId>hibernate-search-documentation</artifactId>

distribution/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@
256256
${basedir}/../mapper/orm-outbox-polling/src/main/java;
257257
${basedir}/../mapper/orm-jakarta-batch/core/src/main/java;
258258
${basedir}/../mapper/orm-jakarta-batch/jberet/src/main/java;
259-
${basedir}/../metamodel/processor/src/main/java;
259+
${basedir}/../metamodel/metamodel-processor/src/main/java;
260260
${basedir}/../engine/target/generated-sources/annotations;
261261
${basedir}/../util/common/target/generated-sources/annotations;
262262
${basedir}/../mapper/pojo-base/target/generated-sources/annotations;
@@ -269,7 +269,7 @@
269269
${basedir}/../mapper/orm-outbox-polling/target/generated-sources/annotations;
270270
${basedir}/../mapper/orm-jakarta-batch/core/target/generated-sources/annotations;
271271
${basedir}/../mapper/orm-jakarta-batch/jberet/target/generated-sources/annotations;
272-
${basedir}/../metamodel/processor/target/generated-sources/annotations;
272+
${basedir}/../metamodel/metamodel-processor/target/generated-sources/annotations;
273273
</sourcepath>
274274
<docfilessubdirs>true</docfilessubdirs>
275275
<packagesheader>Hibernate Search Packages</packagesheader>

engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SearchPredicateFactory.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ SimpleBooleanPredicateOptionsStep<?> or(PredicateFinalStep firstSearchPredicate,
302302
* @return The initial step of a DSL where spatial predicates can be defined.
303303
* @see SpatialPredicateInitialStep
304304
*/
305-
SpatialPredicateInitialStep spatial();
305+
SpatialPredicateInitialStep<SR> spatial();
306306

307307
/**
308308
* Match documents if they match a combination of defined named predicate clauses.

engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SpatialPredicateInitialStep.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88
/**
99
* The initial step of all spatial predicate definitions.
1010
*/
11-
public interface SpatialPredicateInitialStep {
11+
public interface SpatialPredicateInitialStep<SR> {
1212

1313
/**
1414
* Match documents where targeted fields point to a location within given bounds:
1515
* a circle (maximum distance matching), a polygon, a bounding box, ...
1616
*
1717
* @return The initial step of a DSL allowing the definition of a "within" predicate.
1818
*/
19-
SpatialWithinPredicateFieldStep<?> within();
19+
SpatialWithinPredicateFieldStep<SR, ?> within();
2020

2121
}

engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SpatialWithinPredicateFieldMoreStep.java

+35-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*/
55
package org.hibernate.search.engine.search.predicate.dsl;
66

7+
import org.hibernate.search.engine.search.reference.predicate.SpatialPredicateFieldReference;
8+
79
/**
810
* The step in a "within" predicate definition where the area to match can be set
911
* (see the superinterface {@link SpatialWithinPredicateAreaStep}),
@@ -14,7 +16,8 @@
1416
* @param <N> The type of the next step.
1517
*/
1618
public interface SpatialWithinPredicateFieldMoreStep<
17-
S extends SpatialWithinPredicateFieldMoreStep<?, N>,
19+
SR,
20+
S extends SpatialWithinPredicateFieldMoreStep<SR, ?, N>,
1821
N extends SpatialWithinPredicateOptionsStep<?>>
1922
extends SpatialWithinPredicateAreaStep<N>,
2023
MultiFieldPredicateFieldBoostStep<S> {
@@ -49,4 +52,35 @@ default S field(String fieldPath) {
4952
*/
5053
S fields(String... fieldPaths);
5154

55+
/**
56+
* Target the given field in the "within" predicate,
57+
* as an alternative to the already-targeted fields.
58+
* <p>
59+
* See {@link SpatialWithinPredicateFieldStep#field(String)} for more information on targeted fields.
60+
*
61+
* @param fieldReference The field reference representing a <a href="SearchPredicateFactory.html#field-paths">path</a> to the index field
62+
* to apply the predicate on.
63+
* @return The next step.
64+
*
65+
* @see SpatialWithinPredicateFieldStep#field(String)
66+
*/
67+
@SuppressWarnings("unchecked")
68+
default S field(SpatialPredicateFieldReference<? super SR> fieldReference) {
69+
return fields( fieldReference );
70+
}
71+
72+
/**
73+
* Target the given fields in the "within" predicate,
74+
* as an alternative to the already-targeted fields.
75+
* <p>
76+
* See {@link SpatialWithinPredicateFieldStep#fields(String...)} for more information on targeted fields.
77+
*
78+
* @param fieldReferences The field references representing <a href="SearchPredicateFactory.html#field-paths">paths</a> to the index fields
79+
* to apply the predicate on.
80+
* @return The next step.
81+
*
82+
* @see SpatialWithinPredicateFieldStep#fields(String...)
83+
*/
84+
@SuppressWarnings("unchecked")
85+
S fields(SpatialPredicateFieldReference<? super SR>... fieldReferences);
5286
}

engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/SpatialWithinPredicateFieldStep.java

+36-1
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
package org.hibernate.search.engine.search.predicate.dsl;
66

77

8+
import org.hibernate.search.engine.search.reference.predicate.SpatialPredicateFieldReference;
9+
810
/**
911
* The initial step in a "within" predicate definition, where the target field can be set.
1012
*
1113
* @param <N> The type of the next step.
1214
*/
13-
public interface SpatialWithinPredicateFieldStep<N extends SpatialWithinPredicateFieldMoreStep<?, ?>> {
15+
public interface SpatialWithinPredicateFieldStep<SR, N extends SpatialWithinPredicateFieldMoreStep<SR, ?, ?>> {
1416

1517
/**
1618
* Target the given field in the "within" predicate.
@@ -43,4 +45,37 @@ default N field(String fieldPath) {
4345
*/
4446
N fields(String... fieldPaths);
4547

48+
/**
49+
* Target the given field in the "within" predicate.
50+
* <p>
51+
* Multiple fields may be targeted by the same predicate:
52+
* the predicate will match if <em>any</em> targeted field matches.
53+
*
54+
* @param fieldReference The field reference representing a <a href="SearchPredicateFactory.html#field-paths">path</a> to the index field
55+
* to apply the predicate on.
56+
* @return The next step.
57+
*/
58+
@SuppressWarnings("unchecked")
59+
default N field(SpatialPredicateFieldReference<? super SR> fieldReference) {
60+
return fields( fieldReference );
61+
}
62+
63+
/**
64+
* Target the given fields in the "within" predicate.
65+
* <p>
66+
* Equivalent to {@link #field(String)} followed by multiple calls to
67+
* {@link RangePredicateFieldMoreStep#field(String)},
68+
* the only difference being that calls to {@link RangePredicateFieldMoreStep#boost(float)}
69+
* and other field-specific settings on the returned step will only need to be done once
70+
* and will apply to all the fields passed to this method.
71+
*
72+
* @param fieldReferences The field references representing <a href="SearchPredicateFactory.html#field-paths">paths</a> to the index fields
73+
* to apply the predicate on.
74+
* @return The next step.
75+
*
76+
* @see #field(String)
77+
*/
78+
@SuppressWarnings("unchecked")
79+
N fields(SpatialPredicateFieldReference<? super SR>... fieldReferences);
80+
4681
}

engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SpatialPredicateInitialStepImpl.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import org.hibernate.search.engine.search.predicate.dsl.SpatialWithinPredicateFieldStep;
99
import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext;
1010

11-
public final class SpatialPredicateInitialStepImpl implements SpatialPredicateInitialStep {
11+
public final class SpatialPredicateInitialStepImpl<SR> implements SpatialPredicateInitialStep<SR> {
1212

1313
private final SearchPredicateDslContext<?> dslContext;
1414

@@ -17,7 +17,7 @@ public SpatialPredicateInitialStepImpl(SearchPredicateDslContext<?> dslContext)
1717
}
1818

1919
@Override
20-
public SpatialWithinPredicateFieldStep<?> within() {
21-
return new SpatialWithinPredicateFieldStepImpl( dslContext );
20+
public SpatialWithinPredicateFieldStep<SR, ?> within() {
21+
return new SpatialWithinPredicateFieldStepImpl<>( dslContext );
2222
}
2323
}

engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SpatialWithinPredicateFieldMoreStepImpl.java

+27-14
Original file line numberDiff line numberDiff line change
@@ -19,40 +19,53 @@
1919
import org.hibernate.search.engine.search.predicate.spi.SpatialWithinBoundingBoxPredicateBuilder;
2020
import org.hibernate.search.engine.search.predicate.spi.SpatialWithinCirclePredicateBuilder;
2121
import org.hibernate.search.engine.search.predicate.spi.SpatialWithinPolygonPredicateBuilder;
22+
import org.hibernate.search.engine.search.reference.predicate.SpatialPredicateFieldReference;
2223
import org.hibernate.search.engine.spatial.DistanceUnit;
2324
import org.hibernate.search.engine.spatial.GeoBoundingBox;
2425
import org.hibernate.search.engine.spatial.GeoPoint;
2526
import org.hibernate.search.engine.spatial.GeoPolygon;
2627
import org.hibernate.search.util.common.impl.CollectionHelper;
2728
import org.hibernate.search.util.common.impl.Contracts;
2829

29-
class SpatialWithinPredicateFieldMoreStepImpl
30+
class SpatialWithinPredicateFieldMoreStepImpl<SR>
3031
implements
31-
SpatialWithinPredicateFieldMoreStep<SpatialWithinPredicateFieldMoreStepImpl, SpatialWithinPredicateOptionsStep<?>>,
32+
SpatialWithinPredicateFieldMoreStep<SR,
33+
SpatialWithinPredicateFieldMoreStepImpl<SR>,
34+
SpatialWithinPredicateOptionsStep<?>>,
3235
AbstractBooleanMultiFieldPredicateCommonState.FieldSetState {
3336

34-
private final CommonState commonState;
37+
private final CommonState<SR> commonState;
3538

3639
private final List<String> fieldPaths;
3740

3841
private final List<SearchPredicateBuilder> predicateBuilders;
3942

4043
private Float fieldSetBoost;
4144

42-
SpatialWithinPredicateFieldMoreStepImpl(CommonState commonState, List<String> fieldPaths) {
45+
SpatialWithinPredicateFieldMoreStepImpl(CommonState<SR> commonState, List<String> fieldPaths) {
4346
this.commonState = commonState;
4447
this.commonState.add( this );
4548
this.fieldPaths = CollectionHelper.toImmutableList( fieldPaths );
4649
this.predicateBuilders = new ArrayList<>( fieldPaths.size() );
4750
}
4851

4952
@Override
50-
public SpatialWithinPredicateFieldMoreStepImpl fields(String... fieldPaths) {
51-
return new SpatialWithinPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) );
53+
public SpatialWithinPredicateFieldMoreStepImpl<SR> fields(String... fieldPaths) {
54+
return new SpatialWithinPredicateFieldMoreStepImpl<>( commonState, Arrays.asList( fieldPaths ) );
5255
}
5356

57+
@SuppressWarnings("unchecked")
5458
@Override
55-
public SpatialWithinPredicateFieldMoreStepImpl boost(float boost) {
59+
public SpatialWithinPredicateFieldMoreStepImpl<SR> fields(SpatialPredicateFieldReference<? super SR>... fieldReferences) {
60+
List<String> fieldPaths = new ArrayList<>( fieldReferences.length );
61+
for ( SpatialPredicateFieldReference<? super SR> fieldReference : fieldReferences ) {
62+
fieldPaths.add( fieldReference.absolutePath() );
63+
}
64+
return new SpatialWithinPredicateFieldMoreStepImpl<>( commonState, fieldPaths );
65+
}
66+
67+
@Override
68+
public SpatialWithinPredicateFieldMoreStepImpl<SR> boost(float boost) {
5669
this.fieldSetBoost = boost;
5770
return this;
5871
}
@@ -120,40 +133,40 @@ private void generateWithinBoundingBoxQueryBuilders(GeoBoundingBox boundingBox)
120133
}
121134
}
122135

123-
static class CommonState
124-
extends AbstractBooleanMultiFieldPredicateCommonState<CommonState, SpatialWithinPredicateFieldMoreStepImpl>
125-
implements SpatialWithinPredicateOptionsStep<CommonState> {
136+
static class CommonState<SR>
137+
extends AbstractBooleanMultiFieldPredicateCommonState<CommonState<SR>, SpatialWithinPredicateFieldMoreStepImpl<SR>>
138+
implements SpatialWithinPredicateOptionsStep<CommonState<SR>> {
126139

127140
CommonState(SearchPredicateDslContext<?> dslContext) {
128141
super( dslContext );
129142
}
130143

131144
SpatialWithinPredicateOptionsStep<?> circle(GeoPoint center, double radius, DistanceUnit unit) {
132-
for ( SpatialWithinPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) {
145+
for ( SpatialWithinPredicateFieldMoreStepImpl<SR> fieldSetState : getFieldSetStates() ) {
133146
fieldSetState.generateWithinCircleQueryBuilders( center, radius, unit );
134147
}
135148

136149
return this;
137150
}
138151

139152
SpatialWithinPredicateOptionsStep<?> polygon(GeoPolygon polygon) {
140-
for ( SpatialWithinPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) {
153+
for ( SpatialWithinPredicateFieldMoreStepImpl<SR> fieldSetState : getFieldSetStates() ) {
141154
fieldSetState.generateWithinPolygonQueryBuilders( polygon );
142155
}
143156

144157
return this;
145158
}
146159

147160
SpatialWithinPredicateOptionsStep<?> boundingBox(GeoBoundingBox boundingBox) {
148-
for ( SpatialWithinPredicateFieldMoreStepImpl fieldSetState : getFieldSetStates() ) {
161+
for ( SpatialWithinPredicateFieldMoreStepImpl<SR> fieldSetState : getFieldSetStates() ) {
149162
fieldSetState.generateWithinBoundingBoxQueryBuilders( boundingBox );
150163
}
151164

152165
return this;
153166
}
154167

155168
@Override
156-
protected CommonState thisAsS() {
169+
protected CommonState<SR> thisAsS() {
157170
return this;
158171
}
159172
}

engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/impl/SpatialWithinPredicateFieldStepImpl.java

+19-6
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,36 @@
44
*/
55
package org.hibernate.search.engine.search.predicate.dsl.impl;
66

7+
import java.util.ArrayList;
78
import java.util.Arrays;
9+
import java.util.List;
810

911
import org.hibernate.search.engine.search.predicate.dsl.SpatialWithinPredicateFieldMoreStep;
1012
import org.hibernate.search.engine.search.predicate.dsl.SpatialWithinPredicateFieldStep;
1113
import org.hibernate.search.engine.search.predicate.dsl.spi.SearchPredicateDslContext;
14+
import org.hibernate.search.engine.search.reference.predicate.SpatialPredicateFieldReference;
1215

13-
class SpatialWithinPredicateFieldStepImpl
14-
implements SpatialWithinPredicateFieldStep<SpatialWithinPredicateFieldMoreStep<?, ?>> {
16+
class SpatialWithinPredicateFieldStepImpl<SR>
17+
implements SpatialWithinPredicateFieldStep<SR, SpatialWithinPredicateFieldMoreStep<SR, ?, ?>> {
1518

16-
private final SpatialWithinPredicateFieldMoreStepImpl.CommonState commonState;
19+
private final SpatialWithinPredicateFieldMoreStepImpl.CommonState<SR> commonState;
1720

1821
SpatialWithinPredicateFieldStepImpl(SearchPredicateDslContext<?> dslContext) {
19-
this.commonState = new SpatialWithinPredicateFieldMoreStepImpl.CommonState( dslContext );
22+
this.commonState = new SpatialWithinPredicateFieldMoreStepImpl.CommonState<>( dslContext );
2023
}
2124

2225
@Override
23-
public SpatialWithinPredicateFieldMoreStep<?, ?> fields(String... fieldPaths) {
24-
return new SpatialWithinPredicateFieldMoreStepImpl( commonState, Arrays.asList( fieldPaths ) );
26+
public SpatialWithinPredicateFieldMoreStep<SR, ?, ?> fields(String... fieldPaths) {
27+
return new SpatialWithinPredicateFieldMoreStepImpl<>( commonState, Arrays.asList( fieldPaths ) );
28+
}
29+
30+
@SuppressWarnings("unchecked")
31+
@Override
32+
public SpatialWithinPredicateFieldMoreStep<SR, ?, ?> fields(SpatialPredicateFieldReference<? super SR>... fieldReferences) {
33+
List<String> fieldPaths = new ArrayList<>( fieldReferences.length );
34+
for ( SpatialPredicateFieldReference<? super SR> fieldReference : fieldReferences ) {
35+
fieldPaths.add( fieldReference.absolutePath() );
36+
}
37+
return new SpatialWithinPredicateFieldMoreStepImpl<>( commonState, fieldPaths );
2538
}
2639
}

engine/src/main/java/org/hibernate/search/engine/search/predicate/dsl/spi/AbstractSearchPredicateFactory.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,8 @@ public PredicateFinalStep bool(Consumer<? super BooleanPredicateClausesStep<SR,
215215
}
216216

217217
@Override
218-
public SpatialPredicateInitialStep spatial() {
219-
return new SpatialPredicateInitialStepImpl( dslContext );
218+
public SpatialPredicateInitialStep<SR> spatial() {
219+
return new SpatialPredicateInitialStepImpl<>( dslContext );
220220
}
221221

222222
@Override
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
*/
55
package org.hibernate.search.engine.search.reference.predicate;
66

7-
public interface SpatialWithinCirclePredicateFieldReference<SR, T> extends TypedPredicateFieldReference<SR, T> {
7+
public interface SpatialPredicateFieldReference<SR> extends PredicateFieldReference<SR> {
88
}

0 commit comments

Comments
 (0)