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 2017/08/14 17:42:09 UTC
nifi git commit: NIFI-779 - fix for
ReportingContext.getProperty(PropertyDescriptor)
Repository: nifi
Updated Branches:
refs/heads/master bac175a00 -> 8aa445008
NIFI-779 - fix for ReportingContext.getProperty(PropertyDescriptor)
Signed-off-by: Matt Burgess <ma...@apache.org>
This closes #2033
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/8aa44500
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/8aa44500
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/8aa44500
Branch: refs/heads/master
Commit: 8aa445008499377c779b43fb3c5529023c14142f
Parents: bac175a
Author: Pierre Villard <pi...@gmail.com>
Authored: Sat Jul 22 19:59:43 2017 +0200
Committer: Matt Burgess <ma...@apache.org>
Committed: Mon Aug 14 13:41:10 2017 -0400
----------------------------------------------------------------------
.../reporting/StandardReportingContext.java | 7 +-
.../controller/DummyScheduledReportingTask.java | 31 ++++
.../reporting/TestStandardReportingContext.java | 147 +++++++++++++++++++
3 files changed, 184 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/8aa44500/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingContext.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingContext.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingContext.java
index 62183cc..440fd79 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingContext.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingContext.java
@@ -119,8 +119,13 @@ public class StandardReportingContext implements ReportingContext, ControllerSer
@Override
public PropertyValue getProperty(final PropertyDescriptor property) {
+ final PropertyDescriptor descriptor = reportingTask.getPropertyDescriptor(property.getName());
+ if (descriptor == null) {
+ return null;
+ }
+
final String configuredValue = properties.get(property);
- return new StandardPropertyValue(configuredValue == null ? property.getDefaultValue() : configuredValue, this, preparedQueries.get(property), variableRegistry);
+ return new StandardPropertyValue(configuredValue == null ? descriptor.getDefaultValue() : configuredValue, this, preparedQueries.get(property), variableRegistry);
}
@Override
http://git-wip-us.apache.org/repos/asf/nifi/blob/8aa44500/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/DummyScheduledReportingTask.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/DummyScheduledReportingTask.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/DummyScheduledReportingTask.java
index 9dd19e3..a347e98 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/DummyScheduledReportingTask.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/DummyScheduledReportingTask.java
@@ -17,7 +17,12 @@
package org.apache.nifi.controller;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.nifi.annotation.configuration.DefaultSchedule;
+import org.apache.nifi.components.PropertyDescriptor;
+import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.reporting.AbstractReportingTask;
import org.apache.nifi.reporting.ReportingContext;
import org.apache.nifi.scheduling.SchedulingStrategy;
@@ -27,6 +32,32 @@ import org.apache.nifi.scheduling.SchedulingStrategy;
*/
@DefaultSchedule(strategy = SchedulingStrategy.CRON_DRIVEN, period = "0 0 0 1/1 * ?")
public class DummyScheduledReportingTask extends AbstractReportingTask {
+
+ public static final PropertyDescriptor TEST_WITH_DEFAULT_VALUE = new PropertyDescriptor.Builder()
+ .name("Test with default value")
+ .description("Test with default value")
+ .required(true)
+ .expressionLanguageSupported(true)
+ .defaultValue("nifi")
+ .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+ .build();
+
+ public static final PropertyDescriptor TEST_WITHOUT_DEFAULT_VALUE = new PropertyDescriptor.Builder()
+ .name("Test without default value")
+ .description("Test without default value")
+ .required(false)
+ .expressionLanguageSupported(true)
+ .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+ .build();
+
+ @Override
+ protected List<PropertyDescriptor> getSupportedPropertyDescriptors() {
+ final List<PropertyDescriptor> properties = new ArrayList<>(super.getSupportedPropertyDescriptors());
+ properties.add(TEST_WITH_DEFAULT_VALUE);
+ properties.add(TEST_WITHOUT_DEFAULT_VALUE);
+ return properties;
+ }
+
@Override
public void onTrigger(ReportingContext context) {
http://git-wip-us.apache.org/repos/asf/nifi/blob/8aa44500/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/reporting/TestStandardReportingContext.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/reporting/TestStandardReportingContext.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/reporting/TestStandardReportingContext.java
new file mode 100644
index 0000000..1903179
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/reporting/TestStandardReportingContext.java
@@ -0,0 +1,147 @@
+/*
+ * 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.
+ */
+package org.apache.nifi.controller.reporting;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.nifi.admin.service.AuditService;
+import org.apache.nifi.authorization.AbstractPolicyBasedAuthorizer;
+import org.apache.nifi.authorization.AccessPolicy;
+import org.apache.nifi.authorization.Group;
+import org.apache.nifi.authorization.MockPolicyBasedAuthorizer;
+import org.apache.nifi.authorization.RequestAction;
+import org.apache.nifi.authorization.User;
+import org.apache.nifi.bundle.Bundle;
+import org.apache.nifi.components.PropertyDescriptor;
+import org.apache.nifi.components.PropertyValue;
+import org.apache.nifi.controller.DummyScheduledReportingTask;
+import org.apache.nifi.controller.FlowController;
+import org.apache.nifi.controller.ReportingTaskNode;
+import org.apache.nifi.controller.repository.FlowFileEventRepository;
+import org.apache.nifi.encrypt.StringEncryptor;
+import org.apache.nifi.nar.ExtensionManager;
+import org.apache.nifi.nar.SystemBundle;
+import org.apache.nifi.provenance.MockProvenanceRepository;
+import org.apache.nifi.registry.VariableRegistry;
+import org.apache.nifi.reporting.BulletinRepository;
+import org.apache.nifi.util.FileBasedVariableRegistry;
+import org.apache.nifi.util.NiFiProperties;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+public class TestStandardReportingContext {
+
+ private FlowController controller;
+ private AbstractPolicyBasedAuthorizer authorizer;
+ private FlowFileEventRepository flowFileEventRepo;
+ private AuditService auditService;
+ private StringEncryptor encryptor;
+ private NiFiProperties nifiProperties;
+ private Bundle systemBundle;
+ private BulletinRepository bulletinRepo;
+ private VariableRegistry variableRegistry;
+ private volatile String propsFile = TestStandardReportingContext.class.getResource("/flowcontrollertest.nifi.properties").getFile();
+
+ @Before
+ public void setup() {
+
+ flowFileEventRepo = Mockito.mock(FlowFileEventRepository.class);
+ auditService = Mockito.mock(AuditService.class);
+ final Map<String, String> otherProps = new HashMap<>();
+ otherProps.put(NiFiProperties.PROVENANCE_REPO_IMPLEMENTATION_CLASS, MockProvenanceRepository.class.getName());
+ otherProps.put("nifi.remote.input.socket.port", "");
+ otherProps.put("nifi.remote.input.secure", "");
+ nifiProperties = NiFiProperties.createBasicNiFiProperties(propsFile, otherProps);
+ encryptor = StringEncryptor.createEncryptor(nifiProperties);
+
+ // use the system bundle
+ systemBundle = SystemBundle.create(nifiProperties);
+ ExtensionManager.discoverExtensions(systemBundle, Collections.emptySet());
+
+ User user1 = new User.Builder().identifier("user-id-1").identity("user-1").build();
+ User user2 = new User.Builder().identifier("user-id-2").identity("user-2").build();
+
+ Group group1 = new Group.Builder().identifier("group-id-1").name("group-1").addUser(user1.getIdentifier()).build();
+ Group group2 = new Group.Builder().identifier("group-id-2").name("group-2").build();
+
+ AccessPolicy policy1 = new AccessPolicy.Builder()
+ .identifier("policy-id-1")
+ .resource("resource1")
+ .action(RequestAction.READ)
+ .addUser(user1.getIdentifier())
+ .addUser(user2.getIdentifier())
+ .build();
+
+ AccessPolicy policy2 = new AccessPolicy.Builder()
+ .identifier("policy-id-2")
+ .resource("resource2")
+ .action(RequestAction.READ)
+ .addGroup(group1.getIdentifier())
+ .addGroup(group2.getIdentifier())
+ .addUser(user1.getIdentifier())
+ .addUser(user2.getIdentifier())
+ .build();
+
+ Set<Group> groups1 = new LinkedHashSet<>();
+ groups1.add(group1);
+ groups1.add(group2);
+
+ Set<User> users1 = new LinkedHashSet<>();
+ users1.add(user1);
+ users1.add(user2);
+
+ Set<AccessPolicy> policies1 = new LinkedHashSet<>();
+ policies1.add(policy1);
+ policies1.add(policy2);
+
+ authorizer = new MockPolicyBasedAuthorizer(groups1, users1, policies1);
+ variableRegistry = new FileBasedVariableRegistry(nifiProperties.getVariableRegistryPropertiesPaths());
+
+ bulletinRepo = Mockito.mock(BulletinRepository.class);
+ controller = FlowController.createStandaloneInstance(flowFileEventRepo, nifiProperties, authorizer, auditService, encryptor, bulletinRepo, variableRegistry);
+ }
+
+ @After
+ public void cleanup() throws Exception {
+ controller.shutdown(true);
+ FileUtils.deleteDirectory(new File("./target/flowcontrollertest"));
+ }
+
+ @Test
+ public void testGetPropertyReportingTask() throws ReportingTaskInstantiationException {
+ ReportingTaskNode reportingTask = controller.createReportingTask(DummyScheduledReportingTask.class.getName(), systemBundle.getBundleDetails().getCoordinate());
+ PropertyDescriptor TEST_WITHOUT_DEFAULT_VALUE = new PropertyDescriptor.Builder().name("Test without default value").build();
+ PropertyDescriptor TEST_WITH_DEFAULT_VALUE = new PropertyDescriptor.Builder().name("Test with default value").build();
+
+ PropertyValue defaultValue = reportingTask.getReportingContext().getProperty(TEST_WITH_DEFAULT_VALUE);
+ assertEquals("nifi", defaultValue.getValue());
+
+ PropertyValue value = reportingTask.getReportingContext().getProperty(TEST_WITHOUT_DEFAULT_VALUE);
+ assertEquals(null, value.getValue());
+ }
+
+}