Skip to content

Commit

Permalink
HSEARCH-4843 Remove generics for entity references in loading code
Browse files Browse the repository at this point in the history
1. Because even currently, those generics are just for show: we end up
   with an unchecked cast in the backend.
2. Because we will ultimately use a single EntityReference type.
  • Loading branch information
yrodiere committed May 1, 2023
1 parent 635edd6 commit b597081
Show file tree
Hide file tree
Showing 116 changed files with 262 additions and 258 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ public Optional<ElasticsearchSearchQuerySelectStep<R, E, LOS>> extendOptional(
SearchQuerySelectStep<?, R, E, LOS, ?, ?> original,
SearchQueryIndexScope<?> scope,
BackendSessionContext sessionContext,
SearchLoadingContextBuilder<R, E, LOS> loadingContextBuilder) {
SearchLoadingContextBuilder<E, LOS> loadingContextBuilder) {
if ( scope instanceof ElasticsearchSearchQueryIndexScope ) {
return Optional.of( new ElasticsearchSearchQuerySelectStepImpl<>(
(ElasticsearchSearchQueryIndexScope<?>) scope, sessionContext, loadingContextBuilder
Expand All @@ -128,7 +128,7 @@ public Optional<ElasticsearchSearchQuerySelectStep<R, E, LOS>> extendOptional(
*/
@Override
public Optional<ElasticsearchSearchQuery<H>> extendOptional(SearchQuery<H> original,
SearchLoadingContext<?, ?> loadingContext) {
SearchLoadingContext<?> loadingContext) {
if ( original instanceof ElasticsearchSearchQuery ) {
return Optional.of( (ElasticsearchSearchQuery<H>) original );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ public ElasticsearchSearchQueryIndexScope<?> createSearchContext(BackendMappingC
public <H> ElasticsearchSearchQueryBuilder<H> createSearchQueryBuilder(
ElasticsearchSearchIndexScope<?> scope,
BackendSessionContext sessionContext,
SearchLoadingContextBuilder<?, ?, ?> loadingContextBuilder,
SearchLoadingContextBuilder<?, ?> loadingContextBuilder,
ElasticsearchSearchProjection<H> rootProjection) {
multiTenancyStrategy.documentIdHelper().checkTenantId( sessionContext.tenantIdentifier(), eventContext );
return new ElasticsearchSearchQueryBuilder<>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ public ElasticsearchSearchAggregationBuilderFactory aggregationBuilders() {

@Override
public <P> ElasticsearchSearchQueryBuilder<P> select(BackendSessionContext sessionContext,
SearchLoadingContextBuilder<?, ?, ?> loadingContextBuilder, SearchProjection<P> projection) {
SearchLoadingContextBuilder<?, ?> loadingContextBuilder, SearchProjection<P> projection) {
return backendContext.createSearchQueryBuilder( this, sessionContext, loadingContextBuilder,
ElasticsearchSearchProjection.from( this, projection ) );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,14 @@ public AccumulatingSourceExtractor(String[] fieldPathComponents,
}

@Override
public final A extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public final A extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
A accumulated = accumulator.createInitial();
accumulated = collect( projectionHitMapper, hit, source, context, accumulated, 0 );
return accumulated;
}

private A collect(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
private A collect(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject parent, ProjectionExtractContext context,
A accumulated, int currentPathComponentIndex) {
if ( parent == null ) {
Expand Down Expand Up @@ -77,7 +77,7 @@ else if ( child.isJsonArray() ) {
}
}

private A collectTargetField(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit, JsonElement fieldValue,
private A collectTargetField(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit, JsonElement fieldValue,
ProjectionExtractContext context, A accumulated) {
if ( fieldValue == null ) {
// Not present
Expand All @@ -99,7 +99,7 @@ else if ( fieldValue.isJsonArray() ) {
}
}

protected abstract E extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
protected abstract E extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonElement sourceElement, ProjectionExtractContext context);

private JsonObject toJsonObject(JsonElement childElement, int currentPathComponentIndex) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public String toString() {
}

@Override
public DelegateAndExtractedValue<?, P> extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public DelegateAndExtractedValue<?, P> extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
String typeName = mappedTypeNameHelper.extract( hit, context );
Extractor<?, ? extends P> inner = inners.get( typeName );
Expand All @@ -76,7 +76,7 @@ public DelegateAndExtractedValue<?, P> extract(ProjectionHitMapper<?, ?> project
}

@Override
public P transform(LoadingResult<?, ?> loadingResult, DelegateAndExtractedValue<?, P> extracted,
public P transform(LoadingResult<?> loadingResult, DelegateAndExtractedValue<?, P> extracted,
ProjectionTransformContext context) {
return extracted.transform( loadingResult, context );
}
Expand All @@ -87,13 +87,13 @@ private static final class DelegateAndExtractedValue<E, P> {
private final E extractedValue;

private DelegateAndExtractedValue(Extractor<E, ? extends P> delegate,
ProjectionHitMapper<?, ?> projectionHitMapper,
ProjectionHitMapper<?> projectionHitMapper,
JsonObject hit, JsonObject source, ProjectionExtractContext context) {
this.delegate = delegate;
this.extractedValue = delegate.extract( projectionHitMapper, hit, source, context );
}

P transform(LoadingResult<?, ?> loadingResult, ProjectionTransformContext context) {
P transform(LoadingResult<?> loadingResult, ProjectionTransformContext context) {
return delegate.transform( loadingResult, extractedValue, context );
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public String toString() {
}

@Override
public A extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public A extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
A accumulated = accumulator.createInitial();

Expand All @@ -93,7 +93,7 @@ public A extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
}

@Override
public final P transform(LoadingResult<?, ?> loadingResult, A accumulated,
public final P transform(LoadingResult<?> loadingResult, A accumulated,
ProjectionTransformContext context) {
for ( int i = 0; i < accumulator.size( accumulated ); i++ ) {
E transformedData = accumulator.get( accumulated, i );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ public Extractor<?, T> request(JsonObject requestBody, ProjectionRequestContext


@Override
public T extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit, JsonObject source,
public T extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit, JsonObject source,
ProjectionExtractContext context) {
return value;
}

@Override
public T transform(LoadingResult<?, ?> loadingResult, T extractedData, ProjectionTransformContext context) {
public T transform(LoadingResult<?> loadingResult, T extractedData, ProjectionTransformContext context) {
return extractedData;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ else if ( scriptFieldName != null ) {
}

@Override
public A extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public A extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
Integer distanceSortIndex = singleValuedInRoot ? context.getDistanceSortIndex( absoluteFieldPath, center ) : null;

Expand All @@ -142,7 +142,7 @@ public A extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
}

@Override
public P transform(LoadingResult<?, ?> loadingResult, A extractedData,
public P transform(LoadingResult<?> loadingResult, A extractedData,
ProjectionTransformContext context) {
// Nothing to transform: we take the values as they are.
return accumulator.finish( extractedData );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,13 @@ public Extractor<?, DocumentReference> request(JsonObject requestBody, Projectio
}

@Override
public DocumentReference extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public DocumentReference extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
return helper.extract( hit, context );
}

@Override
public DocumentReference transform(LoadingResult<?, ?> loadingResult, DocumentReference extractedData,
public DocumentReference transform(LoadingResult<?> loadingResult, DocumentReference extractedData,
ProjectionTransformContext context) {
return extractedData;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ public Extractor<?, E> request(JsonObject requestBody, ProjectionRequestContext
}

@Override
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public Object extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
return projectionHitMapper.planLoading( helper.extract( hit, context ) );
}

@SuppressWarnings("unchecked")
@Override
public E transform(LoadingResult<?, ?> loadingResult, Object extractedData,
public E transform(LoadingResult<?> loadingResult, Object extractedData,
ProjectionTransformContext context) {
E loaded = (E) loadingResult.get( extractedData );
if ( loaded == null ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ public Extractor<?, R> request(JsonObject requestBody, ProjectionRequestContext
}

@Override
public DocumentReference extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public DocumentReference extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
return helper.extract( hit, context );
}

@Override
@SuppressWarnings("unchecked")
public R transform(LoadingResult<?, ?> loadingResult, DocumentReference extractedData,
public R transform(LoadingResult<?> loadingResult, DocumentReference extractedData,
ProjectionTransformContext context) {
return (R) loadingResult.convertReference( extractedData );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ public Extractor<?, JsonObject> request(JsonObject requestBody, ProjectionReques
}

@Override
public JsonObject extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public JsonObject extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
// We expect the optional to always be non-empty.
return HIT_EXPLANATION_ACCESSOR.get( hit ).get();
}

@Override
public JsonObject transform(LoadingResult<?, ?> loadingResult, JsonObject extractedData,
public JsonObject transform(LoadingResult<?> loadingResult, JsonObject extractedData,
ProjectionTransformContext context) {
return extractedData;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ private FieldHighlightExtractor(String fieldPath) {
}

@Override
public List<String> extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit, JsonObject source,
public List<String> extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit, JsonObject source,
ProjectionExtractContext context) {
Optional<JsonArray> highlights = highlightAccessor.get( hit );
if ( highlights.isPresent() ) {
Expand All @@ -123,7 +123,7 @@ public List<String> extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonO
}

@Override
public List<String> transform(LoadingResult<?, ?> loadingResult, List<String> extractedData,
public List<String> transform(LoadingResult<?> loadingResult, List<String> extractedData,
ProjectionTransformContext context) {
return extractedData;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,13 +104,13 @@ public String toString() {
}

@Override
protected F extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit, JsonElement sourceElement,
protected F extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit, JsonElement sourceElement,
ProjectionExtractContext context) {
return decodeFunction.apply( sourceElement );
}

@Override
public P transform(LoadingResult<?, ?> loadingResult, A extractedData,
public P transform(LoadingResult<?> loadingResult, A extractedData,
ProjectionTransformContext context) {
FromDocumentValueConvertContext convertContext = context.fromDocumentValueConvertContext();
A transformedData = accumulator.transformAll( extractedData, converter, convertContext );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@ public Extractor<?, I> request(JsonObject requestBody, ProjectionRequestContext
}

@Override
public String extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public String extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
return extractionHelper.extract( hit, context );
}

@Override
public I transform(LoadingResult<?, ?> loadingResult, String extractedData,
public I transform(LoadingResult<?> loadingResult, String extractedData,
ProjectionTransformContext context) {
return converter.fromDocumentValue( extractedData, context.fromDocumentValueConvertContext() );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@ public Extractor<?, JsonObject> request(JsonObject requestBody, ProjectionReques
}

@Override
public JsonObject extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public JsonObject extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
return hit;
}

@Override
public JsonObject transform(LoadingResult<?, ?> loadingResult, JsonObject extractedData,
public JsonObject transform(LoadingResult<?> loadingResult, JsonObject extractedData,
ProjectionTransformContext context) {
return extractedData;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ public String toString() {
}

@Override
protected E extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit, JsonElement sourceElement,
protected E extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit, JsonElement sourceElement,
ProjectionExtractContext context) {
if ( sourceElement == null || sourceElement.isJsonNull() ) {
return null;
Expand All @@ -117,7 +117,7 @@ protected E extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hi
}

@Override
public final P transform(LoadingResult<?, ?> loadingResult, A accumulated,
public final P transform(LoadingResult<?> loadingResult, A accumulated,
ProjectionTransformContext context) {
for ( int i = 0; i < accumulator.size( accumulated ); i++ ) {
E transformedData = accumulator.get( accumulated, i );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@ public Extractor<?, Float> request(JsonObject requestBody, ProjectionRequestCont
}

@Override
public Float extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public Float extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
return hit.get( "_score" ).getAsFloat();
}

@Override
public Float transform(LoadingResult<?, ?> loadingResult, Float extractedData,
public Float transform(LoadingResult<?> loadingResult, Float extractedData,
ProjectionTransformContext context) {
return extractedData;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ interface Extractor<E, P> {
* {@link ProjectionHitMapper}.
* This returned object will be passed to {@link #transform(LoadingResult, Object, ProjectionTransformContext)}.
*/
E extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
E extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context);

/**
Expand All @@ -74,15 +74,15 @@ E extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
* @param context An execution context for the transforming.
* @return The final result considered as a hit.
*/
P transform(LoadingResult<?, ?> loadingResult, E extractedData, ProjectionTransformContext context);
P transform(LoadingResult<?> loadingResult, E extractedData, ProjectionTransformContext context);

/**
* Transforms the extracted data and casts it to the right type.
* <p>
* This should be used with care as it's unsafe.
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
static <Z> Z transformUnsafe(Extractor<?, Z> extractor, LoadingResult<?, ?> loadingResult,
static <Z> Z transformUnsafe(Extractor<?, Z> extractor, LoadingResult<?> loadingResult,
Object extractedData, ProjectionTransformContext context) {
return (Z) ( (Extractor) extractor ).transform( loadingResult, extractedData, context );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ public Extractor<?, JsonObject> request(JsonObject requestBody, ProjectionReques
}

@Override
public JsonObject extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit,
public JsonObject extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit,
JsonObject source, ProjectionExtractContext context) {
return source;
}

@Override
public JsonObject transform(LoadingResult<?, ?> loadingResult, JsonObject extractedData,
public JsonObject transform(LoadingResult<?> loadingResult, JsonObject extractedData,
ProjectionTransformContext context) {
return extractedData;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ public Extractor<?, T> request(JsonObject requestBody, ProjectionRequestContext
}

@Override
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, JsonObject hit, JsonObject source,
public Object extract(ProjectionHitMapper<?> projectionHitMapper, JsonObject hit, JsonObject source,
ProjectionExtractContext context) {
throw exceptionSupplier.get();
}

@Override
public T transform(LoadingResult<?, ?> loadingResult, Object extractedData, ProjectionTransformContext context) {
public T transform(LoadingResult<?> loadingResult, Object extractedData, ProjectionTransformContext context) {
throw exceptionSupplier.get();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class ElasticsearchSearchQueryOptionsStepImpl<H, LOS>

ElasticsearchSearchQueryOptionsStepImpl(ElasticsearchSearchQueryIndexScope<?> scope,
ElasticsearchSearchQueryBuilder<H> searchQueryBuilder,
SearchLoadingContextBuilder<?, ?, LOS> loadingContextBuilder) {
SearchLoadingContextBuilder<?, LOS> loadingContextBuilder) {
super( scope, searchQueryBuilder, loadingContextBuilder );
this.searchQueryBuilder = searchQueryBuilder;
}
Expand Down

0 comments on commit b597081

Please sign in to comment.