You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2015/03/26 14:02:48 UTC

[01/21] incubator-nifi git commit: NIFI-441 - renaming index.html to additionalDetails.html and removing html that is generated by the framework

Repository: incubator-nifi
Updated Branches:
  refs/heads/NIFI-250 8a830bef4 -> c61a2afbb


NIFI-441 - renaming index.html to additionalDetails.html
and removing html that is generated by the framework


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

Branch: refs/heads/NIFI-250
Commit: 511360cf59884bd451385fe005fa96aa61d584b1
Parents: 0bd2784
Author: danbress <db...@onyxconsults.com>
Authored: Thu Mar 19 08:32:18 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Mon Mar 23 08:04:17 2015 -0400

----------------------------------------------------------------------
 .../additionalDetails.html                      | 28 ++++++
 .../docs/__package__.MyProcessor/index.html     | 96 --------------------
 2 files changed, 28 insertions(+), 96 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/511360cf/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html
----------------------------------------------------------------------
diff --git a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html
new file mode 100644
index 0000000..235cffa
--- /dev/null
+++ b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You 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.
+    -->
+    <head>
+        <meta charset="utf-8"/>
+        <title>MyProcessor</title>
+        <link rel="stylesheet" href="../../css/component-usage.css" type="text/css"/>
+    </head>
+
+    <body>
+        <p>This is a place to provide additional text, images and references that best describe how your processor is used
+        </p>
+
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/511360cf/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/index.html
----------------------------------------------------------------------
diff --git a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/index.html b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/index.html
deleted file mode 100644
index 34e494f..0000000
--- a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/index.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-    <!--
-      Licensed to the Apache Software Foundation (ASF) under one or more
-      contributor license agreements.  See the NOTICE file distributed with
-      this work for additional information regarding copyright ownership.
-      The ASF licenses this file to You 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.
-    -->
-    <head>
-        <meta charset="utf-8"/>
-        <title>GetFile</title>
-        <link rel="stylesheet" href="../../css/component-usage.css" type="text/css"/>
-    </head>
-
-    <body>
-        <!-- Processor Documentation ================================================== -->
-        <h2>Description:</h2>
-
-        <p>Replace with a description.</p>
-
-        <p>
-            <strong>Uses Attributes:</strong>
-        </p>
-        <table border="1">
-            <thead>
-            <tr>
-                <th>Attribute Name</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td></td>
-                <td></td>
-            </tr>
-            </tbody>
-        </table>
-
-        <p>
-            <strong>Modifies Attributes:</strong>
-        </p>
-        <table border="1">
-            <thead>
-            <tr>
-                <th>Attribute Name</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td></td>
-                <td></td>
-            </tr>
-            </tbody>
-        </table>
-
-        <p>
-            <strong>Properties:</strong>
-        </p>
-
-        <p>In the list below, the names of required properties appear
-            in bold. Any other properties (not in bold) are considered optional.
-            If a property has a default value, it is indicated. If a property
-            supports the use of the NiFi Expression Language (or simply,
-            "expression language"), that is also indicated.</p>
-        <ul>
-            <li><strong>My Property</strong>
-                <ul>
-                    <li>An example property.</li>
-                    <li>Default value: no default</li>
-                    <li>Supports expression language: false</li>
-                </ul>
-            </li>
-        </ul>
-
-        <p>
-            <strong>Relationships:</strong>
-        </p>
-        <ul>
-            <li>my_relationship
-                <ul>
-                    <li>An example relationship.</li>
-                </ul>
-            </li>
-        </ul>
-
-    </body>
-</html>


[08/21] incubator-nifi git commit: Adding TLS to PutEmail and several other PropertyDescriptors that can be driven by EL for full control of outgoing emails. Also switched from Sun SMTPTransport to Java Transport for sending the email message

Posted by ma...@apache.org.
Adding TLS to PutEmail and several other PropertyDescriptors that can be driven by EL for full control of outgoing emails. Also switched from Sun SMTPTransport to Java Transport for sending the email message

Signed-off-by: Mark Payne <ma...@hotmail.com>


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

Branch: refs/heads/NIFI-250
Commit: b97396c0fabe5a13043e6243c2e578e527b4f0c5
Parents: e48ea72
Author: Brian Ghigiarelli <br...@gmail.com>
Authored: Fri Mar 20 16:37:23 2015 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Mon Mar 23 10:10:49 2015 -0400

----------------------------------------------------------------------
 .../nifi/processors/standard/PutEmail.java      | 149 ++++++++++++++++---
 .../nifi/processors/standard/TestPutEmail.java  |  40 ++++-
 2 files changed, 167 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/b97396c0/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
index d83b100..f632000 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
@@ -22,18 +22,22 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Properties;
 import java.util.Set;
 
 import javax.activation.DataHandler;
+import javax.mail.Authenticator;
 import javax.mail.Message;
 import javax.mail.Message.RecipientType;
 import javax.mail.MessagingException;
+import javax.mail.PasswordAuthentication;
 import javax.mail.Session;
-import javax.mail.URLName;
+import javax.mail.Transport;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
@@ -61,8 +65,6 @@ import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.processor.io.InputStreamCallback;
 import org.apache.nifi.processor.util.StandardValidators;
 
-import com.sun.mail.smtp.SMTPTransport;
-
 @SupportsBatching
 @Tags({"email", "put", "notify", "smtp"})
 @CapabilityDescription("Sends an e-mail to configured recipients for each incoming FlowFile")
@@ -72,6 +74,7 @@ public class PutEmail extends AbstractProcessor {
             .name("SMTP Hostname")
             .description("The hostname of the SMTP host")
             .required(true)
+		    .expressionLanguageSupported(true)
             .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
             .build();
     public static final PropertyDescriptor SMTP_PORT = new PropertyDescriptor.Builder()
@@ -79,21 +82,56 @@ public class PutEmail extends AbstractProcessor {
             .description("The Port used for SMTP communications")
             .required(true)
             .defaultValue("25")
+		    .expressionLanguageSupported(true)
             .addValidator(StandardValidators.PORT_VALIDATOR)
             .build();
     public static final PropertyDescriptor SMTP_USERNAME = new PropertyDescriptor.Builder()
             .name("SMTP Username")
             .description("Username for the SMTP account")
+		    .expressionLanguageSupported(true)
             .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
             .required(false)
             .build();
     public static final PropertyDescriptor SMTP_PASSWORD = new PropertyDescriptor.Builder()
             .name("SMTP Password")
             .description("Password for the SMTP account")
+		    .expressionLanguageSupported(true)
             .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
             .required(false)
             .sensitive(true)
             .build();
+    public static final PropertyDescriptor SMTP_AUTH = new PropertyDescriptor.Builder()
+		    .name("SMTP Auth")
+		    .description("Flag indicating whether authentication should be used")
+		    .required(true)
+		    .expressionLanguageSupported(true)
+		    .addValidator(StandardValidators.BOOLEAN_VALIDATOR)
+            .defaultValue("true")
+            .build();
+    public static final PropertyDescriptor SMTP_TLS = new PropertyDescriptor.Builder()
+		    .name("SMTP TLS")
+		    .description("Flag indicating whether TLS should be enabled")
+		    .required(true)
+		    .expressionLanguageSupported(true)
+		    .addValidator(StandardValidators.BOOLEAN_VALIDATOR)
+		    .defaultValue("false")
+		    .build();
+    public static final PropertyDescriptor SMTP_SOCKET_FACTORY = new PropertyDescriptor.Builder()
+		    .name("SMTP Socket Factory")
+		    .description("Socket Factory to use for SMTP Connection")
+		    .required(true)
+		    .expressionLanguageSupported(true)
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+		    .defaultValue("javax.net.ssl.SSLSocketFactory")
+		    .build();
+    public static final PropertyDescriptor HEADER_XMAILER = new PropertyDescriptor.Builder()
+		    .name("SMTP X-Mailer Header")
+		    .description("X-Mailer used in the header of the outgoing email")
+		    .required(true)
+		    .expressionLanguageSupported(true)
+		    .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+		    .defaultValue("NiFi")
+		    .build();
     public static final PropertyDescriptor FROM = new PropertyDescriptor.Builder()
             .name("From")
             .description("Specifies the Email address to use as the sender")
@@ -152,12 +190,27 @@ public class PutEmail extends AbstractProcessor {
             .allowableValues("true", "false")
             .defaultValue("false")
             .build();
-
+    
     public static final Relationship REL_SUCCESS = new Relationship.Builder().name("success").description("FlowFiles that are successfully sent will be routed to this relationship").build();
     public static final Relationship REL_FAILURE = new Relationship.Builder().name("failure").description("FlowFiles that fail to send will be routed to this relationship").build();
 
     private List<PropertyDescriptor> properties;
     private Set<Relationship> relationships;
+    
+    /**
+     * Mapping of the mail properties to the NiFi PropertyDescriptors that will be evaluated at runtime
+     */
+    private static Map<String, PropertyDescriptor> propertyToContext = new HashMap<String, PropertyDescriptor>();
+    static {
+    	propertyToContext.put("mail.smtp.host", SMTP_HOSTNAME);
+	    propertyToContext.put("mail.smtp.port", SMTP_PORT);
+	    propertyToContext.put("mail.smtp.socketFactory.port", SMTP_PORT);
+	    propertyToContext.put("mail.smtp.socketFactory.class", SMTP_SOCKET_FACTORY);
+	    propertyToContext.put("mail.smtp.auth", SMTP_AUTH);
+	    propertyToContext.put("mail.smtp.starttls.enable", SMTP_TLS);
+	    propertyToContext.put("mail.smtp.user", SMTP_USERNAME);
+	    propertyToContext.put("mail.smtp.password", SMTP_PASSWORD);
+    }
 
     @Override
     protected void init(final ProcessorInitializationContext context) {
@@ -166,6 +219,10 @@ public class PutEmail extends AbstractProcessor {
         properties.add(SMTP_PORT);
         properties.add(SMTP_USERNAME);
         properties.add(SMTP_PASSWORD);
+        properties.add(SMTP_AUTH);
+        properties.add(SMTP_TLS);
+        properties.add(SMTP_SOCKET_FACTORY);
+        properties.add(HEADER_XMAILER);
         properties.add(FROM);
         properties.add(TO);
         properties.add(CC);
@@ -214,9 +271,10 @@ public class PutEmail extends AbstractProcessor {
             return;
         }
 
-        final Properties properties = new Properties();
-        properties.setProperty("smtp.mail.host", context.getProperty(SMTP_HOSTNAME).getValue());
-        final Session mailSession = Session.getInstance(properties);
+        final Properties properties = this.getMailPropertiesFromFlowFile(context, flowFile);
+        
+        final Session mailSession = this.createMailSession(properties);
+        
         final Message message = new MimeMessage(mailSession);
         final ProcessorLog logger = getLogger();
 
@@ -232,7 +290,7 @@ public class PutEmail extends AbstractProcessor {
             final InternetAddress[] bccAddresses = toInetAddresses(context.getProperty(BCC).evaluateAttributeExpressions(flowFile).getValue());
             message.setRecipients(RecipientType.BCC, bccAddresses);
 
-            message.setHeader("X-Mailer", "NiFi");
+            message.setHeader("X-Mailer", context.getProperty(HEADER_XMAILER).evaluateAttributeExpressions(flowFile).getValue());
             message.setSubject(context.getProperty(SUBJECT).evaluateAttributeExpressions(flowFile).getValue());
             String messageText = context.getProperty(MESSAGE).evaluateAttributeExpressions(flowFile).getValue();
 
@@ -264,18 +322,8 @@ public class PutEmail extends AbstractProcessor {
                 multipart.addBodyPart(mimeFile);
                 message.setContent(multipart);
             }
-
-            final String smtpHost = context.getProperty(SMTP_HOSTNAME).getValue();
-            final SMTPTransport transport = new SMTPTransport(mailSession, new URLName(smtpHost));
-            try {
-                final int smtpPort = context.getProperty(SMTP_PORT).asInteger();
-                final String smtpUsername = context.getProperty(SMTP_USERNAME).getValue();
-                final String smtpPassword = context.getProperty(SMTP_PASSWORD).getValue();
-                transport.connect(smtpHost, smtpPort, smtpUsername, smtpPassword);
-                transport.sendMessage(message, message.getAllRecipients());
-            } finally {
-                transport.close();
-            }
+            
+            Transport.send(message);
 
             session.getProvenanceReporter().send(flowFile, "mailto:" + message.getAllRecipients()[0].toString());
             session.transfer(flowFile, REL_SUCCESS);
@@ -287,7 +335,66 @@ public class PutEmail extends AbstractProcessor {
         }
     }
 
-    public static final String BODY_SEPARATOR = "\n\n--------------------------------------------------\n";
+    /**
+     * Based on the input properties, determine whether an authenticate or unauthenticated session
+     * should be used. If authenticated, creates a Password Authenticator for use in sending the email.
+     * 
+     * @param properties
+     * @return
+     */
+	private Session createMailSession(final Properties properties) {
+		String authValue = properties.getProperty("mail.smtp.auth");
+        Boolean auth = Boolean.valueOf(authValue);
+        
+        /*
+         * Conditionally create a password authenticator if the 'auth' parameter is set.
+         */
+        final Session mailSession = auth ? Session.getInstance(properties, new Authenticator() {
+        	@Override
+        	public PasswordAuthentication getPasswordAuthentication() {
+        		String username = properties.getProperty("mail.smtp.user"),
+        				password = properties.getProperty("mail.smtp.password");
+        		return new PasswordAuthentication(username, password);
+        	}
+        }) : Session.getInstance(properties); // without auth
+		return mailSession;
+	}
+
+    /**
+     * Uses the mapping of javax.mail properties to NiFi PropertyDescriptors to build
+     * the required Properties object to be used for sending this email
+     * 
+     * @param context
+     * @param flowFile
+     * @return
+     */
+    private Properties getMailPropertiesFromFlowFile(final ProcessContext context, final FlowFile flowFile) {
+
+        final Properties properties = new Properties();
+        
+        final ProcessorLog logger = this.getLogger();
+        
+        for(Entry<String, PropertyDescriptor> entry : propertyToContext.entrySet()) {
+        	
+        	// Evaluate the property descriptor against the flow file
+        	String flowFileValue = context.getProperty(entry.getValue()).evaluateAttributeExpressions(flowFile).getValue();
+        	
+        	String property = entry.getKey();
+        	
+        	logger.debug("Evaluated Mail Property: {} with Value: {}", new Object[]{property, flowFileValue});
+        	
+        	// Nullable values are not allowed, so filter out
+        	if(null != flowFileValue) {
+        		properties.setProperty(property, flowFileValue);
+        	}
+        	
+        }
+        
+        return properties;
+        
+	}
+
+	public static final String BODY_SEPARATOR = "\n\n--------------------------------------------------\n";
 
     private static String formatAttributes(final FlowFile flowFile, final String messagePrepend) {
         StringBuilder message = new StringBuilder(messagePrepend);

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/b97396c0/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
index b737ed6..b0ce477 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
@@ -19,14 +19,19 @@ package org.apache.nifi.processors.standard;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.nifi.flowfile.FlowFile;
+import org.apache.nifi.processor.ProcessContext;
+import org.apache.nifi.processor.ProcessSession;
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.junit.Test;
 
+import static org.junit.Assert.*;
+
 public class TestPutEmail {
 
     @Test
-    public void testHotNotFound() {
+    public void testHostNotFound() {
         // verifies that files are routed to failure when the SMTP host doesn't exist
         final TestRunner runner = TestRunners.newTestRunner(new PutEmail());
         runner.setProperty(PutEmail.SMTP_HOSTNAME, "host-doesnt-exist123");
@@ -42,4 +47,37 @@ public class TestPutEmail {
         runner.assertQueueEmpty();
         runner.assertAllFlowFilesTransferred(PutEmail.REL_FAILURE);
     }
+    
+    @Test
+    public void testEmailPropertyFormatters() {
+        // verifies that files are routed to failure when the SMTP host doesn't exist
+        final TestRunner runner = TestRunners.newTestRunner(new PutEmail());
+        runner.setProperty(PutEmail.HEADER_XMAILER, "TestingNiFi");
+        runner.setProperty(PutEmail.SMTP_HOSTNAME, "smtp-host");
+        runner.setProperty(PutEmail.SMTP_SOCKET_FACTORY, "${dynamicSocketFactory}");
+        runner.setProperty(PutEmail.HEADER_XMAILER, "TestingNiFi");
+        runner.setProperty(PutEmail.FROM, "test@apache.org");
+        runner.setProperty(PutEmail.MESSAGE, "Message Body");
+        runner.setProperty(PutEmail.TO, "recipient@apache.org");
+        
+        ProcessSession session = runner.getProcessSessionFactory().createSession();
+        FlowFile ff = session.create();
+        ff = session.putAttribute(ff, "dynamicSocketFactory", "testingSocketFactory");
+        ProcessContext context = runner.getProcessContext();
+        
+        String xmailer = context.getProperty(PutEmail.HEADER_XMAILER).evaluateAttributeExpressions(ff).getValue();
+        assertEquals("X-Mailer Header", "TestingNiFi", xmailer);
+        
+        String socketFactory = context.getProperty(PutEmail.SMTP_SOCKET_FACTORY).evaluateAttributeExpressions(ff).getValue();
+        assertEquals("Socket Factory", "testingSocketFactory", socketFactory);
+        
+        final Map<String, String> attributes = new HashMap<>();
+        runner.enqueue("Some Text".getBytes(), attributes);
+
+        runner.run();
+
+        runner.assertQueueEmpty();
+        runner.assertAllFlowFilesTransferred(PutEmail.REL_FAILURE);
+    }
+    
 }


[13/21] incubator-nifi git commit: Merge branch 'NIFI-441d' of https://github.com/danbress/incubator-nifi into develop

Posted by ma...@apache.org.
Merge branch 'NIFI-441d' of https://github.com/danbress/incubator-nifi into develop


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

Branch: refs/heads/NIFI-250
Commit: 220ec94c092daf0821373b7f3d1bf91a22f096c6
Parents: b97396c 2c418ec
Author: Mark Payne <ma...@hotmail.com>
Authored: Mon Mar 23 14:50:57 2015 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Mon Mar 23 14:50:57 2015 -0400

----------------------------------------------------------------------
 .../html/HtmlDocumentationWriter.java           | 34 +++++++++++++++++---
 .../html/HtmlProcessorDocumentationWriter.java  |  4 +++
 .../src/main/webapp/css/component-usage.css     |  4 +++
 3 files changed, 37 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[02/21] incubator-nifi git commit: NIFI-441 Defaulting nifi version to 0.1.0-incubating-SNAPSHOT

Posted by ma...@apache.org.
NIFI-441 Defaulting nifi version to 0.1.0-incubating-SNAPSHOT


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

Branch: refs/heads/NIFI-250
Commit: efeba19cb6c72585ecaacbbb6662a274fab8f477
Parents: 511360c
Author: danbress <db...@onyxconsults.com>
Authored: Thu Mar 19 08:32:42 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Mon Mar 23 08:04:18 2015 -0400

----------------------------------------------------------------------
 .../src/main/resources/META-INF/maven/archetype-metadata.xml       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/efeba19c/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
----------------------------------------------------------------------
diff --git a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
index 085bd99..979916c 100644
--- a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -17,7 +17,7 @@
   <requiredProperties>
     <requiredProperty key="artifactBaseName" />
     <requiredProperty key="nifiVersion" >
-        <defaultValue>0.0.1-incubating-SNAPSHOT</defaultValue>
+        <defaultValue>0.1.0-incubating-SNAPSHOT</defaultValue>
     </requiredProperty>
 	<requiredProperty key="package">
 		<defaultValue>${groupId}.processors.${artifactBaseName}</defaultValue>


[21/21] incubator-nifi git commit: Merge branch 'develop' into NIFI-250

Posted by ma...@apache.org.
Merge branch 'develop' into NIFI-250

Conflicts:
	nifi/nifi-api/src/main/java/org/apache/nifi/components/ValidationContext.java
	nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java
	nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardValidationContext.java


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

Branch: refs/heads/NIFI-250
Commit: c61a2afbb8b0696b883c06dfd92abb3f3b111bb6
Parents: 8a830be a5e140f
Author: Mark Payne <ma...@hotmail.com>
Authored: Thu Mar 26 09:02:20 2015 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Thu Mar 26 09:02:20 2015 -0400

----------------------------------------------------------------------
 .../AbstractConfigurableComponent.java          |   5 +-
 .../nifi/components/ValidationContext.java      |  19 +++
 .../nifi/processor/util/StandardValidators.java |  94 +++++++++++-
 .../processor/util/TestStandardValidators.java  |  34 +++--
 .../META-INF/maven/archetype-metadata.xml       |   2 +-
 .../src/main/java/MyProcessor.java              |   8 +
 .../docs/__package__.MyProcessor/index.html     |  96 ------------
 .../apache/nifi/util/MockValidationContext.java |  26 ++++
 .../nifi/util/StandardProcessorTestRunner.java  |   4 +-
 .../html/HtmlDocumentationWriter.java           |  34 ++++-
 .../html/HtmlProcessorDocumentationWriter.java  |   4 +
 .../repository/FileSystemRepository.java        |  78 +++++-----
 .../processor/StandardValidationContext.java    |  23 ++-
 .../nifi/remote/StandardRootGroupPort.java      |  11 +-
 .../src/main/webapp/css/component-usage.css     |   4 +
 .../processors/kite/AbstractKiteProcessor.java  |  43 +++---
 .../nifi/processors/kite/ConvertCSVToAvro.java  |   4 +-
 .../nifi/processors/kite/ConvertJSONToAvro.java |   3 +-
 .../processors/kite/StoreInKiteDataset.java     |   3 +-
 .../nifi/processors/standard/ControlRate.java   |   2 +-
 .../processors/standard/EvaluateJsonPath.java   |  28 ++--
 .../processors/standard/HandleHttpResponse.java |   2 +-
 .../nifi/processors/standard/InvokeHTTP.java    |  31 ++--
 .../nifi/processors/standard/PostHTTP.java      |   1 +
 .../nifi/processors/standard/PutEmail.java      | 149 ++++++++++++++++---
 .../nifi/processors/standard/TestPutEmail.java  |  40 ++++-
 26 files changed, 501 insertions(+), 247 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c61a2afb/nifi/nifi-api/src/main/java/org/apache/nifi/components/ValidationContext.java
----------------------------------------------------------------------
diff --cc nifi/nifi-api/src/main/java/org/apache/nifi/components/ValidationContext.java
index 214fac9,b7b72c5..61b68a2
--- a/nifi/nifi-api/src/main/java/org/apache/nifi/components/ValidationContext.java
+++ b/nifi/nifi-api/src/main/java/org/apache/nifi/components/ValidationContext.java
@@@ -81,11 -81,21 +81,30 @@@ public interface ValidationContext 
      String getAnnotationData();
      
      /**
 +     * There are times when the framework needs to consider a component valid, even if it
 +     * references an invalid ControllerService. This method will return <code>false</code>
 +     * if the component is to be considered valid even if the given Controller Service is referenced
 +     * and is invalid.
 +     * @param service
 +     */
 +    boolean isValidationRequired(ControllerService service);
++    
++    /**
+      * Returns <code>true</code> if the given value contains a NiFi Expression Language expression,
+      * <code>false</code> if it does not
+      * 
+      * @param value
+      * @return
+      */
+     boolean isExpressionLanguagePresent(String value);
+     
+     /**
+      * Returns <code>true</code> if the property with the given name supports the NiFi Expression Language,
+      * <code>false</code> if the property does not support the Expression Language or is not a valid property
+      * name
+      * 
+      * @param propertyName
+      * @return
+      */
+     boolean isExpressionLanguageSupported(String propertyName);
  }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c61a2afb/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java
----------------------------------------------------------------------
diff --cc nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java
index bf6ed1d,c00386e..c9b1cda
--- a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java
+++ b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java
@@@ -92,18 -103,18 +103,33 @@@ public class MockValidationContext impl
      }
      
      @Override
 +    public String getControllerServiceName(final String serviceIdentifier) {
 +    	final ControllerServiceConfiguration configuration = context.getConfiguration(serviceIdentifier);
 +    	return configuration == null ? null : serviceIdentifier;
 +    }
 +    
 +    @Override
 +    public boolean isValidationRequired(final ControllerService service) {
 +        return true;
 +    }
 +
 +    @Override
 +    public boolean isControllerServiceEnabling(String serviceIdentifier) {
 +        return context.isControllerServiceEnabling(serviceIdentifier);
 +    }
++    
+     public boolean isExpressionLanguagePresent(final String value) {
+         if ( value == null ) {
+             return false;
+         }
+         
+         final List<Range> elRanges = Query.extractExpressionRanges(value);
+         return (elRanges != null && !elRanges.isEmpty());
+     }
+     
+     @Override
+     public boolean isExpressionLanguageSupported(final String propertyName) {
+         final Boolean supported = expressionLanguageSupported.get(propertyName);
+         return Boolean.TRUE.equals(supported);
+     }
  }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c61a2afb/nifi/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c61a2afb/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardValidationContext.java
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardValidationContext.java
index 57f13d2,99322be..c51cb9a
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardValidationContext.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardValidationContext.java
@@@ -18,8 -18,8 +18,9 @@@ package org.apache.nifi.processor
  
  import java.util.Collections;
  import java.util.HashMap;
+ import java.util.List;
  import java.util.Map;
 +import java.util.Set;
  
  import org.apache.nifi.attribute.expression.language.PreparedQuery;
  import org.apache.nifi.attribute.expression.language.Query;
@@@ -38,20 -39,15 +40,21 @@@ public class StandardValidationContext 
      private final ControllerServiceProvider controllerServiceProvider;
      private final Map<PropertyDescriptor, String> properties;
      private final Map<PropertyDescriptor, PreparedQuery> preparedQueries;
+     private final Map<String, Boolean> expressionLanguageSupported;
      private final String annotationData;
 +    private final Set<String> serviceIdentifiersToNotValidate;
  
      public StandardValidationContext(final ControllerServiceProvider controllerServiceProvider, final Map<PropertyDescriptor, String> properties, final String annotationData) {
 +        this(controllerServiceProvider, Collections.<String>emptySet(), properties, annotationData);
 +    }
 +    
 +    public StandardValidationContext(final ControllerServiceProvider controllerServiceProvider, final Set<String> serviceIdentifiersToNotValidate, final Map<PropertyDescriptor, String> properties, final String annotationData) {
          this.controllerServiceProvider = controllerServiceProvider;
          this.properties = new HashMap<>(properties);
          this.annotationData = annotationData;
 +        this.serviceIdentifiersToNotValidate = serviceIdentifiersToNotValidate;
  
-         preparedQueries = new HashMap<>();
+         preparedQueries = new HashMap<>(properties.size());
          for (final Map.Entry<PropertyDescriptor, String> entry : properties.entrySet()) {
              final PropertyDescriptor desc = entry.getKey();
              String value = entry.getValue();
@@@ -101,11 -101,20 +108,25 @@@
      public ControllerServiceLookup getControllerServiceLookup() {
          return controllerServiceProvider;
      }
 +
 +    @Override
 +    public boolean isValidationRequired(final ControllerService service) {
 +        return !serviceIdentifiersToNotValidate.contains(service.getIdentifier());
 +    }
      
+     @Override
+     public boolean isExpressionLanguagePresent(final String value) {
+         if ( value == null ) {
+             return false;
+         }
+         
+         final List<Range> elRanges = Query.extractExpressionRanges(value);
+         return (elRanges != null && !elRanges.isEmpty());
+     }
      
+     @Override
+     public boolean isExpressionLanguageSupported(final String propertyName) {
+         final Boolean supported = expressionLanguageSupported.get(propertyName);
+         return Boolean.TRUE.equals(supported);
+     }
  }


[05/21] incubator-nifi git commit: NIFI-441 incorporating changes from moving annotations

Posted by ma...@apache.org.
NIFI-441 incorporating changes from moving annotations


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

Branch: refs/heads/NIFI-250
Commit: 3359891c660020cf583a92e738f9ba1b75f21aae
Parents: 0f6fb7e
Author: danbress <db...@onyxconsults.com>
Authored: Mon Mar 23 08:34:41 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Mon Mar 23 08:34:41 2015 -0400

----------------------------------------------------------------------
 .../src/main/java/MyProcessor.java                           | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/3359891c/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/java/MyProcessor.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/java/MyProcessor.java b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/java/MyProcessor.java
index 8d9d261..7b70dca 100644
--- a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/java/MyProcessor.java
+++ b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/java/MyProcessor.java
@@ -20,14 +20,14 @@ import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.PropertyValue;
 import org.apache.nifi.flowfile.FlowFile;
 import org.apache.nifi.processor.*;
+import org.apache.nifi.annotation.behavior.ReadsAttribute;
+import org.apache.nifi.annotation.behavior.ReadsAttributes;
+import org.apache.nifi.annotation.behavior.WritesAttribute;
+import org.apache.nifi.annotation.behavior.WritesAttributes;
 import org.apache.nifi.annotation.lifecycle.OnScheduled;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
-import org.apache.nifi.annotation.documentation.ReadsAttribute;
-import org.apache.nifi.annotation.documentation.ReadsAttributes;
 import org.apache.nifi.annotation.documentation.SeeAlso;
 import org.apache.nifi.annotation.documentation.Tags;
-import org.apache.nifi.annotation.documentation.WritesAttribute;
-import org.apache.nifi.annotation.documentation.WritesAttributes;
 import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.processor.util.StandardValidators;
 


[11/21] incubator-nifi git commit: NIFI-434 adding additional ids to dynamic property tds

Posted by ma...@apache.org.
NIFI-434 adding additional ids to dynamic property tds


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

Branch: refs/heads/NIFI-250
Commit: 10f724753c6e819a11a295baba0d79e292617beb
Parents: 2f09e6e
Author: danbress <db...@onyxconsults.com>
Authored: Mon Mar 23 09:39:08 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Mon Mar 23 10:30:09 2015 -0400

----------------------------------------------------------------------
 .../apache/nifi/documentation/html/HtmlDocumentationWriter.java  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/10f72475/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java
index 0da5bed..34b1327 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java
@@ -384,8 +384,8 @@ public class HtmlDocumentationWriter implements DocumentationWriter {
             xmlStreamWriter.writeEndElement();
             for (final DynamicProperty dynamicProperty : dynamicProperties) {
                 xmlStreamWriter.writeStartElement("tr");    
-                writeSimpleElement(xmlStreamWriter, "td", dynamicProperty.name());
-                writeSimpleElement(xmlStreamWriter, "td", dynamicProperty.value());
+                writeSimpleElement(xmlStreamWriter, "td", dynamicProperty.name(), false, "name");
+                writeSimpleElement(xmlStreamWriter, "td", dynamicProperty.value(), false, "value");
                 xmlStreamWriter.writeStartElement("td");
                 xmlStreamWriter.writeCharacters(dynamicProperty.description());
                 if (dynamicProperty.supportsExpressionLanguage()) {


[14/21] incubator-nifi git commit: NIFI-430: Added isExpressionLanguageSupported and isExpressionLanguagePresent methods to ValidationContext

Posted by ma...@apache.org.
NIFI-430: Added isExpressionLanguageSupported and isExpressionLanguagePresent methods to ValidationContext


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

Branch: refs/heads/NIFI-250
Commit: 2429e0540fcce90bfd2ced450d4cd124cff3a6b4
Parents: 220ec94
Author: Mark Payne <ma...@hotmail.com>
Authored: Mon Mar 23 15:02:03 2015 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Mon Mar 23 15:02:03 2015 -0400

----------------------------------------------------------------------
 .../AbstractConfigurableComponent.java          |  5 +-
 .../nifi/components/ValidationContext.java      | 19 +++++
 .../nifi/processor/util/StandardValidators.java | 86 +++++++++++++++++++-
 .../processor/util/TestStandardValidators.java  | 34 ++++----
 .../apache/nifi/util/MockValidationContext.java | 27 ++++++
 .../processor/StandardValidationContext.java    | 25 +++++-
 6 files changed, 175 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/2429e054/nifi/nifi-api/src/main/java/org/apache/nifi/components/AbstractConfigurableComponent.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-api/src/main/java/org/apache/nifi/components/AbstractConfigurableComponent.java b/nifi/nifi-api/src/main/java/org/apache/nifi/components/AbstractConfigurableComponent.java
index f4bea5e..6736788 100644
--- a/nifi/nifi-api/src/main/java/org/apache/nifi/components/AbstractConfigurableComponent.java
+++ b/nifi/nifi-api/src/main/java/org/apache/nifi/components/AbstractConfigurableComponent.java
@@ -187,9 +187,8 @@ public abstract class AbstractConfigurableComponent implements ConfigurableCompo
     }
 
     public final List<PropertyDescriptor> getPropertyDescriptors() {
-        final List<PropertyDescriptor> descriptors = new ArrayList<>();
-        descriptors.addAll(getSupportedPropertyDescriptors());
-        return descriptors;
+        final List<PropertyDescriptor> supported = getSupportedPropertyDescriptors();
+        return supported == null ? Collections.<PropertyDescriptor>emptyList() :new ArrayList<>(supported);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/2429e054/nifi/nifi-api/src/main/java/org/apache/nifi/components/ValidationContext.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-api/src/main/java/org/apache/nifi/components/ValidationContext.java b/nifi/nifi-api/src/main/java/org/apache/nifi/components/ValidationContext.java
index e50f002..b7b72c5 100644
--- a/nifi/nifi-api/src/main/java/org/apache/nifi/components/ValidationContext.java
+++ b/nifi/nifi-api/src/main/java/org/apache/nifi/components/ValidationContext.java
@@ -79,4 +79,23 @@ public interface ValidationContext {
      * @return
      */
     String getAnnotationData();
+    
+    /**
+     * Returns <code>true</code> if the given value contains a NiFi Expression Language expression,
+     * <code>false</code> if it does not
+     * 
+     * @param value
+     * @return
+     */
+    boolean isExpressionLanguagePresent(String value);
+    
+    /**
+     * Returns <code>true</code> if the property with the given name supports the NiFi Expression Language,
+     * <code>false</code> if the property does not support the Expression Language or is not a valid property
+     * name
+     * 
+     * @param propertyName
+     * @return
+     */
+    boolean isExpressionLanguageSupported(String propertyName);
 }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/2429e054/nifi/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/StandardValidators.java b/nifi/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
index c9ae609..62fecf2 100644
--- a/nifi/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
+++ b/nifi/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
@@ -46,7 +46,10 @@ public class StandardValidators {
         public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
             final ValidationResult.Builder builder = new ValidationResult.Builder();
             builder.subject(subject).input(input);
-
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                return builder.valid(true).explanation("Contains Expression Language").build();
+            }
+            
             try {
                 FlowFile.KeyValidator.validateKey(input);
                 builder.valid(true);
@@ -63,7 +66,10 @@ public class StandardValidators {
         public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
             final ValidationResult.Builder builder = new ValidationResult.Builder();
             builder.subject("Property Name").input(subject);
-
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                return builder.valid(true).explanation("Contains Expression Language").build();
+            }
+            
             try {
                 FlowFile.KeyValidator.validateKey(subject);
                 builder.valid(true);
@@ -78,6 +84,10 @@ public class StandardValidators {
     public static final Validator POSITIVE_INTEGER_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String value, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value) ) {
+                return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build();
+            }
+            
             String reason = null;
             try {
                 final int intVal = Integer.parseInt(value);
@@ -96,6 +106,10 @@ public class StandardValidators {
     public static final Validator POSITIVE_LONG_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String value, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value) ) {
+                return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build();
+            }
+
             String reason = null;
             try {
                 final long longVal = Long.parseLong(value);
@@ -123,6 +137,10 @@ public class StandardValidators {
     public static final Validator BOOLEAN_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String value, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value) ) {
+                return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build();
+            }
+
             final boolean valid = "true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value);
             final String explanation = valid ? null : "Value must be 'true' or 'false'";
             return new ValidationResult.Builder().subject(subject).input(value).valid(valid).explanation(explanation).build();
@@ -132,6 +150,10 @@ public class StandardValidators {
     public static final Validator INTEGER_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String value, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value) ) {
+                return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build();
+            }
+
             String reason = null;
             try {
                 Integer.parseInt(value);
@@ -146,6 +168,10 @@ public class StandardValidators {
     public static final Validator LONG_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String value, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value) ) {
+                return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build();
+            }
+
             String reason = null;
             try {
                 Long.parseLong(value);
@@ -160,6 +186,10 @@ public class StandardValidators {
     public static final Validator NON_NEGATIVE_INTEGER_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String value, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value) ) {
+                return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build();
+            }
+
             String reason = null;
             try {
                 final int intVal = Integer.parseInt(value);
@@ -178,6 +208,10 @@ public class StandardValidators {
     public static final Validator CHARACTER_SET_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String value, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value) ) {
+                return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build();
+            }
+
             String reason = null;
             try {
                 if (!Charset.isSupported(value)) {
@@ -201,6 +235,10 @@ public class StandardValidators {
     public static final Validator URI_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").build();
+            }
+
             try {
                 new URI(input);
                 return new ValidationResult.Builder().subject(subject).input(input).explanation("Valid URI").valid(true).build();
@@ -215,6 +253,10 @@ public class StandardValidators {
     public static final Validator ATTRIBUTE_EXPRESSION_LANGUAGE_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").build();
+            }
+
             try {
                 context.newExpressionLanguageCompiler().compile(input);
                 return new ValidationResult.Builder().subject(subject).input(input).valid(true).build();
@@ -228,6 +270,10 @@ public class StandardValidators {
     public static final Validator TIME_PERIOD_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").build();
+            }
+
             if (input == null) {
                 return new ValidationResult.Builder().subject(subject).input(input).valid(false).explanation("Time Period cannot be null").build();
             }
@@ -242,6 +288,10 @@ public class StandardValidators {
     public static final Validator DATA_SIZE_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").build();
+            }
+
             if (input == null) {
                 return new ValidationResult.Builder().subject(subject).input(input).valid(false).explanation("Data Size cannot be null").build();
             }
@@ -268,6 +318,10 @@ public class StandardValidators {
         return new Validator() {
             @Override
             public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
+                if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                    return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").build();
+                }
+
                 try {
                     final String evaluatedInput = context.newPropertyValue(input).evaluateAttributeExpressions().getValue();
                     new URL(evaluatedInput);
@@ -292,6 +346,10 @@ public class StandardValidators {
 
             @Override
             public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
+                if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                    return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").build();
+                }
+
                 final ValidationResult vr = DATA_SIZE_VALIDATOR.validate(subject, input, context);
                 if(!vr.isValid()){
                     return vr;
@@ -313,6 +371,10 @@ public class StandardValidators {
         return new Validator() {
             @Override
             public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
+                if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                    return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").build();
+                }
+
                 final boolean matches = pattern.matcher(input).matches();
                 return new ValidationResult.Builder()
                         .input(input)
@@ -394,6 +456,10 @@ public class StandardValidators {
         return new Validator() {
             @Override
             public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
+                if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                    return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").build();
+                }
+
                 String reason = null;
                 try {
                     final long longVal = Long.parseLong(input);
@@ -436,6 +502,10 @@ public class StandardValidators {
 
         @Override
         public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").build();
+            }
+
             if (input == null) {
                 return new ValidationResult.Builder().subject(subject).input(input).valid(false).explanation("Time Period cannot be null").build();
             }
@@ -469,6 +539,10 @@ public class StandardValidators {
 
         @Override
         public ValidationResult validate(final String subject, final String value, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value) ) {
+                return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build();
+            }
+
             final String substituted;
             if (allowEL) {
                 try {
@@ -500,6 +574,10 @@ public class StandardValidators {
 
         @Override
         public ValidationResult validate(final String subject, final String value, final ValidationContext context) {
+            if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value) ) {
+                return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build();
+            }
+
             final String substituted;
             if (allowEL) {
                 try {
@@ -541,6 +619,10 @@ public class StandardValidators {
         return new Validator() {
             @Override
             public ValidationResult validate(final String subject, final String input, final ValidationContext context) {
+                if ( context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input) ) {
+                    return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").build();
+                }
+
                 final ControllerService svc = context.getControllerServiceLookup().getControllerService(input);
 
                 if (svc == null) {

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/2429e054/nifi/nifi-commons/nifi-processor-utilities/src/test/java/org/apache/nifi/processor/util/TestStandardValidators.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-processor-utilities/src/test/java/org/apache/nifi/processor/util/TestStandardValidators.java b/nifi/nifi-commons/nifi-processor-utilities/src/test/java/org/apache/nifi/processor/util/TestStandardValidators.java
index 70b8d21..a8f4bae 100644
--- a/nifi/nifi-commons/nifi-processor-utilities/src/test/java/org/apache/nifi/processor/util/TestStandardValidators.java
+++ b/nifi/nifi-commons/nifi-processor-utilities/src/test/java/org/apache/nifi/processor/util/TestStandardValidators.java
@@ -21,10 +21,11 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.concurrent.TimeUnit;
 
+import org.apache.nifi.components.ValidationContext;
 import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.components.Validator;
-
 import org.junit.Test;
+import org.mockito.Mockito;
 
 public class TestStandardValidators {
 
@@ -33,22 +34,24 @@ public class TestStandardValidators {
         Validator val = StandardValidators.createTimePeriodValidator(1L, TimeUnit.SECONDS, Long.MAX_VALUE, TimeUnit.NANOSECONDS);
         ValidationResult vr;
 
-        vr = val.validate("TimePeriodTest", "0 sense made", null);
+        final ValidationContext validationContext = Mockito.mock(ValidationContext.class);
+        
+        vr = val.validate("TimePeriodTest", "0 sense made", validationContext);
         assertFalse(vr.isValid());
 
-        vr = val.validate("TimePeriodTest", null, null);
+        vr = val.validate("TimePeriodTest", null, validationContext);
         assertFalse(vr.isValid());
 
-        vr = val.validate("TimePeriodTest", "0 secs", null);
+        vr = val.validate("TimePeriodTest", "0 secs", validationContext);
         assertFalse(vr.isValid());
 
-        vr = val.validate("TimePeriodTest", "999 millis", null);
+        vr = val.validate("TimePeriodTest", "999 millis", validationContext);
         assertFalse(vr.isValid());
 
-        vr = val.validate("TimePeriodTest", "999999999 nanos", null);
+        vr = val.validate("TimePeriodTest", "999999999 nanos", validationContext);
         assertFalse(vr.isValid());
 
-        vr = val.validate("TimePeriodTest", "1 sec", null);
+        vr = val.validate("TimePeriodTest", "1 sec", validationContext);
         assertTrue(vr.isValid());
     }
     
@@ -57,28 +60,29 @@ public class TestStandardValidators {
         Validator val = StandardValidators.createDataSizeBoundsValidator(100, 1000);
         ValidationResult vr; 
         
-        vr = val.validate("DataSizeBounds", "5 GB", null);
+        final ValidationContext validationContext = Mockito.mock(ValidationContext.class);
+        vr = val.validate("DataSizeBounds", "5 GB", validationContext);
         assertFalse(vr.isValid());
         
-        vr = val.validate("DataSizeBounds", "0 B", null);
+        vr = val.validate("DataSizeBounds", "0 B", validationContext);
         assertFalse(vr.isValid());
 
-        vr = val.validate("DataSizeBounds", "99 B", null);
+        vr = val.validate("DataSizeBounds", "99 B", validationContext);
         assertFalse(vr.isValid());
         
-        vr = val.validate("DataSizeBounds", "100 B", null);
+        vr = val.validate("DataSizeBounds", "100 B", validationContext);
         assertTrue(vr.isValid());
 
-        vr = val.validate("DataSizeBounds", "999 B", null);
+        vr = val.validate("DataSizeBounds", "999 B", validationContext);
         assertTrue(vr.isValid());
 
-        vr = val.validate("DataSizeBounds", "1000 B", null);
+        vr = val.validate("DataSizeBounds", "1000 B", validationContext);
         assertTrue(vr.isValid());
         
-        vr = val.validate("DataSizeBounds", "1001 B", null);
+        vr = val.validate("DataSizeBounds", "1001 B", validationContext);
         assertFalse(vr.isValid());
         
-        vr = val.validate("DataSizeBounds", "water", null);
+        vr = val.validate("DataSizeBounds", "water", validationContext);
         assertFalse(vr.isValid());
         
     }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/2429e054/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java
index fd0b6cd..c00386e 100644
--- a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java
+++ b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java
@@ -16,9 +16,13 @@
  */
 package org.apache.nifi.util;
 
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.nifi.attribute.expression.language.Query;
+import org.apache.nifi.attribute.expression.language.Query.Range;
 import org.apache.nifi.attribute.expression.language.StandardExpressionLanguageCompiler;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.PropertyValue;
@@ -30,9 +34,16 @@ import org.apache.nifi.expression.ExpressionLanguageCompiler;
 public class MockValidationContext implements ValidationContext, ControllerServiceLookup {
 
     private final MockProcessContext context;
+    private final Map<String, Boolean> expressionLanguageSupported;
 
     public MockValidationContext(final MockProcessContext processContext) {
         this.context = processContext;
+        
+        final Map<PropertyDescriptor, String> properties = processContext.getProperties();
+        expressionLanguageSupported = new HashMap<>(properties.size());
+        for ( final PropertyDescriptor descriptor : properties.keySet() ) {
+            expressionLanguageSupported.put(descriptor.getName(), descriptor.isExpressionLanguageSupported());
+        }
     }
 
     @Override
@@ -90,4 +101,20 @@ public class MockValidationContext implements ValidationContext, ControllerServi
     public boolean isControllerServiceEnabled(final ControllerService service) {
         return context.isControllerServiceEnabled(service);
     }
+    
+    @Override
+    public boolean isExpressionLanguagePresent(final String value) {
+        if ( value == null ) {
+            return false;
+        }
+        
+        final List<Range> elRanges = Query.extractExpressionRanges(value);
+        return (elRanges != null && !elRanges.isEmpty());
+    }
+    
+    @Override
+    public boolean isExpressionLanguageSupported(final String propertyName) {
+        final Boolean supported = expressionLanguageSupported.get(propertyName);
+        return Boolean.TRUE.equals(supported);
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/2429e054/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardValidationContext.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardValidationContext.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardValidationContext.java
index b216572..99322be 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardValidationContext.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardValidationContext.java
@@ -18,10 +18,12 @@ package org.apache.nifi.processor;
 
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.nifi.attribute.expression.language.PreparedQuery;
 import org.apache.nifi.attribute.expression.language.Query;
+import org.apache.nifi.attribute.expression.language.Query.Range;
 import org.apache.nifi.attribute.expression.language.StandardExpressionLanguageCompiler;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.PropertyValue;
@@ -37,6 +39,7 @@ public class StandardValidationContext implements ValidationContext {
     private final ControllerServiceProvider controllerServiceProvider;
     private final Map<PropertyDescriptor, String> properties;
     private final Map<PropertyDescriptor, PreparedQuery> preparedQueries;
+    private final Map<String, Boolean> expressionLanguageSupported;
     private final String annotationData;
 
     public StandardValidationContext(final ControllerServiceProvider controllerServiceProvider, final Map<PropertyDescriptor, String> properties, final String annotationData) {
@@ -44,7 +47,7 @@ public class StandardValidationContext implements ValidationContext {
         this.properties = new HashMap<>(properties);
         this.annotationData = annotationData;
 
-        preparedQueries = new HashMap<>();
+        preparedQueries = new HashMap<>(properties.size());
         for (final Map.Entry<PropertyDescriptor, String> entry : properties.entrySet()) {
             final PropertyDescriptor desc = entry.getKey();
             String value = entry.getValue();
@@ -56,6 +59,10 @@ public class StandardValidationContext implements ValidationContext {
             preparedQueries.put(desc, pq);
         }
 
+        expressionLanguageSupported = new HashMap<>(properties.size());
+        for ( final PropertyDescriptor descriptor : properties.keySet() ) {
+            expressionLanguageSupported.put(descriptor.getName(), descriptor.isExpressionLanguageSupported());
+        }
     }
 
     @Override
@@ -94,4 +101,20 @@ public class StandardValidationContext implements ValidationContext {
     public ControllerServiceLookup getControllerServiceLookup() {
         return controllerServiceProvider;
     }
+    
+    @Override
+    public boolean isExpressionLanguagePresent(final String value) {
+        if ( value == null ) {
+            return false;
+        }
+        
+        final List<Range> elRanges = Query.extractExpressionRanges(value);
+        return (elRanges != null && !elRanges.isEmpty());
+    }
+    
+    @Override
+    public boolean isExpressionLanguageSupported(final String propertyName) {
+        final Boolean supported = expressionLanguageSupported.get(propertyName);
+        return Boolean.TRUE.equals(supported);
+    }
 }


[17/21] incubator-nifi git commit: NIFI-450: Catch Throwable from all implementations of Runnable in the FileSystemRepository; these are expected to always be running, so if anything odd like an OutOfMemoryError occurs, this needs to be caught rather tha

Posted by ma...@apache.org.
NIFI-450: Catch Throwable from all implementations of Runnable in the FileSystemRepository; these are expected to always be running, so if anything odd like an OutOfMemoryError occurs, this needs to be caught rather than allowing the thread to die


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

Branch: refs/heads/NIFI-250
Commit: 54f3476a4cc975f52d543a53f1f9aec97ba3b858
Parents: d640804
Author: Mark Payne <ma...@hotmail.com>
Authored: Mon Mar 23 15:19:18 2015 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Mon Mar 23 15:19:18 2015 -0400

----------------------------------------------------------------------
 .../repository/FileSystemRepository.java        | 78 ++++++++++----------
 1 file changed, 41 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/54f3476a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java
index a3e24c4..2c3751b 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java
@@ -791,34 +791,38 @@ public class FileSystemRepository implements ContentRepository {
 
         @Override
         public void run() {
-            // Get all of the Destructable Claims and bin them based on their Container. We do this
-            // because the Container generally maps to a physical partition on the disk, so we want a few
-            // different threads hitting the different partitions but don't want multiple threads hitting
-            // the same partition.
-            final List<ContentClaim> toDestroy = new ArrayList<>();
-            while (true) {
-                toDestroy.clear();
-                contentClaimManager.drainDestructableClaims(toDestroy, 10000);
-                if (toDestroy.isEmpty()) {
-                    return;
-                }
-
-                for (final ContentClaim claim : toDestroy) {
-                    final String container = claim.getContainer();
-                    final BlockingQueue<ContentClaim> claimQueue = reclaimable.get(container);
-
-                    try {
-                        while (true) {
-                            if (claimQueue.offer(claim, 10, TimeUnit.MINUTES)) {
-                                break;
-                            } else {
-                                LOG.warn("Failed to clean up {} because old claims aren't being cleaned up fast enough. This Content Claim will remain in the Content Repository until NiFi is restarted, at which point it will be cleaned up", claim);
+            try {
+                // Get all of the Destructable Claims and bin them based on their Container. We do this
+                // because the Container generally maps to a physical partition on the disk, so we want a few
+                // different threads hitting the different partitions but don't want multiple threads hitting
+                // the same partition.
+                final List<ContentClaim> toDestroy = new ArrayList<>();
+                while (true) {
+                    toDestroy.clear();
+                    contentClaimManager.drainDestructableClaims(toDestroy, 10000);
+                    if (toDestroy.isEmpty()) {
+                        return;
+                    }
+    
+                    for (final ContentClaim claim : toDestroy) {
+                        final String container = claim.getContainer();
+                        final BlockingQueue<ContentClaim> claimQueue = reclaimable.get(container);
+    
+                        try {
+                            while (true) {
+                                if (claimQueue.offer(claim, 10, TimeUnit.MINUTES)) {
+                                    break;
+                                } else {
+                                    LOG.warn("Failed to clean up {} because old claims aren't being cleaned up fast enough. This Content Claim will remain in the Content Repository until NiFi is restarted, at which point it will be cleaned up", claim);
+                                }
                             }
+                        } catch (final InterruptedException ie) {
+                            LOG.warn("Failed to clean up {} because thread was interrupted", claim);
                         }
-                    } catch (final InterruptedException ie) {
-                        LOG.warn("Failed to clean up {} because thread was interrupted", claim);
                     }
                 }
+            } catch (final Throwable t) {
+                LOG.error("Failed to cleanup content claims due to {}", t);
             }
         }
     }
@@ -1198,23 +1202,23 @@ public class FileSystemRepository implements ContentRepository {
 
         @Override
         public void run() {
-            if (oldestArchiveDate.get() > (System.currentTimeMillis() - maxArchiveMillis)) {
-                final Long minRequiredSpace = minUsableContainerBytesForArchive.get(containerName);
-                if (minRequiredSpace == null) {
-                    return;
-                }
-
-                try {
-                    final long usableSpace = getContainerUsableSpace(containerName);
-                    if (usableSpace > minRequiredSpace) {
+            try {
+                if (oldestArchiveDate.get() > (System.currentTimeMillis() - maxArchiveMillis)) {
+                    final Long minRequiredSpace = minUsableContainerBytesForArchive.get(containerName);
+                    if (minRequiredSpace == null) {
                         return;
                     }
-                } catch (final Exception e) {
-                    LOG.error("Failed to determine space available in container {}; will attempt to cleanup archive", containerName);
+    
+                    try {
+                        final long usableSpace = getContainerUsableSpace(containerName);
+                        if (usableSpace > minRequiredSpace) {
+                            return;
+                        }
+                    } catch (final Exception e) {
+                        LOG.error("Failed to determine space available in container {}; will attempt to cleanup archive", containerName);
+                    }
                 }
-            }
 
-            try {
                 Thread.currentThread().setName("Cleanup Archive for " + containerName);
                 final long oldestContainerArchive;
 


[20/21] incubator-nifi git commit: NIFI-460 deprecating StandardValidators.createControllerServiceExistsValidator

Posted by ma...@apache.org.
NIFI-460 deprecating StandardValidators.createControllerServiceExistsValidator


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

Branch: refs/heads/NIFI-250
Commit: a5e140f10705e119c6aa7d52be03f01b94b75709
Parents: 06ee129
Author: danbress <db...@onyxconsults.com>
Authored: Tue Mar 24 14:18:56 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Tue Mar 24 14:18:56 2015 -0400

----------------------------------------------------------------------
 .../org/apache/nifi/processor/util/StandardValidators.java   | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/a5e140f1/nifi/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/StandardValidators.java b/nifi/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
index 62fecf2..a22e7bb 100644
--- a/nifi/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
+++ b/nifi/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
@@ -615,6 +615,14 @@ public class StandardValidators {
         }
     }
 
+    /**
+     * Creates a validator based on existence of a {@link ControllerService}.
+     * 
+     * @param serviceClass the controller service API your {@link ConfigurableComponent} depends on
+     * @return a Validator
+     * @deprecated As of release 0.1.0-incubating, replaced by {@link org.apache.nifi.components.PropertyDescriptor.Builder#identifiesControllerService(Class)}
+     */
+    @Deprecated
     public static Validator createControllerServiceExistsValidator(final Class<? extends ControllerService> serviceClass) {
         return new Validator() {
             @Override


[04/21] incubator-nifi git commit: NIFI-441 - Adding SeeAlso, ReadsAttributes and WritesAttributes

Posted by ma...@apache.org.
NIFI-441 - Adding SeeAlso, ReadsAttributes and WritesAttributes


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

Branch: refs/heads/NIFI-250
Commit: f63e09b9b8480d3bbe78beee4b12cd5cb3ed8979
Parents: efeba19
Author: danbress <db...@onyxconsults.com>
Authored: Thu Mar 19 08:37:27 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Mon Mar 23 08:04:19 2015 -0400

----------------------------------------------------------------------
 .../src/main/java/MyProcessor.java                           | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f63e09b9/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/java/MyProcessor.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/java/MyProcessor.java b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/java/MyProcessor.java
index 7d29b5e..8d9d261 100644
--- a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/java/MyProcessor.java
+++ b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/java/MyProcessor.java
@@ -22,7 +22,12 @@ import org.apache.nifi.flowfile.FlowFile;
 import org.apache.nifi.processor.*;
 import org.apache.nifi.annotation.lifecycle.OnScheduled;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
+import org.apache.nifi.annotation.documentation.ReadsAttribute;
+import org.apache.nifi.annotation.documentation.ReadsAttributes;
+import org.apache.nifi.annotation.documentation.SeeAlso;
 import org.apache.nifi.annotation.documentation.Tags;
+import org.apache.nifi.annotation.documentation.WritesAttribute;
+import org.apache.nifi.annotation.documentation.WritesAttributes;
 import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.processor.util.StandardValidators;
 
@@ -30,6 +35,9 @@ import java.util.*;
 
 @Tags({"example"})
 @CapabilityDescription("Provide a description")
+@SeeAlso({})
+@ReadsAttributes({@ReadsAttribute(attribute="", description="")})
+@WritesAttributes({@WritesAttribute(attribute="", description="")})
 public class MyProcessor extends AbstractProcessor {
 
     public static final PropertyDescriptor MY_PROPERTY = new PropertyDescriptor


[10/21] incubator-nifi git commit: NIFI-434 adjusting CSS to not break on spaces for the first three columns of a property table

Posted by ma...@apache.org.
NIFI-434 adjusting CSS to not break on spaces
for the first three columns of a property table


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

Branch: refs/heads/NIFI-250
Commit: 2f09e6ec5a1b1b4f652d46a804962a048adaceb9
Parents: 0c5abce
Author: danbress <db...@onyxconsults.com>
Authored: Mon Mar 23 09:14:29 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Mon Mar 23 10:29:56 2015 -0400

----------------------------------------------------------------------
 .../nifi-web-docs/src/main/webapp/css/component-usage.css        | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/2f09e6ec/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css
index 45c1e26..6aea18b 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css
@@ -113,6 +113,10 @@ table tr:last-child td:last-child {
 	border-bottom-right-radius:3px;
 }
 
+td#allowable-values, td#default-value, td#name {
+	white-space:nowrap;
+}
+
 /* links */
 
 a, a:link, a:visited {


[19/21] incubator-nifi git commit: NIFI-460 using identifiesControllerService

Posted by ma...@apache.org.
NIFI-460 using identifiesControllerService


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

Branch: refs/heads/NIFI-250
Commit: 06ee1291c2e4a9fbfc1d79d19e426ffff9ade232
Parents: a7b826a
Author: danbress <db...@onyxconsults.com>
Authored: Tue Mar 24 11:56:02 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Tue Mar 24 11:56:02 2015 -0400

----------------------------------------------------------------------
 .../nifi/processors/standard/InvokeHTTP.java    | 29 +++++++-------------
 1 file changed, 10 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/06ee1291/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
index 08384d9..c8345d2 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
@@ -85,19 +85,10 @@ public final class InvokeHTTP extends AbstractProcessor {
     //-- properties --//
     @Override
     protected List<PropertyDescriptor> getSupportedPropertyDescriptors() {
-        Set<String> contextIdentifiers = getControllerServiceLookup().getControllerServiceIdentifiers(SSLContextService.class);
 
-        PropertyDescriptor contextServiceSelector = new PropertyDescriptor.Builder()
-                .fromPropertyDescriptor(Config.PROP_SSL_CONTEXT_SERVICE)
-                .allowableValues(contextIdentifiers)
-                .build();
-
-        List<PropertyDescriptor> list = new ArrayList<>(Config.PROPERTIES);
-        list.add(2, contextServiceSelector);
-
-        return Collections.unmodifiableList(list);
+        return Config.PROPERTIES;
     }
-
+    
     @Override
     protected PropertyDescriptor getSupportedDynamicPropertyDescriptor(String propertyDescriptorName) {
         if (Config.PROP_TRUSTED_HOSTNAME.getName().equalsIgnoreCase(propertyDescriptorName)) {
@@ -248,9 +239,17 @@ public final class InvokeHTTP extends AbstractProcessor {
                 .addValidator(StandardValidators.REGULAR_EXPRESSION_VALIDATOR)
                 .build();
 
+        PropertyDescriptor PROP_SSL_CONTEXT_SERVICE = new PropertyDescriptor.Builder()
+                .name("SSL Context Service")
+                .description("The SSL Context Service used to provide client certificate information for TLS/SSL (https) connections.")
+                .required(false)
+                .identifiesControllerService(SSLContextService.class)
+                .build();
+        
         List<PropertyDescriptor> PROPERTIES = Collections.unmodifiableList(Arrays.asList(
                 PROP_METHOD,
                 PROP_URL,
+                PROP_SSL_CONTEXT_SERVICE,
                 PROP_CONNECT_TIMEOUT,
                 PROP_READ_TIMEOUT,
                 PROP_DATE_HEADER,
@@ -258,14 +257,6 @@ public final class InvokeHTTP extends AbstractProcessor {
                 PROP_ATTRIBUTES_TO_SEND
         ));
 
-        // The allowableValues of the SSL Context Service property is dynamically populated at run time.
-        PropertyDescriptor PROP_SSL_CONTEXT_SERVICE = new PropertyDescriptor.Builder()
-                .name("SSL Context Service")
-                .description("The SSL Context Service used to provide client certificate information for TLS/SSL (https) connections.")
-                .required(false)
-                .addValidator(StandardValidators.createControllerServiceExistsValidator(SSLContextService.class))
-                .build();
-
         // property to allow the hostname verifier to be overridden
         // this is a "hidden" property - it's configured using a dynamic user property
         PropertyDescriptor PROP_TRUSTED_HOSTNAME = new PropertyDescriptor.Builder()


[06/21] incubator-nifi git commit: NIFI-441 removing additionalDetails.html

Posted by ma...@apache.org.
NIFI-441 removing additionalDetails.html


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

Branch: refs/heads/NIFI-250
Commit: e78aeddb6937d5ed54f73d1f6dcf11547181e374
Parents: 3359891
Author: danbress <db...@onyxconsults.com>
Authored: Mon Mar 23 09:59:50 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Mon Mar 23 09:59:50 2015 -0400

----------------------------------------------------------------------
 .../additionalDetails.html                      | 28 --------------------
 1 file changed, 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/e78aeddb/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html
----------------------------------------------------------------------
diff --git a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html
deleted file mode 100644
index 5337543..0000000
--- a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-    <!--
-      Licensed to the Apache Software Foundation (ASF) under one or more
-      contributor license agreements.  See the NOTICE file distributed with
-      this work for additional information regarding copyright ownership.
-      The ASF licenses this file to You 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.
-    -->
-    <head>
-        <meta charset="utf-8"/>
-        <title>MyProcessor</title>
-        <link rel="stylesheet" href="../../css/component-usage.css" type="text/css"/>
-    </head>
-
-    <body>
-        <p>This is a place to provide additional text, images and references that best describe how to use your processor.  If this level of detail is not necessary, you can remove this file.
-        </p>
-
-    </body>
-</html>


[18/21] incubator-nifi git commit: NIFI-268: If processor is using deprecated annotations, should fail unit test

Posted by ma...@apache.org.
NIFI-268: If processor is using deprecated annotations, should fail unit test


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

Branch: refs/heads/NIFI-250
Commit: a7b826ae20588705868749390187852f2c05e0ff
Parents: 54f3476
Author: Mark Payne <ma...@hotmail.com>
Authored: Mon Mar 23 15:39:53 2015 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Mon Mar 23 15:39:53 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/nifi/util/StandardProcessorTestRunner.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/a7b826ae/nifi/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
index f3fd3e8..8d691dd 100644
--- a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
+++ b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
@@ -137,14 +137,14 @@ public class StandardProcessorTestRunner implements TestRunner {
     private static void detectDeprecatedAnnotations(final Processor processor) {
         for ( final Class<? extends Annotation> annotationClass : deprecatedTypeAnnotations ) {
             if ( processor.getClass().isAnnotationPresent(annotationClass) ) {
-                logger.warn("Processor is using deprecated Annotation " + annotationClass.getCanonicalName());
+                Assert.fail("Processor is using deprecated Annotation " + annotationClass.getCanonicalName());
             }
         }
         
         for ( final Class<? extends Annotation> annotationClass : deprecatedMethodAnnotations ) {
             for ( final Method method : processor.getClass().getMethods() ) {
                 if ( method.isAnnotationPresent(annotationClass) ) {
-                    logger.warn("Processor is using deprecated Annotation " + annotationClass.getCanonicalName() + " for method " + method);
+                    Assert.fail("Processor is using deprecated Annotation " + annotationClass.getCanonicalName() + " for method " + method);
                 }
             }
         }


[15/21] incubator-nifi git commit: NIFI-431: Updated validators to use new isExpressionLanguagePresent and isExpressionLanguageSupported methods of ValidationContext

Posted by ma...@apache.org.
NIFI-431: Updated validators to use new isExpressionLanguagePresent and isExpressionLanguageSupported methods of ValidationContext


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

Branch: refs/heads/NIFI-250
Commit: 12fa9e79f767cabc01f6779bc5a3295fa3c595f3
Parents: 2429e05
Author: Mark Payne <ma...@hotmail.com>
Authored: Mon Mar 23 15:02:42 2015 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Mon Mar 23 15:02:42 2015 -0400

----------------------------------------------------------------------
 .../processors/kite/AbstractKiteProcessor.java  | 43 +++++++++++---------
 .../nifi/processors/kite/ConvertCSVToAvro.java  |  4 +-
 .../nifi/processors/kite/ConvertJSONToAvro.java |  3 +-
 .../processors/kite/StoreInKiteDataset.java     |  3 +-
 .../nifi/processors/standard/ControlRate.java   |  2 +-
 .../processors/standard/EvaluateJsonPath.java   | 28 ++++++++-----
 .../processors/standard/HandleHttpResponse.java |  2 +-
 .../nifi/processors/standard/InvokeHTTP.java    |  2 +-
 .../nifi/processors/standard/PostHTTP.java      |  1 +
 9 files changed, 47 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/12fa9e79/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/AbstractKiteProcessor.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/AbstractKiteProcessor.java b/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/AbstractKiteProcessor.java
index 2113854..56418f4 100644
--- a/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/AbstractKiteProcessor.java
+++ b/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/AbstractKiteProcessor.java
@@ -78,20 +78,24 @@ abstract class AbstractKiteProcessor extends AbstractProcessor {
 
     protected static final Validator RECOGNIZED_URI = new Validator() {
         @Override
-        public ValidationResult validate(String subject, String uri,
-                ValidationContext context) {
+        public ValidationResult validate(String subject, String uri, ValidationContext context) {
             String message = "not set";
             boolean isValid = true;
-            if (uri == null || uri.isEmpty()) {
+            
+            if (uri.trim().isEmpty()) {
                 isValid = false;
-            } else if (!uri.contains("$")) {
-                try {
-                    new URIBuilder(URI.create(uri)).build();
-                } catch (RuntimeException e) {
-                    message = e.getMessage();
-                    isValid = false;
+            } else {
+                final boolean elPresent = context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(uri);
+                if (!elPresent) {
+                    try {
+                        new URIBuilder(URI.create(uri)).build();
+                    } catch (RuntimeException e) {
+                        message = e.getMessage();
+                        isValid = false;
+                    }
                 }
             }
+            
             return new ValidationResult.Builder()
                     .subject(subject)
                     .input(uri)
@@ -157,16 +161,16 @@ abstract class AbstractKiteProcessor extends AbstractProcessor {
     protected static final Validator SCHEMA_VALIDATOR = new Validator() {
         @Override
         public ValidationResult validate(String subject, String uri, ValidationContext context) {
-            Configuration conf = getConfiguration(
-                    context.getProperty(CONF_XML_FILES).getValue());
-
+            Configuration conf = getConfiguration(context.getProperty(CONF_XML_FILES).getValue());
             String error = null;
-            if (!uri.contains("$")) {
-              try {
-                getSchema(uri, conf);
-              } catch (SchemaNotFoundException e) {
-                error = e.getMessage();
-              }
+            
+            final boolean elPresent = context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(uri);
+            if (!elPresent) {
+                try {
+                    getSchema(uri, conf);
+                  } catch (SchemaNotFoundException e) {
+                    error = e.getMessage();
+                  }
             }
             return new ValidationResult.Builder()
                     .subject(subject)
@@ -177,8 +181,7 @@ abstract class AbstractKiteProcessor extends AbstractProcessor {
         }
     };
 
-    protected static final List<PropertyDescriptor> ABSTRACT_KITE_PROPS
-            = ImmutableList.<PropertyDescriptor>builder()
+    protected static final List<PropertyDescriptor> ABSTRACT_KITE_PROPS = ImmutableList.<PropertyDescriptor>builder()
             .add(CONF_XML_FILES)
             .build();
 

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/12fa9e79/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/ConvertCSVToAvro.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/ConvertCSVToAvro.java b/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/ConvertCSVToAvro.java
index be8c416..c6f58c7 100644
--- a/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/ConvertCSVToAvro.java
+++ b/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/ConvertCSVToAvro.java
@@ -88,8 +88,7 @@ public class ConvertCSVToAvro extends AbstractKiteProcessor {
   static final PropertyDescriptor SCHEMA =
       new PropertyDescriptor.Builder()
           .name("Record schema")
-          .description(
-              "Outgoing Avro schema for each record created from a CSV row")
+          .description("Outgoing Avro schema for each record created from a CSV row")
           .addValidator(SCHEMA_VALIDATOR)
           .expressionLanguageSupported(true)
           .required(true)
@@ -253,7 +252,6 @@ public class ConvertCSVToAvro extends AbstractKiteProcessor {
     } catch (ProcessException | DatasetIOException e) {
       getLogger().error("Failed reading or writing", e);
       session.transfer(flowFile, FAILURE);
-
     } catch (DatasetException e) {
       getLogger().error("Failed to read FlowFile", e);
       session.transfer(flowFile, FAILURE);

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/12fa9e79/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/ConvertJSONToAvro.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/ConvertJSONToAvro.java b/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/ConvertJSONToAvro.java
index 7e40f14..7a35e31 100644
--- a/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/ConvertJSONToAvro.java
+++ b/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/ConvertJSONToAvro.java
@@ -65,8 +65,7 @@ public class ConvertJSONToAvro extends AbstractKiteProcessor {
     static final PropertyDescriptor SCHEMA
             = new PropertyDescriptor.Builder()
             .name("Record schema")
-            .description(
-                    "Outgoing Avro schema for each record created from a JSON object")
+            .description("Outgoing Avro schema for each record created from a JSON object")
             .addValidator(SCHEMA_VALIDATOR)
             .expressionLanguageSupported(true)
             .required(true)

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/12fa9e79/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/StoreInKiteDataset.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/StoreInKiteDataset.java b/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/StoreInKiteDataset.java
index f65e0bc..5586de1 100644
--- a/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/StoreInKiteDataset.java
+++ b/nifi/nifi-nar-bundles/nifi-kite-bundle/nifi-kite-processors/src/main/java/org/apache/nifi/processors/kite/StoreInKiteDataset.java
@@ -68,8 +68,7 @@ public class StoreInKiteDataset extends AbstractKiteProcessor {
   public static final PropertyDescriptor KITE_DATASET_URI =
       new PropertyDescriptor.Builder()
           .name("Target dataset URI")
-          .description(
-              "URI that identifies a Kite dataset where data will be stored")
+          .description("URI that identifies a Kite dataset where data will be stored")
           .addValidator(RECOGNIZED_URI)
           .expressionLanguageSupported(true)
           .required(true)

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/12fa9e79/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ControlRate.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ControlRate.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ControlRate.java
index 2c1a864..83febb5 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ControlRate.java
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ControlRate.java
@@ -155,7 +155,7 @@ public class ControlRate extends AbstractProcessor {
                 break;
         }
 
-        final ValidationResult rateResult = rateValidator.validate("Maximum Rate", context.getProperty(MAX_RATE).getValue(), null);
+        final ValidationResult rateResult = rateValidator.validate("Maximum Rate", context.getProperty(MAX_RATE).getValue(), context);
         if (!rateResult.isValid()) {
             validationResults.add(rateResult);
         }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/12fa9e79/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateJsonPath.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateJsonPath.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateJsonPath.java
index e32eb12..2634da2 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateJsonPath.java
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateJsonPath.java
@@ -16,10 +16,19 @@
  */
 package org.apache.nifi.processors.standard;
 
-import com.jayway.jsonpath.DocumentContext;
-import com.jayway.jsonpath.InvalidJsonException;
-import com.jayway.jsonpath.JsonPath;
-import com.jayway.jsonpath.PathNotFoundException;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.nifi.annotation.behavior.DynamicProperty;
@@ -27,7 +36,6 @@ 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.OnRemoved;
 import org.apache.nifi.components.PropertyDescriptor;
@@ -44,12 +52,10 @@ import org.apache.nifi.processor.io.OutputStreamCallback;
 import org.apache.nifi.stream.io.BufferedOutputStream;
 import org.apache.nifi.util.ObjectHolder;
 
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
+import com.jayway.jsonpath.DocumentContext;
+import com.jayway.jsonpath.InvalidJsonException;
+import com.jayway.jsonpath.JsonPath;
+import com.jayway.jsonpath.PathNotFoundException;
 
 @EventDriven
 @SideEffectFree

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/12fa9e79/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/HandleHttpResponse.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/HandleHttpResponse.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/HandleHttpResponse.java
index b50ce3b..bfe53ef 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/HandleHttpResponse.java
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/HandleHttpResponse.java
@@ -54,7 +54,7 @@ public class HandleHttpResponse extends AbstractProcessor {
         .name("HTTP Status Code")
         .description("The HTTP Status Code to use when responding to the HTTP Request. See Section 10 of RFC 2616 for more information.")
         .required(true)
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+        .addValidator(StandardValidators.NON_NEGATIVE_INTEGER_VALIDATOR)
         .expressionLanguageSupported(true)
         .build();
     public static final PropertyDescriptor HTTP_CONTEXT_MAP = new PropertyDescriptor.Builder()

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/12fa9e79/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
index 63ec0bb..08384d9 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
@@ -203,7 +203,7 @@ public final class InvokeHTTP extends AbstractProcessor {
                 .description("Remote URL which will be connected to, including scheme, host, port, path.")
                 .required(true)
                 .expressionLanguageSupported(true)
-                .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+                .addValidator(StandardValidators.URL_VALIDATOR)
                 .build();
 
         PropertyDescriptor PROP_CONNECT_TIMEOUT = new PropertyDescriptor.Builder()

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/12fa9e79/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java
index 5f10772..d67ed09 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java
@@ -146,6 +146,7 @@ public class PostHTTP extends AbstractProcessor {
             .description("The URL to POST to. The first part of the URL must be static. However, the path of the URL may be defined using the Attribute Expression Language. For example, https://${hostname} is not valid, but https://1.1.1.1:8080/files/${nf.file.name} is valid.")
             .required(true)
             .addValidator(StandardValidators.createRegexMatchingValidator(Pattern.compile("https?\\://.*")))
+            .addValidator(StandardValidators.URL_VALIDATOR)
             .expressionLanguageSupported(true)
             .build();
     public static final PropertyDescriptor SEND_AS_FLOWFILE = new PropertyDescriptor.Builder()


[07/21] incubator-nifi git commit: Merge branch 'NIFI-441' of https://github.com/danbress/incubator-nifi into develop

Posted by ma...@apache.org.
Merge branch 'NIFI-441' of https://github.com/danbress/incubator-nifi into develop


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

Branch: refs/heads/NIFI-250
Commit: e48ea72c305944a7df0d10e5d2a75fd0d9e66d41
Parents: e05c9fd e78aedd
Author: Mark Payne <ma...@hotmail.com>
Authored: Mon Mar 23 10:07:22 2015 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Mon Mar 23 10:07:22 2015 -0400

----------------------------------------------------------------------
 .../META-INF/maven/archetype-metadata.xml       |  2 +-
 .../src/main/java/MyProcessor.java              |  8 ++
 .../docs/__package__.MyProcessor/index.html     | 96 --------------------
 3 files changed, 9 insertions(+), 97 deletions(-)
----------------------------------------------------------------------



[12/21] incubator-nifi git commit: NIFI-434 formatting tds to not wrap on spaces

Posted by ma...@apache.org.
NIFI-434 formatting tds to not wrap on spaces


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

Branch: refs/heads/NIFI-250
Commit: 2c418ece71ee20a2585364458ca4f67d96e7bd5f
Parents: 10f7247
Author: danbress <db...@onyxconsults.com>
Authored: Mon Mar 23 09:39:24 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Mon Mar 23 10:30:25 2015 -0400

----------------------------------------------------------------------
 .../nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/2c418ece/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css
index 6aea18b..19f6dff 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/src/main/webapp/css/component-usage.css
@@ -113,7 +113,7 @@ table tr:last-child td:last-child {
 	border-bottom-right-radius:3px;
 }
 
-td#allowable-values, td#default-value, td#name {
+td#allowable-values, td#default-value, td#name, td#value {
 	white-space:nowrap;
 }
 


[09/21] incubator-nifi git commit: NIFI-434 putting ids on html element to facilitate CSS

Posted by ma...@apache.org.
NIFI-434 putting ids on html element to facilitate CSS


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

Branch: refs/heads/NIFI-250
Commit: 0c5abce5f95876320586453d1391fe2588371ec3
Parents: 0bd2784
Author: danbress <db...@onyxconsults.com>
Authored: Mon Mar 23 09:14:09 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Mon Mar 23 10:29:37 2015 -0400

----------------------------------------------------------------------
 .../html/HtmlDocumentationWriter.java           | 30 ++++++++++++++++++--
 .../html/HtmlProcessorDocumentationWriter.java  |  4 +++
 2 files changed, 31 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/0c5abce5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java
index b1f426a..0da5bed 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java
@@ -302,12 +302,13 @@ public class HtmlDocumentationWriter implements DocumentationWriter {
         List<PropertyDescriptor> properties = configurableComponent.getPropertyDescriptors();
         if (properties.size() > 0) {
             xmlStreamWriter.writeStartElement("table");
+            xmlStreamWriter.writeAttribute("id", "properties");
 
             // write the header row
             xmlStreamWriter.writeStartElement("tr");
             writeSimpleElement(xmlStreamWriter, "th", "Name");
             writeSimpleElement(xmlStreamWriter, "th", "Default Value");
-            writeSimpleElement(xmlStreamWriter, "th", "Valid Values");
+            writeSimpleElement(xmlStreamWriter, "th", "Allowable Values");
             writeSimpleElement(xmlStreamWriter, "th", "Description");
             xmlStreamWriter.writeEndElement();
 
@@ -315,6 +316,7 @@ public class HtmlDocumentationWriter implements DocumentationWriter {
             for (PropertyDescriptor property : properties) {
                 xmlStreamWriter.writeStartElement("tr");
                 xmlStreamWriter.writeStartElement("td");
+                xmlStreamWriter.writeAttribute("id", "name");
                 if (property.isRequired()) {
                     writeSimpleElement(xmlStreamWriter, "strong", property.getDisplayName());
                 } else {
@@ -322,11 +324,13 @@ public class HtmlDocumentationWriter implements DocumentationWriter {
                 }
 
                 xmlStreamWriter.writeEndElement();
-                writeSimpleElement(xmlStreamWriter, "td", property.getDefaultValue());
+                writeSimpleElement(xmlStreamWriter, "td", property.getDefaultValue(), false, "default-value");
                 xmlStreamWriter.writeStartElement("td");
+                xmlStreamWriter.writeAttribute("id", "allowable-values");
                 writeValidValues(xmlStreamWriter, property);
                 xmlStreamWriter.writeEndElement();
                 xmlStreamWriter.writeStartElement("td");
+                xmlStreamWriter.writeAttribute("id", "description");
                 if (property.getDescription() != null && property.getDescription().trim().length() > 0) {
                     xmlStreamWriter.writeCharacters(property.getDescription());
                 } else {
@@ -372,6 +376,7 @@ public class HtmlDocumentationWriter implements DocumentationWriter {
             xmlStreamWriter
                     .writeCharacters("Dynamic Properties allow the user to specify both the name and value of a property.");
             xmlStreamWriter.writeStartElement("table");
+            xmlStreamWriter.writeAttribute("id", "dynamic-properties");
             xmlStreamWriter.writeStartElement("tr");
             writeSimpleElement(xmlStreamWriter, "th", "Name");
             writeSimpleElement(xmlStreamWriter, "th", "Value");
@@ -489,7 +494,26 @@ public class HtmlDocumentationWriter implements DocumentationWriter {
      */
     protected final static void writeSimpleElement(final XMLStreamWriter writer, final String elementName,
             final String characters, boolean strong) throws XMLStreamException {
-        writer.writeStartElement(elementName);
+    	writeSimpleElement(writer, elementName, characters, strong, null);
+    }
+    
+    /**
+     * Writes a begin element, an id attribute(if specified), then text, then end element for
+     * element of the users choosing.  Example: &lt;p id="p-id"&gt;text&lt;/p&gt;
+     * 
+     * @param writer the stream writer to use
+     * @param elementName the name of the element
+     * @param characters the text of the element
+     * @param strong whether to bold the text of the element or not
+     * @param id the id of the element.  specifying null will cause no element to be written.
+     * @throws XMLStreamException
+     */
+    protected final static void writeSimpleElement(final XMLStreamWriter writer, final String elementName,
+            final String characters, boolean strong, String id) throws XMLStreamException {
+    	writer.writeStartElement(elementName);
+    	if (id != null) {
+    		writer.writeAttribute("id", id);
+    	}
         if (strong) {
             writer.writeStartElement("strong");
         }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/0c5abce5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlProcessorDocumentationWriter.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlProcessorDocumentationWriter.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlProcessorDocumentationWriter.java
index f210c7a..bc355f7 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlProcessorDocumentationWriter.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlProcessorDocumentationWriter.java
@@ -83,6 +83,7 @@ public class HtmlProcessorDocumentationWriter extends HtmlDocumentationWriter {
         writeSimpleElement(xmlStreamWriter, "h3", "Reads Attributes: ");
         if (attributesRead.size() > 0) {
             xmlStreamWriter.writeStartElement("table");
+            xmlStreamWriter.writeAttribute("id", "reads-attributes");
             xmlStreamWriter.writeStartElement("tr");
             writeSimpleElement(xmlStreamWriter, "th", "Name");
             writeSimpleElement(xmlStreamWriter, "th", "Description");
@@ -120,6 +121,7 @@ public class HtmlProcessorDocumentationWriter extends HtmlDocumentationWriter {
         writeSimpleElement(xmlStreamWriter, "h3", "Writes Attributes: ");
         if (attributesRead.size() > 0) {
             xmlStreamWriter.writeStartElement("table");
+            xmlStreamWriter.writeAttribute("id", "writes-attributes");
             xmlStreamWriter.writeStartElement("tr");
             writeSimpleElement(xmlStreamWriter, "th", "Name");
             writeSimpleElement(xmlStreamWriter, "th", "Description");
@@ -203,6 +205,7 @@ public class HtmlProcessorDocumentationWriter extends HtmlDocumentationWriter {
 
         if (processor.getRelationships().size() > 0) {
             xmlStreamWriter.writeStartElement("table");
+            xmlStreamWriter.writeAttribute("id", "relationships");
             xmlStreamWriter.writeStartElement("tr");
             writeSimpleElement(xmlStreamWriter, "th", "Name");
             writeSimpleElement(xmlStreamWriter, "th", "Description");
@@ -236,6 +239,7 @@ public class HtmlProcessorDocumentationWriter extends HtmlDocumentationWriter {
             xmlStreamWriter.writeStartElement("p");
             xmlStreamWriter.writeCharacters("A Dynamic Relationship may be created based on how the user configures the Processor.");
             xmlStreamWriter.writeStartElement("table");
+            xmlStreamWriter.writeAttribute("id", "dynamic-relationships");
             xmlStreamWriter.writeStartElement("tr");
             writeSimpleElement(xmlStreamWriter, "th", "Name");
             writeSimpleElement(xmlStreamWriter, "th", "Description");


[16/21] incubator-nifi git commit: NIFI-408: Instead of yielding for 100 milliseconds when data is not available, Root Group Port should poll with a max wait time of 100 milliseconds and if no data is available return without yielding.

Posted by ma...@apache.org.
NIFI-408: Instead of yielding for 100 milliseconds when data is not available, Root Group Port should poll with a max wait time of 100 milliseconds and if no data is available return without yielding.


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

Branch: refs/heads/NIFI-250
Commit: d6408046bca336e4a11a9c123eef38139f05af78
Parents: 12fa9e7
Author: Mark Payne <ma...@hotmail.com>
Authored: Mon Mar 23 15:11:41 2015 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Mon Mar 23 15:11:41 2015 -0400

----------------------------------------------------------------------
 .../org/apache/nifi/remote/StandardRootGroupPort.java    | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/d6408046/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/main/java/org/apache/nifi/remote/StandardRootGroupPort.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/main/java/org/apache/nifi/remote/StandardRootGroupPort.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/main/java/org/apache/nifi/remote/StandardRootGroupPort.java
index 5fbd92f..021531f 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/main/java/org/apache/nifi/remote/StandardRootGroupPort.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/main/java/org/apache/nifi/remote/StandardRootGroupPort.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.locks.Lock;
@@ -63,7 +64,6 @@ import org.apache.nifi.reporting.BulletinRepository;
 import org.apache.nifi.reporting.Severity;
 import org.apache.nifi.scheduling.SchedulingStrategy;
 import org.apache.nifi.user.NiFiUser;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -126,9 +126,14 @@ public class StandardRootGroupPort extends AbstractPort implements RootGroupPort
     
     @Override
     public void onTrigger(final ProcessContext context, final ProcessSessionFactory sessionFactory) {
-        final FlowFileRequest flowFileRequest = requestQueue.poll();
+        final FlowFileRequest flowFileRequest;
+        try {
+            flowFileRequest = requestQueue.poll(100, TimeUnit.MILLISECONDS);
+        } catch (final InterruptedException ie) {
+            return;
+        }
+        
         if ( flowFileRequest == null ) {
-            context.yield();
             return;
         }
 


[03/21] incubator-nifi git commit: NIFI-441 updating additionalDetails.html

Posted by ma...@apache.org.
NIFI-441 updating additionalDetails.html


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

Branch: refs/heads/NIFI-250
Commit: 0f6fb7ecac8fc11a11d947db4fbf310fa1784e34
Parents: f63e09b
Author: danbress <db...@onyxconsults.com>
Authored: Thu Mar 19 08:37:44 2015 -0400
Committer: danbress <db...@onyxconsults.com>
Committed: Mon Mar 23 08:04:19 2015 -0400

----------------------------------------------------------------------
 .../resources/docs/__package__.MyProcessor/additionalDetails.html  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/0f6fb7ec/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html
----------------------------------------------------------------------
diff --git a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html
index 235cffa..5337543 100644
--- a/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html
+++ b/nifi/nifi-maven-archetypes/nifi-processor-bundle-archetype/src/main/resources/archetype-resources/nifi-__artifactBaseName__-processors/src/main/resources/docs/__package__.MyProcessor/additionalDetails.html
@@ -21,7 +21,7 @@
     </head>
 
     <body>
-        <p>This is a place to provide additional text, images and references that best describe how your processor is used
+        <p>This is a place to provide additional text, images and references that best describe how to use your processor.  If this level of detail is not necessary, you can remove this file.
         </p>
 
     </body>