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 2016/11/16 15:13:26 UTC
nifi git commit: NIFI-3022: - Returning the appropriate authorizable
when accessing provenance events for a manual DROP event by emptying a queue.
- Populating the component details of a provenance event when the source is a
connection.
Repository: nifi
Updated Branches:
refs/heads/master 45a5f5295 -> 49afacc3a
NIFI-3022:
- Returning the appropriate authorizable when accessing provenance events for a manual DROP event by emptying a queue.
- Populating the component details of a provenance event when the source is a connection.
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/49afacc3
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/49afacc3
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/49afacc3
Branch: refs/heads/master
Commit: 49afacc3abf810aafbd10398ea243fce1da7cc4e
Parents: 45a5f52
Author: Matt Gilman <ma...@gmail.com>
Authored: Tue Nov 15 15:32:53 2016 -0500
Committer: Mark Payne <ma...@hotmail.com>
Committed: Wed Nov 16 10:13:18 2016 -0500
----------------------------------------------------------------------
.../apache/nifi/controller/FlowController.java | 21 ++++++++++++++------
.../nifi/web/controller/ControllerFacade.java | 18 ++++++++++++++++-
2 files changed, 32 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/49afacc3/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
index faa4230..48b9c14 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
@@ -4010,19 +4010,28 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
final String rootGroupId = getRootGroupId();
// Provenance Events are generated only by connectable components, with the exception of DOWNLOAD events,
- // which have the root process group's identifier assigned as the component ID. So, we check if the component ID
- // is set to the root group and otherwise assume that the ID is that of a component.
+ // which have the root process group's identifier assigned as the component ID, and DROP events, which
+ // could have the connection identifier assigned as the component ID. So, we check if the component ID
+ // is set to the root group and otherwise assume that the ID is that of a connectable or connection.
final DataAuthorizable authorizable;
if (rootGroupId.equals(componentId)) {
authorizable = new DataAuthorizable(getRootGroup());
} else {
+ // check if the component is a connectable, this should be the case most often
final Connectable connectable = getRootGroup().findConnectable(componentId);
-
if (connectable == null) {
- throw new ResourceNotFoundException("The component that generated this event is no longer part of the data flow.");
- }
+ // if the component id is not a connectable then consider a connection
+ final Connection connection = getRootGroup().findConnection(componentId);
- authorizable = new DataAuthorizable(connectable);
+ if (connection == null) {
+ throw new ResourceNotFoundException("The component that generated this event is no longer part of the data flow.");
+ } else {
+ // authorizable for connection data is associated with the source connectable
+ authorizable = new DataAuthorizable(connection.getSource());
+ }
+ } else {
+ authorizable = new DataAuthorizable(connectable);
+ }
}
return authorizable;
http://git-wip-us.apache.org/repos/asf/nifi/blob/49afacc3/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.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/ControllerFacade.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java
index 339e3c2..41eaae3 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java
@@ -81,8 +81,8 @@ import org.apache.nifi.provenance.search.SearchableField;
import org.apache.nifi.registry.VariableRegistry;
import org.apache.nifi.remote.RootGroupPort;
import org.apache.nifi.reporting.ReportingTask;
-import org.apache.nifi.scheduling.SchedulingStrategy;
import org.apache.nifi.scheduling.ExecutionNode;
+import org.apache.nifi.scheduling.SchedulingStrategy;
import org.apache.nifi.search.SearchContext;
import org.apache.nifi.search.SearchResult;
import org.apache.nifi.search.Searchable;
@@ -132,6 +132,7 @@ import java.util.TreeSet;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
+import java.util.stream.Collectors;
import static org.apache.nifi.controller.FlowController.ROOT_GROUP_ID_ALIAS;
@@ -1434,6 +1435,21 @@ public class ControllerFacade implements Authorizable {
if (connectable != null) {
dto.setGroupId(connectable.getProcessGroup().getIdentifier());
dto.setComponentName(connectable.getName());
+ return;
+ }
+
+ final Connection connection = root.findConnection(dto.getComponentId());
+ if (connection != null) {
+ dto.setGroupId(connection.getProcessGroup().getIdentifier());
+
+ String name = connection.getName();
+ final Collection<Relationship> relationships = connection.getRelationships();
+ if (StringUtils.isBlank(name) && CollectionUtils.isNotEmpty(relationships)) {
+ name = StringUtils.join(relationships.stream().map(relationship -> relationship.getName()).collect(Collectors.toSet()), ", ");
+ }
+ dto.setComponentName(name);
+
+ return;
}
}