[NIFI-784] Moving dynamic propertyMap to onScheduled method and updating logger 
statements to use lazy evaluation with String formatter


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

Branch: refs/heads/develop
Commit: 4a43e81343b4eaf967a7e5a5417fd7bb35226503
Parents: a1af29e
Author: Brian Ghigiarelli <[email protected]>
Authored: Thu Jul 23 22:52:35 2015 -0400
Committer: Brian Ghigiarelli <[email protected]>
Committed: Thu Jul 23 22:52:35 2015 -0400

----------------------------------------------------------------------
 .../processors/standard/RouteOnAttribute.java   | 39 ++++++++++++++------
 1 file changed, 28 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/4a43e813/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/RouteOnAttribute.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/RouteOnAttribute.java
 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/RouteOnAttribute.java
index 69107dd..52dc80b 100644
--- 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/RouteOnAttribute.java
+++ 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/RouteOnAttribute.java
@@ -27,12 +27,14 @@ import java.util.Set;
 import java.util.concurrent.atomic.AtomicReference;
 
 import org.apache.nifi.annotation.behavior.DynamicProperty;
+import org.apache.nifi.annotation.behavior.DynamicRelationship;
 import org.apache.nifi.annotation.behavior.EventDriven;
 import org.apache.nifi.annotation.behavior.SideEffectFree;
 import org.apache.nifi.annotation.behavior.SupportsBatching;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
-import org.apache.nifi.annotation.behavior.DynamicRelationship;
 import org.apache.nifi.annotation.documentation.Tags;
+import org.apache.nifi.annotation.lifecycle.OnScheduled;
+import org.apache.nifi.annotation.lifecycle.OnUnscheduled;
 import org.apache.nifi.components.AllowableValue;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.PropertyValue;
@@ -103,6 +105,8 @@ public class RouteOnAttribute extends AbstractProcessor {
     private volatile String configuredRouteStrategy = 
ROUTE_STRATEGY.getDefaultValue();
     private volatile Set<String> dynamicPropertyNames = new HashSet<>();
 
+    private final Map<Relationship, PropertyValue> propertyMap = new 
HashMap<>();
+
     @Override
     protected void init(final ProcessorInitializationContext context) {
         final Set<Relationship> set = new HashSet<>();
@@ -166,6 +170,27 @@ public class RouteOnAttribute extends AbstractProcessor {
         this.relationships.set(newRelationships);
     }
 
+    /**
+     * When this processor is 
+     * @param context
+     */
+    @OnScheduled
+    public void onScheduled(final ProcessContext context) {
+        for (final PropertyDescriptor descriptor : 
context.getProperties().keySet()) {
+            if (!descriptor.isDynamic()) {
+                continue;
+            }
+            getLogger().debug("Adding new dynamic property: {}", new 
Object[]{descriptor});
+            propertyMap.put(new 
Relationship.Builder().name(descriptor.getName()).build(), 
context.getProperty(descriptor));
+        }
+    }
+    
+    @OnUnscheduled
+    public void onUnscheduled(final ProcessContext context) {
+       getLogger().debug("Clearing propertyMap");
+       propertyMap.clear();
+    }
+
     @Override
     public void onTrigger(final ProcessContext context, final ProcessSession 
session) {
         FlowFile flowFile = session.get();
@@ -174,14 +199,6 @@ public class RouteOnAttribute extends AbstractProcessor {
         }
 
         final ProcessorLog logger = getLogger();
-        final Map<Relationship, PropertyValue> propertyMap = new HashMap<>();
-        for (final PropertyDescriptor descriptor : 
context.getProperties().keySet()) {
-            if (!descriptor.isDynamic()) {
-                continue;
-            }
-
-            propertyMap.put(new 
Relationship.Builder().name(descriptor.getName()).build(), 
context.getProperty(descriptor));
-        }
 
         final Set<Relationship> matchingRelationships = new HashSet<>();
         for (final Map.Entry<Relationship, PropertyValue> entry : 
propertyMap.entrySet()) {
@@ -216,7 +233,7 @@ public class RouteOnAttribute extends AbstractProcessor {
         }
 
         if (destinationRelationships.isEmpty()) {
-            logger.info(this + " routing " + flowFile + " to unmatched");
+            logger.info("{} routing {} to unmatched", new Object[]{ this, 
flowFile });
             flowFile = session.putAttribute(flowFile, ROUTE_ATTRIBUTE_KEY, 
REL_NO_MATCH.getName());
             session.getProvenanceReporter().route(flowFile, REL_NO_MATCH);
             session.transfer(flowFile, REL_NO_MATCH);
@@ -236,7 +253,7 @@ public class RouteOnAttribute extends AbstractProcessor {
 
             // now transfer any clones generated
             for (final Map.Entry<Relationship, FlowFile> entry : 
transferMap.entrySet()) {
-                logger.info(this + " cloned " + flowFile + " into " + 
entry.getValue() + " and routing clone to relationship " + entry.getKey());
+                logger.info("{} cloned {} into {} and routing clone to 
relationship {}", new Object[]{ this, flowFile, entry.getValue(), 
entry.getKey() });
                 FlowFile updatedFlowFile = 
session.putAttribute(entry.getValue(), ROUTE_ATTRIBUTE_KEY, 
entry.getKey().getName());
                 session.getProvenanceReporter().route(updatedFlowFile, 
entry.getKey());
                 session.transfer(updatedFlowFile, entry.getKey());

Reply via email to