diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/DssServiceRpcScreeningBatchResults.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/DssServiceRpcScreeningBatchResults.java new file mode 100644 index 0000000000000000000000000000000000000000..059e43a4aa9354371dc4eb1b6cf7827bde05c1d2 --- /dev/null +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/DssServiceRpcScreeningBatchResults.java @@ -0,0 +1,72 @@ +/* + * Copyright 2013 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.dss.screening.shared.api.internal; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @author pkupczyk + */ +public class DssServiceRpcScreeningBatchResults<T> implements + IDssServiceRpcScreeningBatchResults<T> +{ + + private Map<String, List<T>> dssResultsMap = new LinkedHashMap<String, List<T>>(); + + public void addDataStoreResults(String dssUrl, List<T> dssResults) + { + dssResultsMap.put(dssUrl, dssResults); + } + + @Override + public List<T> withDuplicates() + { + List<T> results = new ArrayList<T>(); + + for (List<T> dssResults : dssResultsMap.values()) + { + if (dssResults != null) + { + results.addAll(dssResults); + } + } + + return results; + } + + @Override + public List<T> withoutDuplicates() + { + Set<T> results = new LinkedHashSet<T>(); + + for (List<T> dssResults : dssResultsMap.values()) + { + if (dssResults != null) + { + results.addAll(dssResults); + } + } + + return new ArrayList<T>(results); + } + +} diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/DssServiceRpcScreeningMultiplexer.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/DssServiceRpcScreeningMultiplexer.java index 15ad531ee37269475cdf94270f1edbda57aff51b..abb4ca95d43989e6730b5d7509704db582c3f372 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/DssServiceRpcScreeningMultiplexer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/DssServiceRpcScreeningMultiplexer.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.dss.screening.shared.api.internal; import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -49,61 +50,114 @@ public class DssServiceRpcScreeningMultiplexer implements IDssServiceRpcScreenin } @Override - public <R extends IDatasetIdentifier, V> List<V> process(final List<? extends R> references, - final IDssServiceRpcScreeningBatchHandler<R, V> handler) + public <R extends IDatasetIdentifier, V> DssServiceRpcScreeningBatchResults<V> process( + final List<? extends R> references, + final IDssServiceRpcScreeningBatchHandler<R, V> batchHandler) { - Map<String, List<R>> referencesPerDss = getReferencesPerDss(cast(references)); - List<ITerminableFuture<List<V>>> dssFutures = new ArrayList<ITerminableFuture<List<V>>>(); - final long callMillis = System.currentTimeMillis(); + Map<String, List<R>> referencesPerDataStore = getReferencesPerDataStore(cast(references)); - for (Entry<String, List<R>> entry : referencesPerDss.entrySet()) + Map<String, ITerminableFuture<List<V>>> futuresPerDataStore = + submitReferencesToDataStores(referencesPerDataStore, batchHandler); + + return gatherResultsFromDataStores(futuresPerDataStore); + } + + public static <R extends IDatasetIdentifier> Map<String, List<R>> getReferencesPerDataStore( + final List<R> references) + { + HashMap<String, List<R>> referencesPerDataStore = new HashMap<String, List<R>>(); + + if (references != null) + { + for (R reference : references) + { + if (reference != null) + { + String dataStoreUrl = reference.getDatastoreServerUrl(); + if (dataStoreUrl != null) + { + List<R> dataStoreReferences = referencesPerDataStore.get(dataStoreUrl); + if (dataStoreReferences == null) + { + dataStoreReferences = new ArrayList<R>(); + referencesPerDataStore.put(dataStoreUrl, dataStoreReferences); + } + dataStoreReferences.add(reference); + } + } + } + } + + return referencesPerDataStore; + } + + private <R extends IDatasetIdentifier, V> Map<String, ITerminableFuture<List<V>>> submitReferencesToDataStores( + final Map<String, List<R>> referencesPerDataStore, + final IDssServiceRpcScreeningBatchHandler<R, V> batchHandler) + { + Map<String, ITerminableFuture<List<V>>> futuresPerDataStore = + new LinkedHashMap<String, ITerminableFuture<List<V>>>(); + final long submitTime = System.currentTimeMillis(); + + for (Entry<String, List<R>> referencePerDataStore : referencesPerDataStore.entrySet()) { - final String dssUrl = entry.getKey(); - final List<R> referencesForDss = entry.getValue(); + final String dataStoreUrl = referencePerDataStore.getKey(); + final List<R> dataStoreReferences = referencePerDataStore.getValue(); - ITerminableFuture<List<V>> dssFuture = + ITerminableFuture<List<V>> dataStoreFuture = ConcurrencyUtilities.submit(executor, new INamedCallable<List<V>>() { @Override public List<V> call(IStoppableExecutor<List<V>> stoppableExecutor) throws Exception { - final DssServiceRpcScreeningHolder dssServiceHolder = - dssServiceFactory.createDssService(dssUrl); - return handler.handle(dssServiceHolder, referencesForDss); + final DssServiceRpcScreeningHolder dataStoreServiceHolder = + dssServiceFactory.createDssService(dataStoreUrl); + return batchHandler.handle(dataStoreServiceHolder, + dataStoreReferences); } @Override public String getCallableName() { - return dssUrl + "(" + callMillis + ")"; + return dataStoreUrl + "(" + submitTime + ")"; } }); - dssFutures.add(dssFuture); + futuresPerDataStore.put(dataStoreUrl, dataStoreFuture); } - List<V> allResults = new ArrayList<V>(); + return futuresPerDataStore; + } + + private <V> DssServiceRpcScreeningBatchResults<V> gatherResultsFromDataStores( + final Map<String, ITerminableFuture<List<V>>> futuresPerDataStore) + { + DssServiceRpcScreeningBatchResults<V> results = new DssServiceRpcScreeningBatchResults<V>(); try { - for (ITerminableFuture<List<V>> dssFuture : dssFutures) + for (Map.Entry<String, ITerminableFuture<List<V>>> futurePerDataStore : futuresPerDataStore + .entrySet()) { - List<V> dssResults = ConcurrencyUtilities.tryGetResult(dssFuture, -1); - if (dssResults != null) + String dataStoreUrl = futurePerDataStore.getKey(); + ITerminableFuture<List<V>> dataStoreFuture = futurePerDataStore.getValue(); + + List<V> dataStoreResults = ConcurrencyUtilities.tryGetResult(dataStoreFuture, -1); + if (dataStoreResults != null) { - allResults.addAll(dssResults); + results.addDataStoreResults(dataStoreUrl, dataStoreResults); } } } catch (RuntimeException e) { - for (ITerminableFuture<List<V>> dssFuture : dssFutures) + for (ITerminableFuture<List<V>> dataStoreFuture : futuresPerDataStore.values()) { - dssFuture.cancel(true); + dataStoreFuture.cancel(true); } throw e; } - return allResults; + return results; } @SuppressWarnings("unchecked") @@ -112,33 +166,4 @@ public class DssServiceRpcScreeningMultiplexer implements IDssServiceRpcScreenin return (List<R>) references; } - public static <R extends IDatasetIdentifier> Map<String, List<R>> getReferencesPerDss( - List<R> references) - { - HashMap<String, List<R>> referencesPerDss = new HashMap<String, List<R>>(); - - if (references != null) - { - for (R reference : references) - { - if (reference != null) - { - String url = reference.getDatastoreServerUrl(); - if (url != null) - { - List<R> list = referencesPerDss.get(url); - if (list == null) - { - list = new ArrayList<R>(); - referencesPerDss.put(url, list); - } - list.add(reference); - } - } - } - } - - return referencesPerDss; - } - } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/IDssServiceRpcScreeningBatchResults.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/IDssServiceRpcScreeningBatchResults.java new file mode 100644 index 0000000000000000000000000000000000000000..92dc94f0e9717b575ac30b8a32a15c538a4b6805 --- /dev/null +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/IDssServiceRpcScreeningBatchResults.java @@ -0,0 +1,31 @@ +/* + * Copyright 2013 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.dss.screening.shared.api.internal; + +import java.util.List; + +/** + * @author pkupczyk + */ +public interface IDssServiceRpcScreeningBatchResults<T> +{ + + public List<T> withDuplicates(); + + public List<T> withoutDuplicates(); + +} diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/IDssServiceRpcScreeningMultiplexer.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/IDssServiceRpcScreeningMultiplexer.java index 81ef30529ad9d0427bdf0b379f839c5285cb1985..dbc5962b64cefc1000f5e719c87c42e530c7132f 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/IDssServiceRpcScreeningMultiplexer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/shared/api/internal/IDssServiceRpcScreeningMultiplexer.java @@ -26,7 +26,8 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.IDatasetIdent public interface IDssServiceRpcScreeningMultiplexer { - public <R extends IDatasetIdentifier, V> List<V> process(final List<? extends R> references, + public <R extends IDatasetIdentifier, V> DssServiceRpcScreeningBatchResults<V> process( + final List<? extends R> references, final IDssServiceRpcScreeningBatchHandler<R, V> batchHandler); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java index 2e4c892d9e6903b5950527787d985d2008009aaf..e58c489dc6eb6da89645c3d358ee62dbde772984 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java @@ -878,7 +878,7 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa } }; - return dssMultiplexer.process(featureDatasets, handler); + return dssMultiplexer.process(featureDatasets, handler).withoutDuplicates(); } /** @@ -946,8 +946,9 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa } }; - return dssMultiplexer.process(identifiersIncludingContained == null ? featureDatasets - : identifiersIncludingContained, handler); + return dssMultiplexer.process( + identifiersIncludingContained == null ? featureDatasets + : identifiersIncludingContained, handler).withoutDuplicates(); } private SearchSubCriteria getContainerSearchCriteria(String containerCode) @@ -1035,7 +1036,7 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa } }; - return dssMultiplexer.process(featureDatasets, handler); + return dssMultiplexer.process(featureDatasets, handler).withDuplicates(); } @Override @@ -1089,7 +1090,7 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa } }; - return dssMultiplexer.process(datasetWellReferences, handler); + return dssMultiplexer.process(datasetWellReferences, handler).withDuplicates(); } private boolean isEmpty(final List<String> featureCodeOrNull) @@ -1747,7 +1748,7 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa String channel, IImageTransformerFactory transformerFactoryOrNull) { Map<String, List<IDatasetIdentifier>> map = - DssServiceRpcScreeningMultiplexer.getReferencesPerDss(dataSetIdentifiers); + DssServiceRpcScreeningMultiplexer.getReferencesPerDataStore(dataSetIdentifiers); Set<Entry<String, List<IDatasetIdentifier>>> entrySet = map.entrySet(); for (Entry<String, List<IDatasetIdentifier>> entry : entrySet) { @@ -1764,7 +1765,7 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa List<IDatasetIdentifier> dataSetIdentifiers, String channel) { Map<String, List<IDatasetIdentifier>> map = - DssServiceRpcScreeningMultiplexer.getReferencesPerDss(dataSetIdentifiers); + DssServiceRpcScreeningMultiplexer.getReferencesPerDataStore(dataSetIdentifiers); Set<Entry<String, List<IDatasetIdentifier>>> entrySet = map.entrySet(); if (entrySet.size() != 1) { @@ -1833,7 +1834,7 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa } }; - return dssMultiplexer.process(imageDatasets, handler); + return dssMultiplexer.process(imageDatasets, handler).withDuplicates(); } @Override @@ -2104,7 +2105,7 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa new ArrayList<IDatasetIdentifier>(dataSetIdentifiers.size()); simplerList.addAll(dataSetIdentifiers); Map<String, List<IDatasetIdentifier>> map = - DssServiceRpcScreeningMultiplexer.getReferencesPerDss(simplerList); + DssServiceRpcScreeningMultiplexer.getReferencesPerDataStore(simplerList); Set<Entry<String, List<IDatasetIdentifier>>> entrySet = map.entrySet(); if (entrySet.size() != 1) { diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java index 801c517c1394c57d629936c50ea1be9140a4af02..b7021639037483f5cdbf07e9d20a983b8173cf22 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java @@ -768,7 +768,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(featureDatasets, handler); + return dssMultiplexer.process(featureDatasets, handler).withoutDuplicates(); } @Override @@ -790,7 +790,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(featureDatasets, handler); + return dssMultiplexer.process(featureDatasets, handler).withoutDuplicates(); } @Override @@ -813,7 +813,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(featureDatasets, handler); + return dssMultiplexer.process(featureDatasets, handler).withDuplicates(); } @Override @@ -837,7 +837,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(datasetWellReferences, handler); + return dssMultiplexer.process(datasetWellReferences, handler).withDuplicates(); } @Override @@ -858,7 +858,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(imageReferences, handler); + return dssMultiplexer.process(imageReferences, handler).withDuplicates(); } @Override @@ -879,7 +879,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(imageReferences, handler); + return dssMultiplexer.process(imageReferences, handler).withDuplicates(); } @Override @@ -900,7 +900,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(imageReferences, handler); + return dssMultiplexer.process(imageReferences, handler).withDuplicates(); } @Override @@ -921,7 +921,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(imageReferences, handler); + return dssMultiplexer.process(imageReferences, handler).withDuplicates(); } @Override @@ -940,7 +940,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(imageReferences, handler); + return dssMultiplexer.process(imageReferences, handler).withDuplicates(); } @Override @@ -959,7 +959,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(imageReferences, handler); + return dssMultiplexer.process(imageReferences, handler).withDuplicates(); } @Override @@ -979,7 +979,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(imageReferences, handler); + return dssMultiplexer.process(imageReferences, handler).withDuplicates(); } @Override @@ -999,7 +999,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(imageDatasets, handler); + return dssMultiplexer.process(imageDatasets, handler).withDuplicates(); } @Override @@ -1019,7 +1019,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(imageDatasets, handler); + return dssMultiplexer.process(imageDatasets, handler).withDuplicates(); } @Override @@ -1038,7 +1038,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl } }; - return dssMultiplexer.process(imageReferences, handler); + return dssMultiplexer.process(imageReferences, handler).withDuplicates(); } } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacadeTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacadeTest.java index a7cecf1a98a7cd0e64acc656b84d77318d65d1fa..5316f2d0c30ad9ff741eea28e4a410c986808e89 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacadeTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacadeTest.java @@ -100,7 +100,6 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConst * @author Franz-Josef Elmer */ @Friend(toClasses = DssServiceRpcScreeningHolder.class) -@Test(enabled = false) public class ScreeningOpenbisServiceFacadeTest extends AbstractFileSystemTestCase { private static final String MY_DATA_SET_TYPE = "my-data-set"; diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/DssServiceRpcScreeningBatchResultsTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/DssServiceRpcScreeningBatchResultsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e0db9ee097e090c5743b33224ba472d5963cb28d --- /dev/null +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/DssServiceRpcScreeningBatchResultsTest.java @@ -0,0 +1,69 @@ +/* + * Copyright 2013 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1; + +import java.util.ArrayList; +import java.util.Arrays; + +import org.testng.AssertJUnit; +import org.testng.annotations.Test; + +import ch.systemsx.cisd.openbis.dss.screening.shared.api.internal.DssServiceRpcScreeningBatchResults; + +/** + * @author pkupczyk + */ +public class DssServiceRpcScreeningBatchResultsTest extends AssertJUnit +{ + + @Test + public void testNullResults() + { + DssServiceRpcScreeningBatchResults<String> results = + new DssServiceRpcScreeningBatchResults<String>(); + results.addDataStoreResults("dss1", null); + results.addDataStoreResults("dss2", null); + + assertTrue(results.withDuplicates().isEmpty()); + assertTrue(results.withoutDuplicates().isEmpty()); + } + + @Test + public void testEmptyResults() + { + DssServiceRpcScreeningBatchResults<String> results = + new DssServiceRpcScreeningBatchResults<String>(); + results.addDataStoreResults("dss1", new ArrayList<String>()); + results.addDataStoreResults("dss2", new ArrayList<String>()); + + assertTrue(results.withDuplicates().isEmpty()); + assertTrue(results.withoutDuplicates().isEmpty()); + } + + @Test + public void testNotEmptyResults() + { + DssServiceRpcScreeningBatchResults<String> results = + new DssServiceRpcScreeningBatchResults<String>(); + results.addDataStoreResults("dss1", Arrays.asList("a", "c", "e")); + results.addDataStoreResults("dss2", Arrays.asList("c", "d")); + + assertEquals(Arrays.asList("a", "c", "e", "c", "d"), results.withDuplicates()); + assertEquals(Arrays.asList("a", "c", "e", "d"), results.withoutDuplicates()); + } + +} diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/DssServiceRpcScreeningMultiplexerTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/DssServiceRpcScreeningMultiplexerTest.java index 94c43f6669a56832165fa14aaa85f2b52f774e90..6256fdcb17e3ec1dd3bcd2f98f665a00cb56209e 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/DssServiceRpcScreeningMultiplexerTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/DssServiceRpcScreeningMultiplexerTest.java @@ -216,7 +216,7 @@ public class DssServiceRpcScreeningMultiplexerTest extends AssertJUnit @Test public void testWithNullReferenceLists() { - List<String> results = multiplexer.process(null, batchHandler); + List<String> results = multiplexer.process(null, batchHandler).withDuplicates(); assertTrue(results.isEmpty()); } @@ -224,7 +224,8 @@ public class DssServiceRpcScreeningMultiplexerTest extends AssertJUnit public void testWithEmptyReferenceLists() { List<String> results = - multiplexer.process(new ArrayList<IDatasetIdentifier>(), batchHandler); + multiplexer.process(new ArrayList<IDatasetIdentifier>(), batchHandler) + .withDuplicates(); assertTrue(results.isEmpty()); } @@ -330,7 +331,7 @@ public class DssServiceRpcScreeningMultiplexerTest extends AssertJUnit } }); - return multiplexer.process(allDatasets, batchHandler); + return multiplexer.process(allDatasets, batchHandler).withDuplicates(); } }