Repository: nifi Updated Branches: refs/heads/0.x 90c749d73 -> 2cdb1c190
http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/processor/TestStandardPropertyValue.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/processor/TestStandardPropertyValue.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/processor/TestStandardPropertyValue.java index cebedaf..4dfac22 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/processor/TestStandardPropertyValue.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/processor/TestStandardPropertyValue.java @@ -29,15 +29,19 @@ import org.apache.nifi.controller.ControllerService; import org.apache.nifi.controller.ControllerServiceLookup; import org.apache.nifi.controller.repository.StandardFlowFileRecord; import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.registry.VariableRegistry; +import org.apache.nifi.registry.VariableRegistryUtils; import org.junit.Test; + public class TestStandardPropertyValue { private final ControllerServiceLookup lookup = new TestControllerServiceLookup(); + private final VariableRegistry variableRegistry = VariableRegistryUtils.createVariableRegistry(); @Test public void testSubstituteAttributesWithOneMatchingArg() { - final PropertyValue value = new StandardPropertyValue("Hello, ${audience}!", lookup); + final PropertyValue value = new StandardPropertyValue("Hello, ${audience}!", lookup, variableRegistry); final Map<String, String> attributes = new HashMap<>(); attributes.put("audience", "World"); assertEquals("Hello, World!", value.evaluateAttributeExpressions(createFlowFile(attributes)).getValue()); @@ -45,7 +49,7 @@ public class TestStandardPropertyValue { @Test public void testMissingEndBraceEvaluatesToStringLiteral() { - final PropertyValue value = new StandardPropertyValue("Hello, ${audience!", lookup); + final PropertyValue value = new StandardPropertyValue("Hello, ${audience!", lookup, variableRegistry); final Map<String, String> attributes = new HashMap<>(); attributes.put("audience", "World"); assertEquals("Hello, ${audience!", value.evaluateAttributeExpressions(createFlowFile(attributes)).getValue()); @@ -53,7 +57,7 @@ public class TestStandardPropertyValue { @Test public void testEscaped() { - final PropertyValue value = new StandardPropertyValue("Hello, $${audience}!", lookup); + final PropertyValue value = new StandardPropertyValue("Hello, $${audience}!", lookup, variableRegistry); final Map<String, String> attributes = new HashMap<>(); attributes.put("audience", "World"); assertEquals("Hello, ${audience}!", value.evaluateAttributeExpressions(createFlowFile(attributes)).getValue()); @@ -61,7 +65,7 @@ public class TestStandardPropertyValue { @Test public void testSubstituteAttributesWithMultipleMatchingArgs() { - final PropertyValue value = new StandardPropertyValue("Hello, ${audience}${comma}${question}!", lookup); + final PropertyValue value = new StandardPropertyValue("Hello, ${audience}${comma}${question}!", lookup, variableRegistry); final Map<String, String> attributes = new HashMap<>(); attributes.put("audience", "World"); attributes.put("comma", ","); @@ -71,14 +75,14 @@ public class TestStandardPropertyValue { @Test public void testSubstituteAttributesWithNoMatch() { - final PropertyValue value = new StandardPropertyValue("Hello, ${audience}${comma}${question:replaceNull('')}!", lookup); + final PropertyValue value = new StandardPropertyValue("Hello, ${audience}${comma}${question:replaceNull('')}!", lookup, variableRegistry); final Map<String, String> attributes = new HashMap<>(); assertEquals("Hello, !", value.evaluateAttributeExpressions(createFlowFile(attributes)).getValue()); } @Test public void testSubstituteAttributesRecursively() { - final PropertyValue value = new StandardPropertyValue("Hello, ${'${a}${b}'}!", lookup); + final PropertyValue value = new StandardPropertyValue("Hello, ${'${a}${b}'}!", lookup, variableRegistry); final Map<String, String> attributes = new HashMap<>(); attributes.put("a", "b"); attributes.put("b", "World"); @@ -88,7 +92,7 @@ public class TestStandardPropertyValue { @Test public void testGetValueAsIntegerAfterSubstitute() { - final PropertyValue value = new StandardPropertyValue("1${value}", lookup); + final PropertyValue value = new StandardPropertyValue("1${value}", lookup, variableRegistry); final Map<String, String> attributes = new HashMap<>(); attributes.put("value", "39"); assertEquals(139, value.evaluateAttributeExpressions(createFlowFile(attributes)).asInteger().intValue()); @@ -96,7 +100,7 @@ public class TestStandardPropertyValue { @Test(expected = NumberFormatException.class) public void testGetValueAsIntegerAfterSubstitutingWithNonInteger() { - final PropertyValue value = new StandardPropertyValue("1${value}", lookup); + final PropertyValue value = new StandardPropertyValue("1${value}", lookup, variableRegistry); final Map<String, String> attributes = new HashMap<>(); attributes.put("value", "Yes"); final PropertyValue substituted = value.evaluateAttributeExpressions(createFlowFile(attributes)); @@ -105,7 +109,7 @@ public class TestStandardPropertyValue { @Test public void testFileSize() { - final PropertyValue value = new StandardPropertyValue("${fileSize}", lookup); + final PropertyValue value = new StandardPropertyValue("${fileSize}", lookup, variableRegistry); final FlowFile flowFile = new StandardFlowFileRecord.Builder().size(1024 * 1024L).build(); final long val = value.evaluateAttributeExpressions(flowFile).asLong().longValue(); assertEquals(1024 * 1024L, val); @@ -115,7 +119,7 @@ public class TestStandardPropertyValue { public void testFlowFileEntryYear() { final Calendar now = Calendar.getInstance(); final int year = now.get(Calendar.YEAR); - final PropertyValue value = new StandardPropertyValue("${entryDate:toNumber():toDate():format('yyyy')}", lookup); + final PropertyValue value = new StandardPropertyValue("${entryDate:toNumber():toDate():format('yyyy')}", lookup, variableRegistry); final FlowFile flowFile = new StandardFlowFileRecord.Builder().entryDate(now.getTimeInMillis()).build(); final int val = value.evaluateAttributeExpressions(flowFile).asInteger().intValue(); assertEquals(year, val); @@ -125,7 +129,7 @@ public class TestStandardPropertyValue { public void testSystemProperty() { System.setProperty("Prop1", "Foo"); System.setProperty("Prop2", "Bar"); - final PropertyValue value = new StandardPropertyValue("${Prop1}${Prop2}${abc}", lookup); + final PropertyValue value = new StandardPropertyValue("${Prop1}${Prop2}${abc}", lookup, VariableRegistryUtils.createVariableRegistry()); final Map<String, String> attributes = new HashMap<>(); attributes.put("abc", "Baz"); final FlowFile flowFile = createFlowFile(attributes); @@ -171,5 +175,6 @@ public class TestStandardPropertyValue { public boolean isControllerServiceEnabling(String serviceIdentifier) { return false; } + } } http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-resources/src/main/resources/conf/nifi.properties ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-resources/src/main/resources/conf/nifi.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-resources/src/main/resources/conf/nifi.properties index 24d2295..7b64982 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-resources/src/main/resources/conf/nifi.properties +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-resources/src/main/resources/conf/nifi.properties @@ -185,4 +185,8 @@ nifi.cluster.manager.safemode.duration=${nifi.cluster.manager.safemode.duration} nifi.kerberos.krb5.file=${nifi.kerberos.krb5.file} nifi.kerberos.service.principal=${nifi.kerberos.service.principal} nifi.kerberos.keytab.location=${nifi.kerberos.keytab.location} -nifi.kerberos.authentication.expiration=${nifi.kerberos.authentication.expiration} \ No newline at end of file +nifi.kerberos.authentication.expiration=${nifi.kerberos.authentication.expiration} + +# external properties files for variable registry +# supports a comma delimited list of file locations +nifi.variable.registry.properties= \ No newline at end of file http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiWebConfigurationContext.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiWebConfigurationContext.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiWebConfigurationContext.java index 9076063..d1d0796 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiWebConfigurationContext.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiWebConfigurationContext.java @@ -30,6 +30,9 @@ import org.apache.nifi.cluster.manager.impl.WebClusterManager; import org.apache.nifi.controller.ControllerService; import org.apache.nifi.controller.ControllerServiceLookup; import org.apache.nifi.controller.reporting.ReportingTaskProvider; +import org.apache.nifi.registry.VariableRegistry; +import org.apache.nifi.registry.VariableRegistryFactory; +import org.apache.nifi.registry.VariableRegistryUtils; import org.apache.nifi.user.NiFiUser; import org.apache.nifi.util.NiFiProperties; import org.apache.nifi.web.api.dto.ControllerServiceDTO; @@ -54,6 +57,8 @@ import org.springframework.security.core.context.SecurityContextHolder; import javax.ws.rs.HttpMethod; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; + +import java.io.IOException; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.net.URI; @@ -244,6 +249,17 @@ public class StandardNiFiWebConfigurationContext implements NiFiWebConfiguration return componentFacade; } + @Override + public VariableRegistry getVariableRegistry() { + VariableRegistry variableRegistry = VariableRegistryUtils.createVariableRegistry(); + try { + variableRegistry.addRegistry(VariableRegistryFactory.getPropertiesInstance(properties.getVariableRegistryPropertiesPaths())); + }catch(IOException ioe){ + logger.error("Exception occurred loading custom properties",ioe); + } + return variableRegistry; + } + /** * Facade over accessing different types of NiFi components. */ @@ -848,5 +864,4 @@ public class StandardNiFiWebConfigurationContext implements NiFiWebConfiguration public void setReportingTaskProvider(ReportingTaskProvider reportingTaskProvider) { this.reportingTaskProvider = reportingTaskProvider; } - } http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/StandardSearchContext.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/StandardSearchContext.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/StandardSearchContext.java index f673075..1ef12ee 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/StandardSearchContext.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/StandardSearchContext.java @@ -53,7 +53,7 @@ public class StandardSearchContext implements SearchContext { @Override public PropertyValue getProperty(PropertyDescriptor property) { final String configuredValue = processorNode.getProperty(property); - return new StandardPropertyValue(configuredValue == null ? property.getDefaultValue() : configuredValue, controllerServiceLookup, null); + return new StandardPropertyValue(configuredValue == null ? property.getDefaultValue() : configuredValue, controllerServiceLookup,null); } @Override http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestInvokeGroovy.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestInvokeGroovy.java b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestInvokeGroovy.java index 2dc700d..e57ad8a 100644 --- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestInvokeGroovy.java +++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestInvokeGroovy.java @@ -18,6 +18,8 @@ package org.apache.nifi.processors.script; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.processor.Relationship; +import org.apache.nifi.registry.VariableRegistry; +import org.apache.nifi.registry.VariableRegistryUtils; import org.apache.nifi.util.MockFlowFile; import org.apache.nifi.util.MockProcessContext; import org.apache.nifi.util.MockProcessorInitializationContext; @@ -37,9 +39,12 @@ import static org.junit.Assert.assertTrue; public class TestInvokeGroovy extends BaseScriptTest { + private VariableRegistry variableRegistry; + @Before public void setup() throws Exception { super.setupInvokeScriptProcessor(); + variableRegistry = VariableRegistryUtils.createVariableRegistry(); } /** @@ -72,7 +77,7 @@ public class TestInvokeGroovy extends BaseScriptTest { @Test public void testScriptDefinedAttribute() throws Exception { InvokeScriptedProcessor processor = new InvokeScriptedProcessor(); - MockProcessContext context = new MockProcessContext(processor); + MockProcessContext context = new MockProcessContext(processor, variableRegistry); MockProcessorInitializationContext initContext = new MockProcessorInitializationContext(processor, context); processor.initialize(initContext); @@ -81,7 +86,7 @@ public class TestInvokeGroovy extends BaseScriptTest { context.setProperty(InvokeScriptedProcessor.SCRIPT_FILE, "target/test/resources/groovy/test_reader.groovy"); context.setProperty(InvokeScriptedProcessor.MODULES, "target/test/resources/groovy"); // State Manger is unused, and a null reference is specified - processor.customValidate(new MockValidationContext(context, null)); + processor.customValidate(new MockValidationContext(context, null, variableRegistry)); processor.setup(context); List<PropertyDescriptor> descriptors = processor.getSupportedPropertyDescriptors(); @@ -106,7 +111,7 @@ public class TestInvokeGroovy extends BaseScriptTest { @Test public void testScriptDefinedRelationship() throws Exception { InvokeScriptedProcessor processor = new InvokeScriptedProcessor(); - MockProcessContext context = new MockProcessContext(processor); + MockProcessContext context = new MockProcessContext(processor, variableRegistry); MockProcessorInitializationContext initContext = new MockProcessorInitializationContext(processor, context); processor.initialize(initContext); @@ -114,7 +119,7 @@ public class TestInvokeGroovy extends BaseScriptTest { context.setProperty(InvokeScriptedProcessor.SCRIPT_ENGINE, "Groovy"); context.setProperty(InvokeScriptedProcessor.SCRIPT_FILE, "target/test/resources/groovy/test_reader.groovy"); // State Manger is unused, and a null reference is specified - processor.customValidate(new MockValidationContext(context, null)); + processor.customValidate(new MockValidationContext(context, null, variableRegistry)); processor.setup(context); Set<Relationship> relationships = processor.getRelationships(); http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/test/java/org/apache/nifi/reporting/TestSiteToSiteProvenanceReportingTask.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/test/java/org/apache/nifi/reporting/TestSiteToSiteProvenanceReportingTask.java b/nifi-nar-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/test/java/org/apache/nifi/reporting/TestSiteToSiteProvenanceReportingTask.java index 265bdd0..12a5e4c 100644 --- a/nifi-nar-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/test/java/org/apache/nifi/reporting/TestSiteToSiteProvenanceReportingTask.java +++ b/nifi-nar-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/test/java/org/apache/nifi/reporting/TestSiteToSiteProvenanceReportingTask.java @@ -39,6 +39,7 @@ import org.apache.nifi.provenance.ProvenanceEventRecord; import org.apache.nifi.provenance.ProvenanceEventRepository; import org.apache.nifi.provenance.ProvenanceEventType; import org.apache.nifi.provenance.StandardProvenanceEventRecord; +import org.apache.nifi.registry.VariableRegistryUtils; import org.apache.nifi.remote.Transaction; import org.apache.nifi.remote.TransferDirection; import org.apache.nifi.remote.client.SiteToSiteClient; @@ -126,7 +127,7 @@ public class TestSiteToSiteProvenanceReportingTask { @Override public PropertyValue answer(final InvocationOnMock invocation) throws Throwable { final PropertyDescriptor descriptor = invocation.getArgumentAt(0, PropertyDescriptor.class); - return new MockPropertyValue(properties.get(descriptor), null); + return new MockPropertyValue(properties.get(descriptor), null, VariableRegistryUtils.createVariableRegistry()); } }).when(context).getProperty(Mockito.any(PropertyDescriptor.class)); @@ -181,4 +182,6 @@ public class TestSiteToSiteProvenanceReportingTask { mockFlowFile.putAttributes(attributes); return mockFlowFile; } + + } http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestRouteOnAttribute.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestRouteOnAttribute.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestRouteOnAttribute.java index 66dc854..7c6435d 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestRouteOnAttribute.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestRouteOnAttribute.java @@ -26,6 +26,8 @@ import java.util.Map; import org.apache.nifi.components.ValidationResult; import org.apache.nifi.processor.Relationship; +import org.apache.nifi.registry.VariableRegistry; +import org.apache.nifi.registry.VariableRegistryUtils; import org.apache.nifi.state.MockStateManager; import org.apache.nifi.util.MockFlowFile; import org.apache.nifi.util.MockProcessContext; @@ -36,10 +38,12 @@ import org.junit.Test; public class TestRouteOnAttribute { + private VariableRegistry variableRegistry = VariableRegistryUtils.createVariableRegistry(); + @Test public void testInvalidOnMisconfiguredProperty() { final RouteOnAttribute proc = new RouteOnAttribute(); - final MockProcessContext ctx = new MockProcessContext(proc, new MockStateManager(proc)); + final MockProcessContext ctx = new MockProcessContext(proc, new MockStateManager(proc), variableRegistry); final ValidationResult validationResult = ctx.setProperty("RouteA", "${a:equals('b')"); // Missing closing brace assertFalse(validationResult.isValid()); } @@ -47,7 +51,7 @@ public class TestRouteOnAttribute { @Test public void testInvalidOnNonBooleanProperty() { final RouteOnAttribute proc = new RouteOnAttribute(); - final MockProcessContext ctx = new MockProcessContext(proc, new MockStateManager(proc)); + final MockProcessContext ctx = new MockProcessContext(proc, new MockStateManager(proc), variableRegistry); final ValidationResult validationResult = ctx.setProperty("RouteA", "${a:length()"); // Should be boolean assertFalse(validationResult.isValid()); } http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-standard-services/nifi-distributed-cache-services-bundle/nifi-distributed-cache-server/src/test/java/org/apache/nifi/distributed/cache/server/TestServerAndClient.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-distributed-cache-services-bundle/nifi-distributed-cache-server/src/test/java/org/apache/nifi/distributed/cache/server/TestServerAndClient.java b/nifi-nar-bundles/nifi-standard-services/nifi-distributed-cache-services-bundle/nifi-distributed-cache-server/src/test/java/org/apache/nifi/distributed/cache/server/TestServerAndClient.java index 82e4a99..ccd1dd5 100644 --- a/nifi-nar-bundles/nifi-standard-services/nifi-distributed-cache-services-bundle/nifi-distributed-cache-server/src/test/java/org/apache/nifi/distributed/cache/server/TestServerAndClient.java +++ b/nifi-nar-bundles/nifi-standard-services/nifi-distributed-cache-services-bundle/nifi-distributed-cache-server/src/test/java/org/apache/nifi/distributed/cache/server/TestServerAndClient.java @@ -41,6 +41,8 @@ import org.apache.nifi.distributed.cache.client.exception.DeserializationExcepti import org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer; import org.apache.nifi.processor.Processor; import org.apache.nifi.processor.util.StandardValidators; +import org.apache.nifi.registry.VariableRegistry; +import org.apache.nifi.registry.VariableRegistryUtils; import org.apache.nifi.reporting.InitializationException; import org.apache.nifi.util.MockConfigurationContext; import org.apache.nifi.util.MockControllerServiceInitializationContext; @@ -55,6 +57,7 @@ import org.slf4j.LoggerFactory; public class TestServerAndClient { private static Logger LOGGER; + private static VariableRegistry variableRegistry = VariableRegistryUtils.createVariableRegistry(); static { System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "info"); @@ -329,7 +332,7 @@ public class TestServerAndClient { clientProperties.put(DistributedMapCacheClientService.HOSTNAME, "localhost"); clientProperties.put(DistributedMapCacheClientService.PORT, String.valueOf(server.getPort())); clientProperties.put(DistributedMapCacheClientService.COMMUNICATIONS_TIMEOUT, "360 secs"); - MockConfigurationContext clientContext = new MockConfigurationContext(clientProperties, clientInitContext.getControllerServiceLookup()); + MockConfigurationContext clientContext = new MockConfigurationContext(clientProperties, clientInitContext.getControllerServiceLookup(), variableRegistry); client.cacheConfig(clientContext); final Serializer<String> valueSerializer = new StringSerializer(); final Serializer<String> keySerializer = new StringSerializer(); @@ -375,7 +378,7 @@ public class TestServerAndClient { client2.initialize(clientInitContext2); MockConfigurationContext clientContext2 = new MockConfigurationContext(clientProperties, - clientInitContext2.getControllerServiceLookup()); + clientInitContext2.getControllerServiceLookup(), variableRegistry); client2.cacheConfig(clientContext2); assertFalse(client2.putIfAbsent("testKey", "test", keySerializer, valueSerializer)); assertTrue(client2.containsKey("testKey", keySerializer)); @@ -408,7 +411,7 @@ public class TestServerAndClient { server.initialize(serverInitContext); final Map<PropertyDescriptor, String> serverProperties = new HashMap<>(); - final MockConfigurationContext serverContext = new MockConfigurationContext(serverProperties, serverInitContext.getControllerServiceLookup()); + final MockConfigurationContext serverContext = new MockConfigurationContext(serverProperties, serverInitContext.getControllerServiceLookup(), variableRegistry); server.startServer(serverContext); DistributedMapCacheClientService client = new DistributedMapCacheClientService(); @@ -418,7 +421,7 @@ public class TestServerAndClient { final Map<PropertyDescriptor, String> clientProperties = new HashMap<>(); clientProperties.put(DistributedMapCacheClientService.HOSTNAME, "localhost"); clientProperties.put(DistributedMapCacheClientService.COMMUNICATIONS_TIMEOUT, "360 secs"); - MockConfigurationContext clientContext = new MockConfigurationContext(clientProperties, clientInitContext.getControllerServiceLookup()); + MockConfigurationContext clientContext = new MockConfigurationContext(clientProperties, clientInitContext.getControllerServiceLookup(), variableRegistry); client.cacheConfig(clientContext); final Serializer<String> valueSerializer = new StringSerializer(); final Serializer<String> keySerializer = new StringSerializer(); @@ -465,7 +468,7 @@ public class TestServerAndClient { final Map<PropertyDescriptor, String> clientProperties = new HashMap<>(); clientProperties.put(DistributedSetCacheClientService.HOSTNAME, "localhost"); clientProperties.put(DistributedSetCacheClientService.PORT, String.valueOf(port)); - final MockConfigurationContext clientContext = new MockConfigurationContext(clientProperties, clientInitContext.getControllerServiceLookup()); + final MockConfigurationContext clientContext = new MockConfigurationContext(clientProperties, clientInitContext.getControllerServiceLookup(), variableRegistry); client.onConfigured(clientContext); return client; http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-processor/src/test/java/org/apache/nifi/update/attributes/TestUpdateAttribute.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-processor/src/test/java/org/apache/nifi/update/attributes/TestUpdateAttribute.java b/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-processor/src/test/java/org/apache/nifi/update/attributes/TestUpdateAttribute.java index 90b51bd..d73b308 100644 --- a/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-processor/src/test/java/org/apache/nifi/update/attributes/TestUpdateAttribute.java +++ b/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-processor/src/test/java/org/apache/nifi/update/attributes/TestUpdateAttribute.java @@ -16,6 +16,7 @@ */ package org.apache.nifi.update.attributes; + import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Collection; @@ -32,6 +33,7 @@ import org.apache.nifi.util.MockFlowFile; import org.apache.nifi.util.TestRunner; import org.apache.nifi.util.TestRunners; + import org.junit.Test; import static org.junit.Assert.assertEquals; @@ -43,6 +45,7 @@ public class TestUpdateAttribute { final static private String TEST_CONTENT = "THIS IS TEST CONTENT"; + private Map<String, String> getMap(String... keyValues) { final Map<String, String> map = new HashMap<>(); if (keyValues != null) { http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/java/org/apache/nifi/update/attributes/UpdateAttributeModelFactory.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/java/org/apache/nifi/update/attributes/UpdateAttributeModelFactory.java b/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/java/org/apache/nifi/update/attributes/UpdateAttributeModelFactory.java index 0182d61..6102e82 100644 --- a/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/java/org/apache/nifi/update/attributes/UpdateAttributeModelFactory.java +++ b/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/java/org/apache/nifi/update/attributes/UpdateAttributeModelFactory.java @@ -23,6 +23,7 @@ import org.apache.nifi.attribute.expression.language.Query; import org.apache.nifi.attribute.expression.language.StandardExpressionLanguageCompiler; import org.apache.nifi.attribute.expression.language.exception.AttributeExpressionLanguageParsingException; import org.apache.nifi.expression.AttributeExpression.ResultType; +import org.apache.nifi.registry.VariableRegistry; import org.apache.nifi.update.attributes.dto.ActionDTO; import org.apache.nifi.update.attributes.dto.ConditionDTO; import org.apache.nifi.update.attributes.dto.RuleDTO; @@ -32,6 +33,12 @@ import org.apache.nifi.update.attributes.dto.RuleDTO; */ public class UpdateAttributeModelFactory { + private final VariableRegistry variableRegistry; + + public UpdateAttributeModelFactory(VariableRegistry variableRegistry) { + this.variableRegistry = variableRegistry; + } + public Rule createRule(final RuleDTO dto) { if (dto == null) { throw new IllegalArgumentException("Rule must be specified."); @@ -72,7 +79,7 @@ public class UpdateAttributeModelFactory { } // validate the condition's expression - final StandardExpressionLanguageCompiler elCompiler = new StandardExpressionLanguageCompiler(); + final StandardExpressionLanguageCompiler elCompiler = new StandardExpressionLanguageCompiler(variableRegistry); final String syntaxError = elCompiler.validateExpression(dto.getExpression(), false); if (syntaxError != null) { throw new IllegalArgumentException(syntaxError); http://git-wip-us.apache.org/repos/asf/nifi/blob/c600f150/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/java/org/apache/nifi/update/attributes/api/RuleResource.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/java/org/apache/nifi/update/attributes/api/RuleResource.java b/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/java/org/apache/nifi/update/attributes/api/RuleResource.java index b211b72..f099b55 100644 --- a/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/java/org/apache/nifi/update/attributes/api/RuleResource.java +++ b/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/java/org/apache/nifi/update/attributes/api/RuleResource.java @@ -46,6 +46,7 @@ import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; +import org.apache.nifi.registry.VariableRegistry; import org.apache.nifi.update.attributes.Action; import org.apache.nifi.update.attributes.Condition; import org.apache.nifi.update.attributes.Criteria; @@ -187,6 +188,7 @@ public class RuleResource { // get the web context final NiFiWebConfigurationContext configurationContext = (NiFiWebConfigurationContext) servletContext.getAttribute("nifi-web-configuration-context"); + final VariableRegistry variableRegistry = configurationContext.getVariableRegistry(); // ensure the rule has been specified if (requestEntity == null || requestEntity.getRule() == null) { @@ -219,7 +221,7 @@ public class RuleResource { // load the criteria final Criteria criteria = getCriteria(configurationContext, requestContext); - final UpdateAttributeModelFactory factory = new UpdateAttributeModelFactory(); + final UpdateAttributeModelFactory factory = new UpdateAttributeModelFactory(variableRegistry); // create the new rule final Rule rule; @@ -261,10 +263,14 @@ public class RuleResource { // generate a new id final String uuid = UUID.randomUUID().toString(); + // get the variable registry + final NiFiWebConfigurationContext configurationContext = (NiFiWebConfigurationContext) servletContext.getAttribute("nifi-web-configuration-context"); + final VariableRegistry variableRegistry = configurationContext.getVariableRegistry(); + final Condition condition; try { // create the condition object - final UpdateAttributeModelFactory factory = new UpdateAttributeModelFactory(); + final UpdateAttributeModelFactory factory = new UpdateAttributeModelFactory(variableRegistry); condition = factory.createCondition(requestEntity.getCondition()); condition.setId(uuid); } catch (final IllegalArgumentException iae) { @@ -295,10 +301,14 @@ public class RuleResource { // generate a new id final String uuid = UUID.randomUUID().toString(); + // get the variable registry + final NiFiWebConfigurationContext configurationContext = (NiFiWebConfigurationContext) servletContext.getAttribute("nifi-web-configuration-context"); + final VariableRegistry variableRegistry = configurationContext.getVariableRegistry(); + final Action action; try { // create the condition object - final UpdateAttributeModelFactory factory = new UpdateAttributeModelFactory(); + final UpdateAttributeModelFactory factory = new UpdateAttributeModelFactory(variableRegistry); action = factory.createAction(requestEntity.getAction()); action.setId(uuid); } catch (final IllegalArgumentException iae) { @@ -461,6 +471,8 @@ public class RuleResource { // get the web context final NiFiWebConfigurationContext nifiWebContext = (NiFiWebConfigurationContext) servletContext.getAttribute("nifi-web-configuration-context"); + // get the variable registry + final VariableRegistry variableRegistry = nifiWebContext.getVariableRegistry(); // ensure the rule has been specified if (requestEntity == null || requestEntity.getRule() == null) { @@ -497,7 +509,7 @@ public class RuleResource { requestEntity.getProcessorId(), requestEntity.getRevision(), requestEntity.getClientId()); // load the criteria - final UpdateAttributeModelFactory factory = new UpdateAttributeModelFactory(); + final UpdateAttributeModelFactory factory = new UpdateAttributeModelFactory(variableRegistry); final Criteria criteria = getCriteria(nifiWebContext, requestContext); // attempt to locate the rule
