[java-metadata-aggregator COMMIT] in /trunk: aggregator-parent/doc/RELEASE-NOTES.txt aggregator-pipeline/src/main/jav...
noreply at shibboleth.net
noreply at shibboleth.net
Wed Sep 17 07:40:49 EDT 2014
Author: iay
Date: Wed Sep 17 07:40:49 2014
New Revision: 378
URL: http://svn.shibboleth.net/view/java-metadata-aggregator?rev=378&view=rev
Log:
MDA-140: NPE from SplitMergeStage if a pipeline is not set
Modified:
trunk/aggregator-parent/doc/RELEASE-NOTES.txt
trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/FutureSupport.java
trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/SplitMergeStage.java
trunk/aggregator-pipeline/src/test/java/net/shibboleth/metadata/pipeline/SplitMergeStageTest.java
Modified: trunk/aggregator-parent/doc/RELEASE-NOTES.txt
URL: http://svn.shibboleth.net/view/java-metadata-aggregator/trunk/aggregator-parent/doc/RELEASE-NOTES.txt?rev=378&r1=377&r2=378&view=diff
==============================================================================
--- trunk/aggregator-parent/doc/RELEASE-NOTES.txt (original)
+++ trunk/aggregator-parent/doc/RELEASE-NOTES.txt Wed Sep 17 07:40:49 2014
@@ -114,6 +114,7 @@
** Bug
* [MDA-130] - NPE in DOMResourceStage if resource reading fails
+ * [MDA-140] - NPE from SplitMergeStage if a pipeline is not set
** New Feature
* [JSE-1] - change factory beans to operate on resources, not files
Modified: trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/FutureSupport.java
URL: http://svn.shibboleth.net/view/java-metadata-aggregator/trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/FutureSupport.java?rev=378&r1=377&r2=378&view=diff
==============================================================================
--- trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/FutureSupport.java (original)
+++ trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/FutureSupport.java Wed Sep 17 07:40:49 2014
@@ -20,6 +20,8 @@
import java.util.Collection;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;
@@ -34,6 +36,56 @@
*/
@ThreadSafe
public final class FutureSupport {
+
+ /**
+ * An implementation of {@link Future} that returns a value that is
+ * already known.
+ *
+ * @param <T> type of "future" object to return
+ */
+ public static class FutureNow<T> implements Future<T> {
+
+ /**
+ * Value to be returned.
+ */
+ private final T value;
+
+ /**
+ * Constructor.
+ *
+ * @param t value to be returned
+ */
+ FutureNow(final T t) {
+ value = t;
+ }
+
+ @Override
+ public boolean cancel(boolean mayInterruptIfRunning) {
+ return false;
+ }
+
+ @Override
+ public boolean isCancelled() {
+ return false;
+ }
+
+ @Override
+ public boolean isDone() {
+ return true;
+ }
+
+ @Override
+ public T get() throws InterruptedException, ExecutionException {
+ return value;
+ }
+
+ @Override
+ public T get(long timeout, TimeUnit unit) throws InterruptedException,
+ ExecutionException, TimeoutException {
+ return value;
+ }
+
+ }
/** Class logger. */
private static final Logger LOG = LoggerFactory.getLogger(FutureSupport.class);
Modified: trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/SplitMergeStage.java
URL: http://svn.shibboleth.net/view/java-metadata-aggregator/trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/SplitMergeStage.java?rev=378&r1=377&r2=378&view=diff
==============================================================================
--- trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/SplitMergeStage.java (original)
+++ trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/SplitMergeStage.java Wed Sep 17 07:40:49 2014
@@ -257,9 +257,14 @@
* @return the token representing the background execution of the pipeline
*/
@Nonnull protected Future<Collection<Item<T>>> executePipeline(Pipeline<T> pipeline,
- Collection<Item<T>> items) {
+ final Collection<Item<T>> items) {
+
+ /*
+ * If no pipeline has been specified, just return the collection unchanged via
+ * a {@link Future}.
+ */
if (pipeline == null) {
- return null;
+ return new FutureSupport.FutureNow<>(items);
}
final PipelineCallable<T> callable = new PipelineCallable<>(pipeline, items);
Modified: trunk/aggregator-pipeline/src/test/java/net/shibboleth/metadata/pipeline/SplitMergeStageTest.java
URL: http://svn.shibboleth.net/view/java-metadata-aggregator/trunk/aggregator-pipeline/src/test/java/net/shibboleth/metadata/pipeline/SplitMergeStageTest.java?rev=378&r1=377&r2=378&view=diff
[... 87 lines stripped ...]
More information about the commits
mailing list