bug4687: Fixed the additional result data when a IdentityFunction is used as extraction function

This commit is contained in:
Lennart Hensler
2018-08-11 12:45:06 +02:00
parent bbd73cc335
commit 507d1931ff
40 changed files with 180 additions and 85 deletions
@@ -333,7 +333,7 @@ public class TestAbortingHeavyLoadQuery {
protected void setAdditionalData(AdditionalResultDataBuilder additionalDataBuilder) { }
};
Processor<String, Element> retriever1 = new AbstractRetrievalProcessor<String, Element>(String.class, Element.class, executor, Collections.singleton(heavyLoadProcessor), 1) {
Processor<String, Element> retriever1 = new AbstractRetrievalProcessor<String, Element>(String.class, Element.class, executor, Collections.singleton(heavyLoadProcessor), 1, "") {
@Override
protected ProcessorInstruction<Element> createInstruction(String element) {
AbstractProcessorInstruction<Element> instruction = (AbstractProcessorInstruction<Element>) super.createInstruction(element);
@@ -365,7 +365,7 @@ public class TestAbortingHeavyLoadQuery {
if(canProcessElements()) unfinishedInstructions.remove(instruction);
}
};
Processor<Iterable<String>, String> retriever0 = new AbstractRetrievalProcessor<Iterable<String>, String>(dataSourceType, String.class, executor, Collections.singleton(retriever1), 0) {
Processor<Iterable<String>, String> retriever0 = new AbstractRetrievalProcessor<Iterable<String>, String>(dataSourceType, String.class, executor, Collections.singleton(retriever1), 0, "") {
@Override
protected ProcessorInstruction<String> createInstruction(Iterable<String> element) {
AbstractProcessorInstruction<String> instruction = (AbstractProcessorInstruction<String>) super.createInstruction(element);
@@ -89,8 +89,8 @@ public class TestStatisticQuery {
private static class NumberRetrievalProcessor extends AbstractRetrievalProcessor<Collection<Number>, Number> {
@SuppressWarnings("unchecked")
public NumberRetrievalProcessor(ExecutorService executor, Collection<Processor<Number, ?>> resultReceivers, int retrievalLevel) {
super((Class<Collection<Number>>)(Class<?>) Collection.class, Number.class, executor, resultReceivers, retrievalLevel);
public NumberRetrievalProcessor(ExecutorService executor, Collection<Processor<Number, ?>> resultReceivers, int retrievalLevel, String retrievedDataTypeMessageKey) {
super((Class<Collection<Number>>)(Class<?>) Collection.class, Number.class, executor, resultReceivers, retrievalLevel, retrievedDataTypeMessageKey);
}
@Override
@@ -21,6 +21,7 @@ import com.sap.sse.datamining.test.util.components.NullProcessor;
public class TestRetrieverFilterProcessorChain {
private String retrievedDataTypeMessageKey;
private Processor<Iterable<Integer>, Integer> retrievalProcessor;
private Collection<Integer> dataSource;
@@ -59,6 +60,7 @@ public class TestRetrieverFilterProcessorChain {
OverwritingResultDataBuilder resultDataBuilder = new OverwritingResultDataBuilder();
retrievalProcessor.getAdditionalResultData(resultDataBuilder);
assertThat(resultDataBuilder.getRetrievedDataAmount(), is(expectedRetrievedDataAmount));
assertThat(resultDataBuilder.getDataTypeMessageKey(), is(retrievedDataTypeMessageKey));
}
@Test
@@ -67,12 +69,17 @@ public class TestRetrieverFilterProcessorChain {
layeredDataSource.add(dataSource);
layeredDataSource.add(dataSource);
layeredDataSource.add(dataSource);
@SuppressWarnings("unchecked")
Class<Iterable<Iterable<Integer>>> inputType = (Class<Iterable<Iterable<Integer>>>)(Class<?>) Iterable.class;
@SuppressWarnings("unchecked")
Class<Iterable<Integer>> retrievedType = (Class<Iterable<Integer>>)(Class<?>) Iterable.class;
Collection<Processor<Iterable<Integer>, ?>> resultReceivers = new ArrayList<>();
resultReceivers.add(retrievalProcessor);
@SuppressWarnings("unchecked")
Processor<Iterable<Iterable<Integer>>, Iterable<Integer>> layeredRetrievalProcessor = new AbstractRetrievalProcessor<Iterable<Iterable<Integer>>, Iterable<Integer>>((Class<Iterable<Iterable<Integer>>>)(Class<?>) Iterable.class, (Class<Iterable<Integer>>)(Class<?>) Iterable.class,
ConcurrencyTestsUtil.getSharedExecutor(), resultReceivers, 0) {
String layeredRetrievedDataTypeMessageKey = "NumberList";
Processor<Iterable<Iterable<Integer>>, Iterable<Integer>> layeredRetrievalProcessor = new AbstractRetrievalProcessor<Iterable<Iterable<Integer>>, Iterable<Integer>>(
inputType, retrievedType, ConcurrencyTestsUtil.getSharedExecutor(), resultReceivers, 0,
layeredRetrievedDataTypeMessageKey) {
@Override
protected Iterable<Iterable<Integer>> retrieveData(Iterable<Iterable<Integer>> element) {
return element;
@@ -88,6 +95,7 @@ public class TestRetrieverFilterProcessorChain {
OverwritingResultDataBuilder resultDataBuilder = new OverwritingResultDataBuilder();
layeredRetrievalProcessor.getAdditionalResultData(resultDataBuilder);
assertThat(resultDataBuilder.getRetrievedDataAmount(), is(expectedRetrievedDataAmount));
assertThat(resultDataBuilder.getDataTypeMessageKey(), is(retrievedDataTypeMessageKey));
}
@SuppressWarnings("unchecked")
@@ -112,9 +120,12 @@ public class TestRetrieverFilterProcessorChain {
};
Processor<Integer, Integer> filtrationProcessor = new ParallelFilteringProcessor<>(Integer.class, ConcurrencyTestsUtil.getSharedExecutor(), filtrationResultReceivers, elementGreaterZeroFilterCriteria);
Class<Iterable<Integer>> inputType = (Class<Iterable<Integer>>) (Class<?>) Iterable.class;
Collection<Processor<Integer, ?>> retrievalResultReceivers = new ArrayList<>();
retrievalResultReceivers.add(filtrationProcessor);
retrievalProcessor = new AbstractRetrievalProcessor<Iterable<Integer>, Integer>((Class<Iterable<Integer>>)(Class<?>) Iterable.class, Integer.class, ConcurrencyTestsUtil.getSharedExecutor(), retrievalResultReceivers, 1) {
retrievedDataTypeMessageKey = "Number";
retrievalProcessor = new AbstractRetrievalProcessor<Iterable<Integer>, Integer>(inputType, Integer.class,
ConcurrencyTestsUtil.getSharedExecutor(), retrievalResultReceivers, 1, retrievedDataTypeMessageKey) {
@Override
protected Iterable<Integer> retrieveData(Iterable<Integer> element) {
return element;
@@ -169,8 +169,8 @@ public class TestDataRetrieverChainDefinitionManagement {
private class TestSeriesRetrievalProcessor extends AbstractRetrievalProcessor<Test_Regatta, Test_Series> {
public TestSeriesRetrievalProcessor(ExecutorService executor,
Collection<Processor<Test_Series, ?>> resultReceivers, int retrievalLevel) {
super(Test_Regatta.class, Test_Series.class, executor, resultReceivers, retrievalLevel);
Collection<Processor<Test_Series, ?>> resultReceivers, int retrievalLevel, String retrievedDataTypeMessageKey) {
super(Test_Regatta.class, Test_Series.class, executor, resultReceivers, retrievalLevel, retrievedDataTypeMessageKey);
}
@Override
@@ -183,8 +183,8 @@ public class TestDataRetrieverChainDefinitionManagement {
private class TestRaceFromSeriesRetrievalProcessor extends AbstractRetrievalProcessor<Test_Series, Test_HasRaceContext> {
public TestRaceFromSeriesRetrievalProcessor(ExecutorService executor,
Collection<Processor<Test_HasRaceContext, ?>> resultReceivers, int retrievalLevel) {
super(Test_Series.class, Test_HasRaceContext.class, executor, resultReceivers, retrievalLevel);
Collection<Processor<Test_HasRaceContext, ?>> resultReceivers, int retrievalLevel, String retrievedDataTypeMessageKey) {
super(Test_Series.class, Test_HasRaceContext.class, executor, resultReceivers, retrievalLevel, retrievedDataTypeMessageKey);
}
@Override
@@ -14,8 +14,11 @@ import com.sap.sse.datamining.test.domain.Test_Leg;
public class TestLegOfCompetitorWithContextRetrievalProcessor extends AbstractRetrievalProcessor<Test_HasRaceContext, Test_HasLegOfCompetitorContext>{
public TestLegOfCompetitorWithContextRetrievalProcessor(ExecutorService executor, Collection<Processor<Test_HasLegOfCompetitorContext, ?>> resultReceivers, int retrievalLevel) {
super(Test_HasRaceContext.class, Test_HasLegOfCompetitorContext.class, executor, resultReceivers, retrievalLevel);
public TestLegOfCompetitorWithContextRetrievalProcessor(ExecutorService executor,
Collection<Processor<Test_HasLegOfCompetitorContext, ?>> resultReceivers, int retrievalLevel,
String retrievedDataTypeMessageKey) {
super(Test_HasRaceContext.class, Test_HasLegOfCompetitorContext.class, executor, resultReceivers,
retrievalLevel, retrievedDataTypeMessageKey);
}
@Override
@@ -14,8 +14,9 @@ import com.sap.sse.datamining.test.domain.Test_Regatta;
public class TestRaceWithContextRetrievalProcessor extends AbstractRetrievalProcessor<Test_Regatta, Test_HasRaceContext> {
public TestRaceWithContextRetrievalProcessor(ExecutorService executor,
Collection<Processor<Test_HasRaceContext, ?>> resultReceivers, int retrievalLevel) {
super(Test_Regatta.class, Test_HasRaceContext.class, executor, resultReceivers, retrievalLevel);
Collection<Processor<Test_HasRaceContext, ?>> resultReceivers, int retrievalLevel,
String retrievedDataTypeMessageKey) {
super(Test_Regatta.class, Test_HasRaceContext.class, executor, resultReceivers, retrievalLevel, retrievedDataTypeMessageKey);
}
@Override
@@ -10,8 +10,11 @@ import com.sap.sse.datamining.test.domain.Test_Regatta;
public class TestRegattaRetrievalProcessor extends AbstractRetrievalProcessor<Collection<Test_Regatta>, Test_Regatta> {
@SuppressWarnings("unchecked")
public TestRegattaRetrievalProcessor(ExecutorService executor, Collection<Processor<Test_Regatta, ?>> resultReceivers, int retrievalLevel) {
super((Class<Collection<Test_Regatta>>)(Class<?>) Collection.class, Test_Regatta.class, executor, resultReceivers, retrievalLevel);
public TestRegattaRetrievalProcessor(ExecutorService executor,
Collection<Processor<Test_Regatta, ?>> resultReceivers, int retrievalLevel,
String retrievedDataTypeMessageKey) {
super((Class<Collection<Test_Regatta>>) (Class<?>) Collection.class, Test_Regatta.class, executor,
resultReceivers, retrievalLevel, retrievedDataTypeMessageKey);
}
@Override
@@ -13,8 +13,8 @@ public class Test_RetrievalProcessorWithSettings extends AbstractRetrievalProces
private Test_RetrievalProcessorSettings settings;
public Test_RetrievalProcessorWithSettings(ExecutorService executor, Collection<Processor<Test_HasLegOfCompetitorContext, ?>> resultReceivers,
Test_RetrievalProcessorSettings settings, int retrievalLevel) {
super(Test_HasLegOfCompetitorContext.class, Test_HasLegOfCompetitorContext.class, executor, resultReceivers, retrievalLevel);
Test_RetrievalProcessorSettings settings, int retrievalLevel, String retrievedDataTypeMessageKey) {
super(Test_HasLegOfCompetitorContext.class, Test_HasLegOfCompetitorContext.class, executor, resultReceivers, retrievalLevel, retrievedDataTypeMessageKey);
this.settings = settings;
}