Repository: nifi
Updated Branches:
  refs/heads/master 0fd51b4d1 -> 07a6499da


NIFI-3218: throw exception in MockProcessSession when transferring file to self


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/58f60b3c
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/58f60b3c
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/58f60b3c

Branch: refs/heads/master
Commit: 58f60b3cf0430e1ca5141c550595cd827b7e4b3e
Parents: 0fd51b4
Author: m-hogue <[email protected]>
Authored: Thu Jul 6 12:10:09 2017 -0400
Committer: Joe Skora <[email protected]>
Committed: Tue Jul 11 13:51:13 2017 +0000

----------------------------------------------------------------------
 .../main/java/org/apache/nifi/util/MockProcessSession.java  | 7 +++++++
 .../java/org/apache/nifi/util/TestMockProcessSession.java   | 9 +++++++++
 2 files changed, 16 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/58f60b3c/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessSession.java
----------------------------------------------------------------------
diff --git 
a/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessSession.java 
b/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessSession.java
index af472d6..553c6e4 100644
--- a/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessSession.java
+++ b/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessSession.java
@@ -756,6 +756,13 @@ public class MockProcessSession implements ProcessSession {
             throw new IllegalArgumentException("I only accept MockFlowFile");
         }
 
+        // if the flowfile provided was created in this session (i.e. it's in 
currentVersions),
+        // then throw an exception indicating that you can't transfer 
flowfiles back to self.
+        // this mimics the behavior of StandardProcessSession
+        if(currentVersions.get(flowFile.getId()) != null) {
+            throw new IllegalArgumentException("Cannot transfer FlowFiles that 
are created in this Session back to self");
+        }
+
         final MockFlowFile mockFlowFile = (MockFlowFile) flowFile;
         beingProcessed.remove(flowFile.getId());
         processorQueue.offer(mockFlowFile);

http://git-wip-us.apache.org/repos/asf/nifi/blob/58f60b3c/nifi-mock/src/test/java/org/apache/nifi/util/TestMockProcessSession.java
----------------------------------------------------------------------
diff --git 
a/nifi-mock/src/test/java/org/apache/nifi/util/TestMockProcessSession.java 
b/nifi-mock/src/test/java/org/apache/nifi/util/TestMockProcessSession.java
index 1c554d2..7173f72 100644
--- a/nifi-mock/src/test/java/org/apache/nifi/util/TestMockProcessSession.java
+++ b/nifi-mock/src/test/java/org/apache/nifi/util/TestMockProcessSession.java
@@ -80,6 +80,15 @@ public class TestMockProcessSession {
 
     }
 
+    @Test(expected = IllegalArgumentException.class)
+    public void testRejectTransferNewlyCreatedFileToSelf() {
+        final Processor processor = new PoorlyBehavedProcessor();
+        final MockProcessSession session = new MockProcessSession(new 
SharedSessionState(processor, new AtomicLong(0L)), processor);
+        final FlowFile ff1 = session.createFlowFile("hello, world".getBytes());
+        // this should throw an exception because we shouldn't allow a newly 
created flowfile to get routed back to self
+        session.transfer(ff1);
+    }
+
     protected static class PoorlyBehavedProcessor extends AbstractProcessor {
 
         private static final Relationship REL_FAILURE = new 
Relationship.Builder()

Reply via email to