[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