Skip to content

Commit

Permalink
HSEARCH-4567 Rework stub backend to allow for projections that don't …
Browse files Browse the repository at this point in the history
…consume content from the index
  • Loading branch information
yrodiere committed May 9, 2022
1 parent e0e394f commit 0ea092c
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 15 deletions.
Expand Up @@ -99,7 +99,8 @@ static <H> List<H> getResults(StubSearchProjectionContext actualProjectionContex
for ( Object rawHit : rawHits ) {
actualProjectionContext.reset();
extractedElements.add(
actualRootProjection.extract( actualProjectionHitMapper, rawHit, actualProjectionContext )
actualRootProjection.extract( actualProjectionHitMapper, Collections.singleton( rawHit ).iterator(),
actualProjectionContext )
);
}

Expand Down
Expand Up @@ -7,6 +7,7 @@
package org.hibernate.search.util.impl.integrationtest.common.stub.backend.search.projection.impl;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import org.hibernate.search.engine.search.loading.spi.LoadingResult;
Expand Down Expand Up @@ -36,13 +37,13 @@ public String toString() {
}

@Override
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Object projectionFromIndex,
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Iterator<?> projectionFromIndex,
StubSearchProjectionContext context) {
E extractedData = compositor.createInitial();

List<?> listFromIndex = (List<?>) projectionFromIndex;
Iterator<?> innerProjectionFromIndex = ( (List<?>) projectionFromIndex.next() ).iterator();
for ( int i = 0; i < inners.length; i++ ) {
Object extractedDataForInner = inners[i].extract( projectionHitMapper, listFromIndex.get( i ), context );
Object extractedDataForInner = inners[i].extract( projectionHitMapper, innerProjectionFromIndex, context );
extractedData = compositor.set( extractedData, i, extractedDataForInner );
}

Expand Down
Expand Up @@ -6,6 +6,8 @@
*/
package org.hibernate.search.util.impl.integrationtest.common.stub.backend.search.projection.impl;

import java.util.Iterator;

import org.hibernate.search.engine.search.loading.spi.LoadingResult;
import org.hibernate.search.engine.search.loading.spi.ProjectionHitMapper;

Expand All @@ -23,9 +25,9 @@ private StubDefaultProjection() {
}

@Override
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Object projectionFromIndex,
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Iterator<?> projectionFromIndex,
StubSearchProjectionContext context) {
return projectionFromIndex;
return projectionFromIndex.next();
}

@SuppressWarnings("unchecked")
Expand Down
Expand Up @@ -6,6 +6,8 @@
*/
package org.hibernate.search.util.impl.integrationtest.common.stub.backend.search.projection.impl;

import java.util.Iterator;

import org.hibernate.search.engine.backend.common.DocumentReference;
import org.hibernate.search.engine.search.loading.spi.LoadingResult;
import org.hibernate.search.engine.search.loading.spi.ProjectionHitMapper;
Expand All @@ -24,9 +26,9 @@ private StubEntityProjection() {
}

@Override
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Object projectionFromIndex,
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Iterator<?> projectionFromIndex,
StubSearchProjectionContext context) {
return projectionHitMapper.planLoading( (DocumentReference) projectionFromIndex );
return projectionHitMapper.planLoading( (DocumentReference) projectionFromIndex.next() );
}

@SuppressWarnings("unchecked")
Expand Down
Expand Up @@ -6,6 +6,8 @@
*/
package org.hibernate.search.util.impl.integrationtest.common.stub.backend.search.projection.impl;

import java.util.Iterator;

import org.hibernate.search.engine.backend.types.converter.spi.ProjectionConverter;
import org.hibernate.search.engine.search.common.ValueConvert;
import org.hibernate.search.engine.search.loading.spi.LoadingResult;
Expand All @@ -29,9 +31,9 @@ private StubFieldProjection(Class<F> valueClass, ProjectionConverter<F, ? extend
}

@Override
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Object projectionFromIndex,
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Iterator<?> projectionFromIndex,
StubSearchProjectionContext context) {
return converter.fromDocumentValue( valueClass.cast( projectionFromIndex ),
return converter.fromDocumentValue( valueClass.cast( projectionFromIndex.next() ),
context.fromDocumentValueConvertContext() );
}

Expand Down
Expand Up @@ -6,6 +6,8 @@
*/
package org.hibernate.search.util.impl.integrationtest.common.stub.backend.search.projection.impl;

import java.util.Iterator;

import org.hibernate.search.engine.backend.common.DocumentReference;
import org.hibernate.search.engine.backend.types.converter.spi.ProjectionConverter;
import org.hibernate.search.engine.search.loading.spi.LoadingResult;
Expand All @@ -20,9 +22,9 @@ public class StubIdProjection<I> implements StubSearchProjection<I> {
}

@Override
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Object projectionFromIndex,
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Iterator<?> projectionFromIndex,
StubSearchProjectionContext context) {
return projectionFromIndex;
return projectionFromIndex.next();
}

@SuppressWarnings("unchecked")
Expand Down
Expand Up @@ -6,6 +6,8 @@
*/
package org.hibernate.search.util.impl.integrationtest.common.stub.backend.search.projection.impl;

import java.util.Iterator;

import org.hibernate.search.engine.backend.common.DocumentReference;
import org.hibernate.search.engine.search.loading.spi.LoadingResult;
import org.hibernate.search.engine.search.loading.spi.ProjectionHitMapper;
Expand All @@ -24,9 +26,9 @@ private StubReferenceProjection() {
}

@Override
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Object projectionFromIndex,
public Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Iterator<?> projectionFromIndex,
StubSearchProjectionContext context) {
return projectionFromIndex;
return projectionFromIndex.next();
}

@SuppressWarnings("unchecked")
Expand Down
Expand Up @@ -6,14 +6,16 @@
*/
package org.hibernate.search.util.impl.integrationtest.common.stub.backend.search.projection.impl;

import java.util.Iterator;

import org.hibernate.search.engine.search.projection.SearchProjection;
import org.hibernate.search.engine.search.loading.spi.LoadingResult;
import org.hibernate.search.engine.search.loading.spi.ProjectionHitMapper;
import org.hibernate.search.util.common.AssertionFailure;

public interface StubSearchProjection<P> extends SearchProjection<P> {

Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Object projectionFromIndex,
Object extract(ProjectionHitMapper<?, ?> projectionHitMapper, Iterator<?> projectionFromIndex,
StubSearchProjectionContext context);

P transform(LoadingResult<?, ?> loadingResult, Object extractedData, StubSearchProjectionContext context);
Expand Down

0 comments on commit 0ea092c

Please sign in to comment.