You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mc...@apache.org on 2016/04/29 22:32:23 UTC
[10/13] nifi git commit: NIFI-1554: - Populating component entities
in the REST API to decouple key fields from the configuration DTOs. - Added
initial support for components in UI when access isn't allowed. Formal
styling to come later.
http://git-wip-us.apache.org/repos/asf/nifi/blob/ff98d823/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
index 67f24e1..ba9d0ff 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
@@ -34,7 +34,6 @@ import org.apache.nifi.web.api.dto.CountersDTO;
import org.apache.nifi.web.api.dto.DocumentedTypeDTO;
import org.apache.nifi.web.api.dto.DropRequestDTO;
import org.apache.nifi.web.api.dto.FlowFileDTO;
-import org.apache.nifi.web.api.dto.FlowSnippetDTO;
import org.apache.nifi.web.api.dto.FunnelDTO;
import org.apache.nifi.web.api.dto.LabelDTO;
import org.apache.nifi.web.api.dto.ListingRequestDTO;
@@ -54,6 +53,8 @@ import org.apache.nifi.web.api.dto.TemplateDTO;
import org.apache.nifi.web.api.dto.action.ActionDTO;
import org.apache.nifi.web.api.dto.action.HistoryDTO;
import org.apache.nifi.web.api.dto.action.HistoryQueryDTO;
+import org.apache.nifi.web.api.dto.flow.FlowDTO;
+import org.apache.nifi.web.api.dto.flow.ProcessGroupFlowDTO;
import org.apache.nifi.web.api.dto.provenance.ProvenanceDTO;
import org.apache.nifi.web.api.dto.provenance.ProvenanceEventDTO;
import org.apache.nifi.web.api.dto.provenance.ProvenanceOptionsDTO;
@@ -66,6 +67,13 @@ import org.apache.nifi.web.api.dto.status.ProcessGroupStatusDTO;
import org.apache.nifi.web.api.dto.status.ProcessorStatusDTO;
import org.apache.nifi.web.api.dto.status.RemoteProcessGroupStatusDTO;
import org.apache.nifi.web.api.dto.status.StatusHistoryDTO;
+import org.apache.nifi.web.api.entity.ConnectionEntity;
+import org.apache.nifi.web.api.entity.FunnelEntity;
+import org.apache.nifi.web.api.entity.LabelEntity;
+import org.apache.nifi.web.api.entity.PortEntity;
+import org.apache.nifi.web.api.entity.ProcessGroupEntity;
+import org.apache.nifi.web.api.entity.ProcessorEntity;
+import org.apache.nifi.web.api.entity.RemoteProcessGroupEntity;
import java.util.Date;
import java.util.List;
@@ -318,7 +326,7 @@ public interface NiFiServiceFacade {
* @param originY y
* @return snapshot
*/
- ConfigurationSnapshot<FlowSnippetDTO> createTemplateInstance(Revision revision, String groupId, Double originX, Double originY, String templateId);
+ ConfigurationSnapshot<FlowDTO> createTemplateInstance(Revision revision, String groupId, Double originX, Double originY, String templateId);
/**
* Gets the template with the specified id.
@@ -361,7 +369,7 @@ public interface NiFiServiceFacade {
* @param processorDTO The processor DTO
* @return The new processor DTO
*/
- ConfigurationSnapshot<ProcessorDTO> createProcessor(Revision revision, String groupId, ProcessorDTO processorDTO);
+ ProcessorEntity createProcessor(Revision revision, String groupId, ProcessorDTO processorDTO);
/**
* Gets the Processor transfer object for the specified id.
@@ -369,7 +377,7 @@ public interface NiFiServiceFacade {
* @param id Id of the processor to return
* @return The Processor transfer object
*/
- ProcessorDTO getProcessor(String id);
+ ProcessorEntity getProcessor(String id);
/**
* Gets the processor status.
@@ -402,7 +410,7 @@ public interface NiFiServiceFacade {
* @param groupId group
* @return List of all the Processor transfer object
*/
- Set<ProcessorDTO> getProcessors(String groupId);
+ Set<ProcessorEntity> getProcessors(String groupId);
/**
* Verifies the specified processor can be updated.
@@ -418,7 +426,7 @@ public interface NiFiServiceFacade {
* @param processorDTO The processorDTO
* @return The updated processor
*/
- ConfigurationSnapshot<ProcessorDTO> updateProcessor(Revision revision, ProcessorDTO processorDTO);
+ UpdateResult<ProcessorEntity> updateProcessor(Revision revision, ProcessorDTO processorDTO);
/**
* Verifies the specified processor can be removed.
@@ -434,7 +442,7 @@ public interface NiFiServiceFacade {
* @param processorId The processor id to delete
* @return snapshot
*/
- ConfigurationSnapshot<Void> deleteProcessor(Revision revision, String processorId);
+ ProcessorEntity deleteProcessor(Revision revision, String processorId);
// ----------------------------------------
// Connections methods
@@ -446,7 +454,7 @@ public interface NiFiServiceFacade {
* @param groupId group
* @return The Connection transfer objects
*/
- Set<ConnectionDTO> getConnections(String groupId);
+ Set<ConnectionEntity> getConnections(String groupId);
/**
* Gets the specified Connection transfer object.
@@ -454,7 +462,7 @@ public interface NiFiServiceFacade {
* @param connectionId The ID of the connection
* @return The Connection transfer object
*/
- ConnectionDTO getConnection(String connectionId);
+ ConnectionEntity getConnection(String connectionId);
/**
* Gets the status of the specified connection.
@@ -480,7 +488,7 @@ public interface NiFiServiceFacade {
* @param connectionDTO The Connection DTO
* @return The Connection DTO
*/
- ConfigurationSnapshot<ConnectionDTO> createConnection(Revision revision, String groupId, ConnectionDTO connectionDTO);
+ ConnectionEntity createConnection(Revision revision, String groupId, ConnectionDTO connectionDTO);
/**
* Determines if this connection can be listed.
@@ -511,7 +519,7 @@ public interface NiFiServiceFacade {
* @param connectionDTO The Connection DTO
* @return The Connection DTO
*/
- ConfigurationSnapshot<ConnectionDTO> updateConnection(Revision revision, ConnectionDTO connectionDTO);
+ UpdateResult<ConnectionEntity> updateConnection(Revision revision, ConnectionDTO connectionDTO);
/**
* Determines if this connection can be removed.
@@ -527,7 +535,7 @@ public interface NiFiServiceFacade {
* @param connectionId The ID of the connection
* @return snapshot
*/
- ConfigurationSnapshot<Void> deleteConnection(Revision revision, String connectionId);
+ ConnectionEntity deleteConnection(Revision revision, String connectionId);
/**
* Creates a new flow file drop request.
@@ -603,7 +611,7 @@ public interface NiFiServiceFacade {
* @param inputPortDTO The input PortDTO
* @return snapshot
*/
- ConfigurationSnapshot<PortDTO> createInputPort(Revision revision, String groupId, PortDTO inputPortDTO);
+ PortEntity createInputPort(Revision revision, String groupId, PortDTO inputPortDTO);
/**
* Gets an input port.
@@ -611,7 +619,7 @@ public interface NiFiServiceFacade {
* @param inputPortId The input port id
* @return port
*/
- PortDTO getInputPort(String inputPortId);
+ PortEntity getInputPort(String inputPortId);
/**
* Gets all input ports in a given group.
@@ -619,7 +627,7 @@ public interface NiFiServiceFacade {
* @param groupId The id of the group
* @return port
*/
- Set<PortDTO> getInputPorts(String groupId);
+ Set<PortEntity> getInputPorts(String groupId);
/**
* Gets the input port status.
@@ -643,7 +651,7 @@ public interface NiFiServiceFacade {
* @param inputPortDTO The input PortDTO
* @return snapshort
*/
- ConfigurationSnapshot<PortDTO> updateInputPort(Revision revision, PortDTO inputPortDTO);
+ UpdateResult<PortEntity> updateInputPort(Revision revision, PortDTO inputPortDTO);
/**
* Determines if the input port could be deleted.
@@ -659,7 +667,7 @@ public interface NiFiServiceFacade {
* @param inputPortId The id of the input port
* @return snapshot
*/
- ConfigurationSnapshot<Void> deleteInputPort(Revision revision, String inputPortId);
+ PortEntity deleteInputPort(Revision revision, String inputPortId);
// ----------------------------------------
// OutputPort methods
@@ -672,7 +680,7 @@ public interface NiFiServiceFacade {
* @param outputPortDTO The output PortDTO
* @return snapshot
*/
- ConfigurationSnapshot<PortDTO> createOutputPort(Revision revision, String groupId, PortDTO outputPortDTO);
+ PortEntity createOutputPort(Revision revision, String groupId, PortDTO outputPortDTO);
/**
* Gets an output port.
@@ -680,7 +688,7 @@ public interface NiFiServiceFacade {
* @param outputPortId The output port id
* @return port
*/
- PortDTO getOutputPort(String outputPortId);
+ PortEntity getOutputPort(String outputPortId);
/**
* Gets all output ports in a given group.
@@ -688,7 +696,7 @@ public interface NiFiServiceFacade {
* @param groupId The id of the group
* @return ports
*/
- Set<PortDTO> getOutputPorts(String groupId);
+ Set<PortEntity> getOutputPorts(String groupId);
/**
* Gets the output port status.
@@ -712,7 +720,7 @@ public interface NiFiServiceFacade {
* @param outputPortDTO The output PortDTO
* @return snapshot
*/
- ConfigurationSnapshot<PortDTO> updateOutputPort(Revision revision, PortDTO outputPortDTO);
+ UpdateResult<PortEntity> updateOutputPort(Revision revision, PortDTO outputPortDTO);
/**
* Determines if the output port could be deleted.
@@ -728,7 +736,19 @@ public interface NiFiServiceFacade {
* @param outputPortId The id of the output port
* @return snapshot
*/
- ConfigurationSnapshot<Void> deleteOutputPort(Revision revision, String outputPortId);
+ PortEntity deleteOutputPort(Revision revision, String outputPortId);
+
+ // ----------------------------------------
+ // Flow methods
+ // ----------------------------------------
+ /**
+ * Returns the flow.
+ *
+ * @param groupId group
+ * @param recurse recurse
+ * @return the flow
+ */
+ ConfigurationSnapshot<ProcessGroupFlowDTO> getProcessGroupFlow(String groupId, boolean recurse);
// ----------------------------------------
// ProcessGroup methods
@@ -741,16 +761,15 @@ public interface NiFiServiceFacade {
* @param processGroupDTO The ProcessGroupDTO
* @return snapshot
*/
- ConfigurationSnapshot<ProcessGroupDTO> createProcessGroup(String parentGroupId, Revision revision, ProcessGroupDTO processGroupDTO);
+ ProcessGroupEntity createProcessGroup(String parentGroupId, Revision revision, ProcessGroupDTO processGroupDTO);
/**
* Returns the process group.
*
* @param groupId group
- * @param recurse recurse
* @return ProcessGroup transfer object
*/
- ConfigurationSnapshot<ProcessGroupDTO> getProcessGroup(String groupId, boolean recurse);
+ ProcessGroupEntity getProcessGroup(String groupId);
/**
* Gets all process groups in the specified parent group.
@@ -758,7 +777,7 @@ public interface NiFiServiceFacade {
* @param parentGroupId The id of the parent group
* @return process group
*/
- Set<ProcessGroupDTO> getProcessGroups(String parentGroupId);
+ Set<ProcessGroupEntity> getProcessGroups(String parentGroupId);
/**
* Verifies the specified process group can be updated.
@@ -774,7 +793,7 @@ public interface NiFiServiceFacade {
* @param processGroupDTO The ProcessGroupDTO
* @return snapshot
*/
- ConfigurationSnapshot<ProcessGroupDTO> updateProcessGroup(Revision revision, ProcessGroupDTO processGroupDTO);
+ UpdateResult<ProcessGroupEntity> updateProcessGroup(Revision revision, ProcessGroupDTO processGroupDTO);
/**
* Verifies the specified process group can be removed.
@@ -790,7 +809,7 @@ public interface NiFiServiceFacade {
* @param groupId The id of the process group
* @return snapshot
*/
- ConfigurationSnapshot<Void> deleteProcessGroup(Revision revision, String groupId);
+ ProcessGroupEntity deleteProcessGroup(Revision revision, String groupId);
// ----------------------------------------
// RemoteProcessGroup methods
@@ -803,7 +822,7 @@ public interface NiFiServiceFacade {
* @param remoteProcessGroupDTO The RemoteProcessGroupDTO
* @return snapshot
*/
- ConfigurationSnapshot<RemoteProcessGroupDTO> createRemoteProcessGroup(Revision revision, String groupId, RemoteProcessGroupDTO remoteProcessGroupDTO);
+ RemoteProcessGroupEntity createRemoteProcessGroup(Revision revision, String groupId, RemoteProcessGroupDTO remoteProcessGroupDTO);
/**
* Gets a remote process group.
@@ -811,7 +830,7 @@ public interface NiFiServiceFacade {
* @param remoteProcessGroupId The id of the remote process group
* @return group
*/
- RemoteProcessGroupDTO getRemoteProcessGroup(String remoteProcessGroupId);
+ RemoteProcessGroupEntity getRemoteProcessGroup(String remoteProcessGroupId);
/**
* Gets all remote process groups in the a given parent group.
@@ -819,7 +838,7 @@ public interface NiFiServiceFacade {
* @param groupId The id of the parent group
* @return group
*/
- Set<RemoteProcessGroupDTO> getRemoteProcessGroups(String groupId);
+ Set<RemoteProcessGroupEntity> getRemoteProcessGroups(String groupId);
/**
* Gets the remote process group status.
@@ -867,7 +886,7 @@ public interface NiFiServiceFacade {
* @param remoteProcessGroupDTO The RemoteProcessGroupDTO
* @return snapshot
*/
- ConfigurationSnapshot<RemoteProcessGroupDTO> updateRemoteProcessGroup(Revision revision, RemoteProcessGroupDTO remoteProcessGroupDTO);
+ UpdateResult<RemoteProcessGroupEntity> updateRemoteProcessGroup(Revision revision, RemoteProcessGroupDTO remoteProcessGroupDTO);
/**
* Updates the specified remote process groups input port.
@@ -903,7 +922,7 @@ public interface NiFiServiceFacade {
* @param remoteProcessGroupId The id of the remote process group
* @return snapshot
*/
- ConfigurationSnapshot<Void> deleteRemoteProcessGroup(Revision revision, String remoteProcessGroupId);
+ RemoteProcessGroupEntity deleteRemoteProcessGroup(Revision revision, String remoteProcessGroupId);
// ----------------------------------------
// Funnel methods
@@ -916,7 +935,7 @@ public interface NiFiServiceFacade {
* @param funnelDTO funnel
* @return The funnel DTO
*/
- ConfigurationSnapshot<FunnelDTO> createFunnel(Revision revision, String groupId, FunnelDTO funnelDTO);
+ FunnelEntity createFunnel(Revision revision, String groupId, FunnelDTO funnelDTO);
/**
* Gets the specified funnel.
@@ -924,7 +943,7 @@ public interface NiFiServiceFacade {
* @param funnelId The funnel id
* @return The funnel transfer object
*/
- FunnelDTO getFunnel(String funnelId);
+ FunnelEntity getFunnel(String funnelId);
/**
* Gets all of the funnels.
@@ -932,7 +951,7 @@ public interface NiFiServiceFacade {
* @param groupId group
* @return The funnel transfer objects
*/
- Set<FunnelDTO> getFunnels(String groupId);
+ Set<FunnelEntity> getFunnels(String groupId);
/**
* Updates the specified label.
@@ -941,7 +960,7 @@ public interface NiFiServiceFacade {
* @param funnelDTO The funnel DTO
* @return The funnel DTO
*/
- ConfigurationSnapshot<FunnelDTO> updateFunnel(Revision revision, FunnelDTO funnelDTO);
+ UpdateResult<FunnelEntity> updateFunnel(Revision revision, FunnelDTO funnelDTO);
/**
* Verifies the specified funnel can be deleted.
@@ -957,7 +976,7 @@ public interface NiFiServiceFacade {
* @param funnelId The funnel id
* @return snapshot
*/
- ConfigurationSnapshot<Void> deleteFunnel(Revision revision, String funnelId);
+ FunnelEntity deleteFunnel(Revision revision, String funnelId);
// ----------------------------------------
// Component state methods
@@ -1046,7 +1065,7 @@ public interface NiFiServiceFacade {
* @param labelDTO The label DTO
* @return The label DTO
*/
- ConfigurationSnapshot<LabelDTO> createLabel(Revision revision, String groupId, LabelDTO labelDTO);
+ LabelEntity createLabel(Revision revision, String groupId, LabelDTO labelDTO);
/**
* Gets the specified label.
@@ -1054,7 +1073,7 @@ public interface NiFiServiceFacade {
* @param labelId The label id
* @return The label transfer object
*/
- LabelDTO getLabel(String labelId);
+ LabelEntity getLabel(String labelId);
/**
* Gets all of the labels.
@@ -1062,7 +1081,7 @@ public interface NiFiServiceFacade {
* @param groupId group
* @return The label transfer objects
*/
- Set<LabelDTO> getLabels(String groupId);
+ Set<LabelEntity> getLabels(String groupId);
/**
* Updates the specified label.
@@ -1071,7 +1090,7 @@ public interface NiFiServiceFacade {
* @param labelDTO The label DTO
* @return The label DTO
*/
- ConfigurationSnapshot<LabelDTO> updateLabel(Revision revision, LabelDTO labelDTO);
+ UpdateResult<LabelEntity> updateLabel(Revision revision, LabelDTO labelDTO);
/**
* Deletes the specified label.
@@ -1080,7 +1099,7 @@ public interface NiFiServiceFacade {
* @param labelId The label id
* @return snapshot
*/
- ConfigurationSnapshot<Void> deleteLabel(Revision revision, String labelId);
+ LabelEntity deleteLabel(Revision revision, String labelId);
// ----------------------------------------
// Controller Services methods
@@ -1294,7 +1313,7 @@ public interface NiFiServiceFacade {
* @param originY y
* @return snapshot
*/
- ConfigurationSnapshot<FlowSnippetDTO> copySnippet(Revision revision, String groupId, String snippetId, Double originX, Double originY);
+ ConfigurationSnapshot<FlowDTO> copySnippet(Revision revision, String groupId, String snippetId, Double originX, Double originY);
/**
* Creates a new snippet.
http://git-wip-us.apache.org/repos/asf/nifi/blob/ff98d823/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiWebApiConfiguration.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiWebApiConfiguration.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiWebApiConfiguration.java
index 58b0af8..51fa7a2 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiWebApiConfiguration.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiWebApiConfiguration.java
@@ -27,6 +27,7 @@ import org.springframework.context.annotation.ImportResource;
@Import({NiFiWebApiSecurityConfiguration.class})
@ImportResource({"classpath:nifi-context.xml",
"classpath:nifi-administration-context.xml",
+ "classpath:nifi-framework-authorization-context.xml",
"classpath:nifi-cluster-manager-context.xml",
"classpath:nifi-cluster-protocol-context.xml",
"classpath:nifi-web-security-context.xml",
http://git-wip-us.apache.org/repos/asf/nifi/blob/ff98d823/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiContentAccess.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiContentAccess.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiContentAccess.java
index 66f1546..36db1d9 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiContentAccess.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiContentAccess.java
@@ -20,6 +20,8 @@ import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.ClientResponse.Status;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import org.apache.commons.lang3.StringUtils;
+import org.apache.nifi.authorization.AccessDeniedException;
+import org.apache.nifi.authorization.user.NiFiUserDetails;
import org.apache.nifi.cluster.manager.NodeResponse;
import org.apache.nifi.cluster.manager.exception.UnknownNodeException;
import org.apache.nifi.cluster.manager.impl.WebClusterManager;
@@ -27,11 +29,9 @@ import org.apache.nifi.cluster.node.Node;
import org.apache.nifi.cluster.protocol.NodeIdentifier;
import org.apache.nifi.controller.repository.claim.ContentDirection;
import org.apache.nifi.util.NiFiProperties;
-import org.apache.nifi.web.security.user.NiFiUserDetails;
import org.apache.nifi.web.util.WebUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
http://git-wip-us.apache.org/repos/asf/nifi/blob/ff98d823/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
index dae1ab6..b85c15d 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
@@ -24,7 +24,12 @@ import org.apache.nifi.action.Operation;
import org.apache.nifi.action.details.FlowChangePurgeDetails;
import org.apache.nifi.admin.service.AuditService;
import org.apache.nifi.admin.service.KeyService;
+import org.apache.nifi.authorization.Authorizer;
+import org.apache.nifi.authorization.RequestAction;
import org.apache.nifi.authorization.Resource;
+import org.apache.nifi.authorization.resource.Authorizable;
+import org.apache.nifi.authorization.user.NiFiUser;
+import org.apache.nifi.authorization.user.NiFiUserUtils;
import org.apache.nifi.cluster.context.ClusterContext;
import org.apache.nifi.cluster.context.ClusterContextThreadLocal;
import org.apache.nifi.cluster.coordination.heartbeat.NodeHeartbeat;
@@ -62,13 +67,14 @@ import org.apache.nifi.remote.RootGroupPort;
import org.apache.nifi.reporting.Bulletin;
import org.apache.nifi.reporting.BulletinQuery;
import org.apache.nifi.reporting.BulletinRepository;
-import org.apache.nifi.user.NiFiUser;
import org.apache.nifi.util.FormatUtils;
import org.apache.nifi.util.NiFiProperties;
+import org.apache.nifi.web.api.dto.AccessPolicyDTO;
import org.apache.nifi.web.api.dto.BulletinBoardDTO;
import org.apache.nifi.web.api.dto.BulletinDTO;
import org.apache.nifi.web.api.dto.BulletinQueryDTO;
import org.apache.nifi.web.api.dto.ClusterDTO;
+import org.apache.nifi.web.api.dto.ComponentDTO;
import org.apache.nifi.web.api.dto.ComponentHistoryDTO;
import org.apache.nifi.web.api.dto.ComponentStateDTO;
import org.apache.nifi.web.api.dto.ConnectionDTO;
@@ -82,12 +88,12 @@ import org.apache.nifi.web.api.dto.CountersSnapshotDTO;
import org.apache.nifi.web.api.dto.DocumentedTypeDTO;
import org.apache.nifi.web.api.dto.DropRequestDTO;
import org.apache.nifi.web.api.dto.DtoFactory;
+import org.apache.nifi.web.api.dto.EntityFactory;
import org.apache.nifi.web.api.dto.FlowFileDTO;
import org.apache.nifi.web.api.dto.FlowSnippetDTO;
import org.apache.nifi.web.api.dto.FunnelDTO;
import org.apache.nifi.web.api.dto.LabelDTO;
import org.apache.nifi.web.api.dto.ListingRequestDTO;
-import org.apache.nifi.web.api.dto.NiFiComponentDTO;
import org.apache.nifi.web.api.dto.NodeDTO;
import org.apache.nifi.web.api.dto.PortDTO;
import org.apache.nifi.web.api.dto.PreviousValueDTO;
@@ -107,6 +113,8 @@ import org.apache.nifi.web.api.dto.TemplateDTO;
import org.apache.nifi.web.api.dto.action.ActionDTO;
import org.apache.nifi.web.api.dto.action.HistoryDTO;
import org.apache.nifi.web.api.dto.action.HistoryQueryDTO;
+import org.apache.nifi.web.api.dto.flow.FlowDTO;
+import org.apache.nifi.web.api.dto.flow.ProcessGroupFlowDTO;
import org.apache.nifi.web.api.dto.provenance.ProvenanceDTO;
import org.apache.nifi.web.api.dto.provenance.ProvenanceEventDTO;
import org.apache.nifi.web.api.dto.provenance.ProvenanceOptionsDTO;
@@ -119,6 +127,13 @@ import org.apache.nifi.web.api.dto.status.ProcessGroupStatusDTO;
import org.apache.nifi.web.api.dto.status.ProcessorStatusDTO;
import org.apache.nifi.web.api.dto.status.RemoteProcessGroupStatusDTO;
import org.apache.nifi.web.api.dto.status.StatusHistoryDTO;
+import org.apache.nifi.web.api.entity.ConnectionEntity;
+import org.apache.nifi.web.api.entity.FunnelEntity;
+import org.apache.nifi.web.api.entity.LabelEntity;
+import org.apache.nifi.web.api.entity.PortEntity;
+import org.apache.nifi.web.api.entity.ProcessGroupEntity;
+import org.apache.nifi.web.api.entity.ProcessorEntity;
+import org.apache.nifi.web.api.entity.RemoteProcessGroupEntity;
import org.apache.nifi.web.controller.ControllerFacade;
import org.apache.nifi.web.dao.ConnectionDAO;
import org.apache.nifi.web.dao.ControllerServiceDAO;
@@ -131,7 +146,6 @@ import org.apache.nifi.web.dao.RemoteProcessGroupDAO;
import org.apache.nifi.web.dao.ReportingTaskDAO;
import org.apache.nifi.web.dao.SnippetDAO;
import org.apache.nifi.web.dao.TemplateDAO;
-import org.apache.nifi.web.security.user.NiFiUserUtils;
import org.apache.nifi.web.util.SnippetUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -192,6 +206,9 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
// properties
private NiFiProperties properties;
private DtoFactory dtoFactory;
+ private EntityFactory entityFactory;
+
+ private Authorizer authorizer;
// -----------------------------------------
// Verification Operations
@@ -345,43 +362,73 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
// Write Operations
// -----------------------------------------
@Override
- public ConfigurationSnapshot<ConnectionDTO> updateConnection(final Revision revision, final ConnectionDTO connectionDTO) {
+ public UpdateResult<ConnectionEntity> updateConnection(final Revision revision, final ConnectionDTO connectionDTO) {
// if connection does not exist, then create new connection
if (connectionDAO.hasConnection(connectionDTO.getId()) == false) {
- return createConnection(revision, connectionDTO.getParentGroupId(), connectionDTO);
+ return new UpdateResult<>(createConnection(revision, connectionDTO.getParentGroupId(), connectionDTO), true);
}
- return updateComponent(revision, () -> connectionDAO.updateConnection(connectionDTO), connection -> dtoFactory.createConnectionDto(connection));
+ final Connection connectionNode = connectionDAO.getConnection(connectionDTO.getId());
+ final ConfigurationSnapshot<ConnectionDTO> snapshot = updateComponent(
+ revision,
+ connectionNode,
+ () -> connectionDAO.updateConnection(connectionDTO),
+ connection -> dtoFactory.createConnectionDto(connection));
+
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(connectionNode);
+ return new UpdateResult<>(entityFactory.createConnectionEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy), false);
}
@Override
- public ConfigurationSnapshot<ProcessorDTO> updateProcessor(final Revision revision, final ProcessorDTO processorDTO) {
+ public UpdateResult<ProcessorEntity> updateProcessor(final Revision revision, final ProcessorDTO processorDTO) {
// if processor does not exist, then create new processor
if (processorDAO.hasProcessor(processorDTO.getId()) == false) {
- return createProcessor(revision, processorDTO.getParentGroupId(), processorDTO);
+ return new UpdateResult<>(createProcessor(revision, processorDTO.getParentGroupId(), processorDTO), true);
}
- return updateComponent(revision, () -> processorDAO.updateProcessor(processorDTO), proc -> dtoFactory.createProcessorDto(proc));
+ // get the component, ensure we have access to it, and perform the update request
+ final ProcessorNode processorNode = processorDAO.getProcessor(processorDTO.getId());
+ final ConfigurationSnapshot<ProcessorDTO> snapshot = updateComponent(revision,
+ processorNode,
+ () -> processorDAO.updateProcessor(processorDTO),
+ proc -> dtoFactory.createProcessorDto(proc));
+
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(processorNode);
+ return new UpdateResult<>(entityFactory.createProcessorEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy), false);
}
@Override
- public ConfigurationSnapshot<LabelDTO> updateLabel(final Revision revision, final LabelDTO labelDTO) {
+ public UpdateResult<LabelEntity> updateLabel(final Revision revision, final LabelDTO labelDTO) {
// if label does not exist, then create new label
if (labelDAO.hasLabel(labelDTO.getId()) == false) {
- return createLabel(revision, labelDTO.getParentGroupId(), labelDTO);
+ return new UpdateResult<>(createLabel(revision, labelDTO.getParentGroupId(), labelDTO), false);
}
- return updateComponent(revision, () -> labelDAO.updateLabel(labelDTO), label -> dtoFactory.createLabelDto(label));
+ final Label labelNode = labelDAO.getLabel(labelDTO.getId());
+ final ConfigurationSnapshot<LabelDTO> snapshot = updateComponent(revision,
+ labelNode,
+ () -> labelDAO.updateLabel(labelDTO),
+ label -> dtoFactory.createLabelDto(label));
+
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(labelNode);
+ return new UpdateResult<>(entityFactory.createLabelEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy), false);
}
@Override
- public ConfigurationSnapshot<FunnelDTO> updateFunnel(final Revision revision, final FunnelDTO funnelDTO) {
+ public UpdateResult<FunnelEntity> updateFunnel(final Revision revision, final FunnelDTO funnelDTO) {
// if label does not exist, then create new label
if (funnelDAO.hasFunnel(funnelDTO.getId()) == false) {
- return createFunnel(revision, funnelDTO.getParentGroupId(), funnelDTO);
+ return new UpdateResult<>(createFunnel(revision, funnelDTO.getParentGroupId(), funnelDTO), true);
}
- return updateComponent(revision, () -> funnelDAO.updateFunnel(funnelDTO), funnel -> dtoFactory.createFunnelDto(funnel));
+ final Funnel funnelNode = funnelDAO.getFunnel(funnelDTO.getId());
+ final ConfigurationSnapshot<FunnelDTO> snapshot = updateComponent(revision,
+ funnelNode,
+ () -> funnelDAO.updateFunnel(funnelDTO),
+ funnel -> dtoFactory.createFunnelDto(funnel));
+
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(funnelNode);
+ return new UpdateResult<>(entityFactory.createFunnelEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy), false);
}
@@ -398,10 +445,18 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
*
* @return A ConfigurationSnapshot that represents the new configuration
*/
- private <D, C> ConfigurationSnapshot<D> updateComponent(final Revision revision, final Supplier<C> daoUpdate, final Function<C, D> dtoCreation) {
+ private <D, C> ConfigurationSnapshot<D> updateComponent(final Revision revision, final Authorizable authorizable, final Supplier<C> daoUpdate, final Function<C, D>
+ dtoCreation) {
return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<D>() {
@Override
public ConfigurationResult<D> execute() {
+ // ensure write access to the flow
+ authorizable.authorize(authorizer, RequestAction.WRITE);
+
+ // also ensure read access to the flow as the component must be read in order to generate a response
+ authorizable.authorize(authorizer, RequestAction.READ);
+
+ // get the updated component
final C component = daoUpdate.get();
// save updated controller
@@ -439,52 +494,77 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
return createSnippet(revision, snippetDto);
}
- return updateComponent(revision,
+ final ProcessGroup processGroup = processGroupDAO.getProcessGroup(snippetDto.getParentGroupId());
+ return updateComponent(
+ revision,
+ processGroup,
() -> snippetDAO.updateSnippet(snippetDto),
snippet -> {
- final SnippetDTO responseSnippetDto = dtoFactory.createSnippetDto(snippet);
- responseSnippetDto.setContents(snippetUtils.populateFlowSnippet(snippet, false, false));
- return responseSnippetDto;
+ return dtoFactory.createSnippetDto(snippet);
});
}
@Override
- public ConfigurationSnapshot<PortDTO> updateInputPort(final Revision revision, final PortDTO inputPortDTO) {
+ public UpdateResult<PortEntity> updateInputPort(final Revision revision, final PortDTO inputPortDTO) {
// if input port does not exist, then create new input port
if (inputPortDAO.hasPort(inputPortDTO.getId()) == false) {
- return createInputPort(revision, inputPortDTO.getParentGroupId(), inputPortDTO);
+ return new UpdateResult<>(createInputPort(revision, inputPortDTO.getParentGroupId(), inputPortDTO), true);
}
- return updateComponent(revision, () -> inputPortDAO.updatePort(inputPortDTO), port -> dtoFactory.createPortDto(port));
+ final Port inputPortNode = inputPortDAO.getPort(inputPortDTO.getId());
+ final ConfigurationSnapshot<PortDTO> snapshot = updateComponent(revision,
+ inputPortNode,
+ () -> inputPortDAO.updatePort(inputPortDTO),
+ port -> dtoFactory.createPortDto(port));
+
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(inputPortNode);
+ return new UpdateResult<>(entityFactory.createPortEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy), false);
}
@Override
- public ConfigurationSnapshot<PortDTO> updateOutputPort(final Revision revision, final PortDTO outputPortDTO) {
+ public UpdateResult<PortEntity> updateOutputPort(final Revision revision, final PortDTO outputPortDTO) {
// if output port does not exist, then create new output port
if (outputPortDAO.hasPort(outputPortDTO.getId()) == false) {
- return createOutputPort(revision, outputPortDTO.getParentGroupId(), outputPortDTO);
+ return new UpdateResult<>(createOutputPort(revision, outputPortDTO.getParentGroupId(), outputPortDTO), true);
}
- return updateComponent(revision, () -> outputPortDAO.updatePort(outputPortDTO), port -> dtoFactory.createPortDto(port));
+ final Port outputPortNode = outputPortDAO.getPort(outputPortDTO.getId());
+ final ConfigurationSnapshot<PortDTO> snapshot = updateComponent(revision,
+ outputPortNode,
+ () -> outputPortDAO.updatePort(outputPortDTO),
+ port -> dtoFactory.createPortDto(port));
+
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(outputPortNode);
+ return new UpdateResult<>(entityFactory.createPortEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy), false);
}
@Override
- public ConfigurationSnapshot<RemoteProcessGroupDTO> updateRemoteProcessGroup(final Revision revision, final RemoteProcessGroupDTO remoteProcessGroupDTO) {
+ public UpdateResult<RemoteProcessGroupEntity> updateRemoteProcessGroup(final Revision revision, final RemoteProcessGroupDTO remoteProcessGroupDTO) {
// if controller reference does not exist, then create new controller reference
if (remoteProcessGroupDAO.hasRemoteProcessGroup(remoteProcessGroupDTO.getId()) == false) {
- return createRemoteProcessGroup(revision, remoteProcessGroupDTO.getParentGroupId(), remoteProcessGroupDTO);
+ return new UpdateResult<>(createRemoteProcessGroup(revision, remoteProcessGroupDTO.getParentGroupId(), remoteProcessGroupDTO), true);
}
- return updateComponent(revision,
+ final RemoteProcessGroup remoteProcessGroupNode = remoteProcessGroupDAO.getRemoteProcessGroup(remoteProcessGroupDTO.getId());
+ final ConfigurationSnapshot<RemoteProcessGroupDTO> snapshot = updateComponent(
+ revision,
+ remoteProcessGroupNode,
() -> remoteProcessGroupDAO.updateRemoteProcessGroup(remoteProcessGroupDTO),
remoteProcessGroup -> dtoFactory.createRemoteProcessGroupDto(remoteProcessGroup));
+
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(remoteProcessGroupNode);
+ final RevisionDTO updateRevision = dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId());
+ return new UpdateResult<>(entityFactory.createRemoteProcessGroupEntity(snapshot.getConfiguration(), updateRevision, accessPolicy), false);
}
@Override
public ConfigurationSnapshot<RemoteProcessGroupPortDTO> updateRemoteProcessGroupInputPort(
final Revision revision, final String remoteProcessGroupId, final RemoteProcessGroupPortDTO remoteProcessGroupPortDTO) {
- return updateComponent(revision,
+ final RemoteProcessGroup remoteProcessGroupNode = remoteProcessGroupDAO.getRemoteProcessGroup(remoteProcessGroupPortDTO.getGroupId());
+ return updateComponent(
+ revision,
+ remoteProcessGroupNode,
() -> remoteProcessGroupDAO.updateRemoteProcessGroupInputPort(remoteProcessGroupId, remoteProcessGroupPortDTO),
remoteGroupPort -> dtoFactory.createRemoteProcessGroupPortDto(remoteGroupPort));
}
@@ -493,28 +573,42 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
public ConfigurationSnapshot<RemoteProcessGroupPortDTO> updateRemoteProcessGroupOutputPort(
final Revision revision, final String remoteProcessGroupId, final RemoteProcessGroupPortDTO remoteProcessGroupPortDTO) {
- return updateComponent(revision,
+ final RemoteProcessGroup remoteProcessGroupNode = remoteProcessGroupDAO.getRemoteProcessGroup(remoteProcessGroupPortDTO.getGroupId());
+ return updateComponent(
+ revision,
+ remoteProcessGroupNode,
() -> remoteProcessGroupDAO.updateRemoteProcessGroupOutputPort(remoteProcessGroupId, remoteProcessGroupPortDTO),
remoteGroupPort -> dtoFactory.createRemoteProcessGroupPortDto(remoteGroupPort));
}
@Override
- public ConfigurationSnapshot<ProcessGroupDTO> updateProcessGroup(final Revision revision, final ProcessGroupDTO processGroupDTO) {
+ public UpdateResult<ProcessGroupEntity> updateProcessGroup(final Revision revision, final ProcessGroupDTO processGroupDTO) {
// if process group does not exist, then create new process group
if (processGroupDAO.hasProcessGroup(processGroupDTO.getId()) == false) {
if (processGroupDTO.getParentGroupId() == null) {
throw new IllegalArgumentException("Unable to create the specified process group since the parent group was not specified.");
} else {
- return createProcessGroup(processGroupDTO.getParentGroupId(), revision, processGroupDTO);
+ return new UpdateResult<>(createProcessGroup(processGroupDTO.getParentGroupId(), revision, processGroupDTO), true);
}
}
- return updateComponent(revision, () -> processGroupDAO.updateProcessGroup(processGroupDTO), processGroup -> dtoFactory.createProcessGroupDto(processGroup));
+ final ProcessGroup processGroupNode = processGroupDAO.getProcessGroup(processGroupDTO.getId());
+ final ConfigurationSnapshot<ProcessGroupDTO> snapshot = updateComponent(revision,
+ processGroupNode,
+ () -> processGroupDAO.updateProcessGroup(processGroupDTO),
+ processGroup -> dtoFactory.createProcessGroupDto(processGroup));
+
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(processGroupNode);
+ final RevisionDTO updatedRevision = dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId());
+ return new UpdateResult<>(entityFactory.createProcessGroupEntity(snapshot.getConfiguration(), updatedRevision, accessPolicy), false);
}
@Override
public ConfigurationSnapshot<ControllerConfigurationDTO> updateControllerConfiguration(final Revision revision, final ControllerConfigurationDTO controllerConfigurationDTO) {
- return updateComponent(revision,
+
+ return updateComponent(
+ revision,
+ controllerFacade,
() -> {
// update the controller configuration through the proxy
if (controllerConfigurationDTO.getName() != null) {
@@ -611,21 +705,33 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public ConfigurationSnapshot<Void> deleteConnection(final Revision revision, final String connectionId) {
- return deleteComponent(revision, () -> connectionDAO.deleteConnection(connectionId));
+ public ConnectionEntity deleteConnection(final Revision revision, final String connectionId) {
+ final Connection connection = connectionDAO.getConnection(connectionId);
+ final ConfigurationSnapshot<Void> snapshot = deleteComponent(
+ revision,
+ connection,
+ () -> connectionDAO.deleteConnection(connectionId));
+
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(connection);
+ return entityFactory.createConnectionEntity(null, dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy);
}
@Override
public DropRequestDTO deleteFlowFileDropRequest(String connectionId, String dropRequestId) {
+ final Connection connection = connectionDAO.getConnection(connectionId);
+ connection.authorize(authorizer, RequestAction.WRITE);
+
return dtoFactory.createDropRequestDTO(connectionDAO.deleteFlowFileDropRequest(connectionId, dropRequestId));
}
@Override
public ListingRequestDTO deleteFlowFileListingRequest(String connectionId, String listingRequestId) {
+ final Connection connection = connectionDAO.getConnection(connectionId);
+ connection.authorize(authorizer, RequestAction.WRITE);
+
final ListingRequestDTO listRequest = dtoFactory.createListingRequestDTO(connectionDAO.deleteFlowFileListingRequest(connectionId, listingRequestId));
// include whether the source and destination are running
- final Connection connection = connectionDAO.getConnection(connectionId);
if (connection.getSource() != null) {
listRequest.setSourceRunning(connection.getSource().isRunning());
}
@@ -637,18 +743,36 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public ConfigurationSnapshot<Void> deleteProcessor(final Revision revision, final String processorId) {
- return deleteComponent(revision, () -> processorDAO.deleteProcessor(processorId));
+ public ProcessorEntity deleteProcessor(final Revision revision, final String processorId) {
+ final ProcessorNode processor = processorDAO.getProcessor(processorId);
+ final ConfigurationSnapshot<Void> snapshot = deleteComponent(
+ revision,
+ processor,
+ () -> processorDAO.deleteProcessor(processorId));
+
+ return entityFactory.createProcessorEntity(null, dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), null);
}
@Override
- public ConfigurationSnapshot<Void> deleteLabel(final Revision revision, final String labelId) {
- return deleteComponent(revision, () -> labelDAO.deleteLabel(labelId));
+ public LabelEntity deleteLabel(final Revision revision, final String labelId) {
+ final Label label = labelDAO.getLabel(labelId);
+ final ConfigurationSnapshot<Void> snapshot = deleteComponent(
+ revision,
+ label,
+ () -> labelDAO.deleteLabel(labelId));
+
+ return entityFactory.createLabelEntity(null, dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), null);
}
@Override
- public ConfigurationSnapshot<Void> deleteFunnel(final Revision revision, final String funnelId) {
- return deleteComponent(revision, () -> funnelDAO.deleteFunnel(funnelId));
+ public FunnelEntity deleteFunnel(final Revision revision, final String funnelId) {
+ final Funnel funnel = funnelDAO.getFunnel(funnelId);
+ final ConfigurationSnapshot<Void> snapshot = deleteComponent(
+ revision,
+ funnel,
+ () -> funnelDAO.deleteFunnel(funnelId));
+
+ return entityFactory.createFunnelEntity(null, dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), null);
}
/**
@@ -658,10 +782,13 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
* @param action the action that deletes the component via the appropriate DAO object
* @return a ConfigurationSnapshot that represents the new configuration
*/
- private ConfigurationSnapshot<Void> deleteComponent(final Revision revision, final Runnable action) {
+ private ConfigurationSnapshot<Void> deleteComponent(final Revision revision, final Authorizable authorizable, final Runnable action) {
return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() {
@Override
public ConfigurationResult<Void> execute() {
+ // ensure access to the component
+ authorizable.authorize(authorizer, RequestAction.WRITE);
+
action.run();
// save the flow
@@ -688,27 +815,55 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
@Override
public ConfigurationSnapshot<Void> deleteSnippet(final Revision revision, final String snippetId) {
- return deleteComponent(revision, () -> snippetDAO.deleteSnippet(snippetId));
+ final Snippet snippet = snippetDAO.getSnippet(snippetId);
+ final ProcessGroup processGroup = processGroupDAO.getProcessGroup(snippet.getParentGroupId());
+ return deleteComponent(revision,
+ processGroup,
+ () -> snippetDAO.deleteSnippet(snippetId));
}
@Override
- public ConfigurationSnapshot<Void> deleteInputPort(final Revision revision, final String inputPortId) {
- return deleteComponent(revision, () -> inputPortDAO.deletePort(inputPortId));
+ public PortEntity deleteInputPort(final Revision revision, final String inputPortId) {
+ final Port port = inputPortDAO.getPort(inputPortId);
+ final ConfigurationSnapshot<Void> snapshot = deleteComponent(
+ revision,
+ port,
+ () -> inputPortDAO.deletePort(inputPortId));
+
+ return entityFactory.createPortEntity(null, dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), null);
}
@Override
- public ConfigurationSnapshot<Void> deleteOutputPort(final Revision revision, final String outputPortId) {
- return deleteComponent(revision, () -> outputPortDAO.deletePort(outputPortId));
+ public PortEntity deleteOutputPort(final Revision revision, final String outputPortId) {
+ final Port port = outputPortDAO.getPort(outputPortId);
+ final ConfigurationSnapshot<Void> snapshot = deleteComponent(
+ revision,
+ port,
+ () -> outputPortDAO.deletePort(outputPortId));
+
+ return entityFactory.createPortEntity(null, dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), null);
}
@Override
- public ConfigurationSnapshot<Void> deleteProcessGroup(final Revision revision, final String groupId) {
- return deleteComponent(revision, () -> processGroupDAO.deleteProcessGroup(groupId));
+ public ProcessGroupEntity deleteProcessGroup(final Revision revision, final String groupId) {
+ final ProcessGroup processGroup = processGroupDAO.getProcessGroup(groupId);
+ final ConfigurationSnapshot<Void> snapshot = deleteComponent(
+ revision,
+ processGroup,
+ () -> processGroupDAO.deleteProcessGroup(groupId));
+
+ return entityFactory.createProcessGroupEntity(null, dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), null);
}
@Override
- public ConfigurationSnapshot<Void> deleteRemoteProcessGroup(final Revision revision, final String remoteProcessGroupId) {
- return deleteComponent(revision, () -> remoteProcessGroupDAO.deleteRemoteProcessGroup(remoteProcessGroupId));
+ public RemoteProcessGroupEntity deleteRemoteProcessGroup(final Revision revision, final String remoteProcessGroupId) {
+ final RemoteProcessGroup remoteProcessGroup = remoteProcessGroupDAO.getRemoteProcessGroup(remoteProcessGroupId);
+ final ConfigurationSnapshot<Void> snapshot = deleteComponent(
+ revision,
+ remoteProcessGroup,
+ () -> remoteProcessGroupDAO.deleteRemoteProcessGroup(remoteProcessGroupId));
+
+ return entityFactory.createRemoteProcessGroupEntity(null, dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), null);
}
@Override
@@ -718,21 +873,34 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public ConfigurationSnapshot<ConnectionDTO> createConnection(final Revision revision, final String groupId, final ConnectionDTO connectionDTO) {
- return createComponent(revision, connectionDTO, () -> connectionDAO.createConnection(groupId, connectionDTO), connection -> dtoFactory.createConnectionDto(connection));
+ public ConnectionEntity createConnection(final Revision revision, final String groupId, final ConnectionDTO connectionDTO) {
+ final ConfigurationSnapshot<ConnectionDTO> snapshot = createComponent(
+ revision,
+ connectionDTO,
+ () -> connectionDAO.createConnection(groupId, connectionDTO),
+ connection -> dtoFactory.createConnectionDto(connection));
+
+ final Connection connection = connectionDAO.getConnection(connectionDTO.getId());
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(connection);
+ return entityFactory.createConnectionEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy);
}
@Override
public DropRequestDTO createFlowFileDropRequest(String connectionId, String dropRequestId) {
+ final Connection connection = connectionDAO.getConnection(connectionId);
+ connection.authorize(authorizer, RequestAction.WRITE);
return dtoFactory.createDropRequestDTO(connectionDAO.createFlowFileDropRequest(connectionId, dropRequestId));
}
@Override
public ListingRequestDTO createFlowFileListingRequest(String connectionId, String listingRequestId) {
+ final Connection connection = connectionDAO.getConnection(connectionId);
+ connection.authorize(authorizer, RequestAction.WRITE);
+
+ // create the listing request
final ListingRequestDTO listRequest = dtoFactory.createListingRequestDTO(connectionDAO.createFlowFileListingRequest(connectionId, listingRequestId));
// include whether the source and destination are running
- final Connection connection = connectionDAO.getConnection(connectionId);
if (connection.getSource() != null) {
listRequest.setSourceRunning(connection.getSource().isRunning());
}
@@ -744,13 +912,29 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public ConfigurationSnapshot<ProcessorDTO> createProcessor(final Revision revision, final String groupId, final ProcessorDTO processorDTO) {
- return createComponent(revision, processorDTO, () -> processorDAO.createProcessor(groupId, processorDTO), processor -> dtoFactory.createProcessorDto(processor));
+ public ProcessorEntity createProcessor(final Revision revision, final String groupId, final ProcessorDTO processorDTO) {
+ final ConfigurationSnapshot<ProcessorDTO> snapshot = createComponent(
+ revision,
+ processorDTO,
+ () -> processorDAO.createProcessor(groupId, processorDTO),
+ processor -> dtoFactory.createProcessorDto(processor));
+
+ final ProcessorNode processor = processorDAO.getProcessor(processorDTO.getId());
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(processor);
+ return entityFactory.createProcessorEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy);
}
@Override
- public ConfigurationSnapshot<LabelDTO> createLabel(final Revision revision, final String groupId, final LabelDTO labelDTO) {
- return createComponent(revision, labelDTO, () -> labelDAO.createLabel(groupId, labelDTO), label -> dtoFactory.createLabelDto(label));
+ public LabelEntity createLabel(final Revision revision, final String groupId, final LabelDTO labelDTO) {
+ final ConfigurationSnapshot<LabelDTO> snapshot = createComponent(
+ revision,
+ labelDTO,
+ () -> labelDAO.createLabel(groupId, labelDTO),
+ label -> dtoFactory.createLabelDto(label));
+
+ final Label label = labelDAO.getLabel(labelDTO.getId());
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(label);
+ return entityFactory.createLabelEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy);
}
/**
@@ -766,7 +950,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
*
* @return a ConfigurationSnapshot that represents the updated configuration
*/
- private <D, C> ConfigurationSnapshot<D> createComponent(final Revision revision, final NiFiComponentDTO componentDto,
+ private <D, C> ConfigurationSnapshot<D> createComponent(final Revision revision, final ComponentDTO componentDto,
final Supplier<C> daoCreation, final Function<C, D> dtoCreation) {
return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<D>() {
@@ -777,6 +961,10 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
componentDto.setId(UUID.randomUUID().toString());
}
+ // ensure access to process group
+ final ProcessGroup parent = processGroupDAO.getProcessGroup(componentDto.getParentGroupId());
+ parent.authorize(authorizer, RequestAction.WRITE);
+
// add the component
final C component = daoCreation.get();
@@ -801,14 +989,22 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
@Override
- public ConfigurationSnapshot<FunnelDTO> createFunnel(final Revision revision, final String groupId, final FunnelDTO funnelDTO) {
- return createComponent(revision, funnelDTO, () -> funnelDAO.createFunnel(groupId, funnelDTO), funnel -> dtoFactory.createFunnelDto(funnel));
+ public FunnelEntity createFunnel(final Revision revision, final String groupId, final FunnelDTO funnelDTO) {
+ final ConfigurationSnapshot<FunnelDTO> snapshot = createComponent(
+ revision,
+ funnelDTO,
+ () -> funnelDAO.createFunnel(groupId, funnelDTO),
+ funnel -> dtoFactory.createFunnelDto(funnel));
+
+ final Funnel funnel = funnelDAO.getFunnel(funnelDTO.getId());
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(funnel);
+ return entityFactory.createFunnelEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy);
}
- private void validateSnippetContents(final FlowSnippetDTO flowSnippet) {
+ private void validateSnippetContents(final FlowSnippetDTO flow) {
// validate any processors
- if (flowSnippet.getProcessors() != null) {
- for (final ProcessorDTO processorDTO : flowSnippet.getProcessors()) {
+ if (flow.getProcessors() != null) {
+ for (final ProcessorDTO processorDTO : flow.getProcessors()) {
final ProcessorNode processorNode = processorDAO.getProcessor(processorDTO.getId());
final Collection<ValidationResult> validationErrors = processorNode.getValidationErrors();
if (validationErrors != null && !validationErrors.isEmpty()) {
@@ -821,8 +1017,8 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
}
- if (flowSnippet.getInputPorts() != null) {
- for (final PortDTO portDTO : flowSnippet.getInputPorts()) {
+ if (flow.getInputPorts() != null) {
+ for (final PortDTO portDTO : flow.getInputPorts()) {
final Port port = inputPortDAO.getPort(portDTO.getId());
final Collection<ValidationResult> validationErrors = port.getValidationErrors();
if (validationErrors != null && !validationErrors.isEmpty()) {
@@ -835,8 +1031,8 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
}
- if (flowSnippet.getOutputPorts() != null) {
- for (final PortDTO portDTO : flowSnippet.getOutputPorts()) {
+ if (flow.getOutputPorts() != null) {
+ for (final PortDTO portDTO : flow.getOutputPorts()) {
final Port port = outputPortDAO.getPort(portDTO.getId());
final Collection<ValidationResult> validationErrors = port.getValidationErrors();
if (validationErrors != null && !validationErrors.isEmpty()) {
@@ -850,8 +1046,8 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
// get any remote process group issues
- if (flowSnippet.getRemoteProcessGroups() != null) {
- for (final RemoteProcessGroupDTO remoteProcessGroupDTO : flowSnippet.getRemoteProcessGroups()) {
+ if (flow.getRemoteProcessGroups() != null) {
+ for (final RemoteProcessGroupDTO remoteProcessGroupDTO : flow.getRemoteProcessGroups()) {
final RemoteProcessGroup remoteProcessGroup = remoteProcessGroupDAO.getRemoteProcessGroup(remoteProcessGroupDTO.getId());
if (remoteProcessGroup.getAuthorizationIssue() != null) {
remoteProcessGroupDTO.setAuthorizationIssues(Arrays.asList(remoteProcessGroup.getAuthorizationIssue()));
@@ -861,35 +1057,31 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public ConfigurationSnapshot<FlowSnippetDTO> copySnippet(final Revision revision, final String groupId, final String snippetId, final Double originX, final Double originY) {
- return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<FlowSnippetDTO>() {
+ public ConfigurationSnapshot<FlowDTO> copySnippet(final Revision revision, final String groupId, final String snippetId, final Double originX, final Double originY) {
+ return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<FlowDTO>() {
@Override
- public ConfigurationResult<FlowSnippetDTO> execute() {
+ public ConfigurationResult<FlowDTO> execute() {
String id = snippetId;
- // ensure id is set
- if (StringUtils.isBlank(id)) {
- id = UUID.randomUUID().toString();
- }
-
// create the new snippet
- final FlowSnippetDTO flowSnippet = snippetDAO.copySnippet(groupId, id, originX, originY);
+ final FlowSnippetDTO snippet = snippetDAO.copySnippet(groupId, id, originX, originY);
// validate the new snippet
- validateSnippetContents(flowSnippet);
+ validateSnippetContents(snippet);
// save the flow
controllerFacade.save();
- return new ConfigurationResult<FlowSnippetDTO>() {
+ return new ConfigurationResult<FlowDTO>() {
@Override
public boolean isNew() {
return false;
}
@Override
- public FlowSnippetDTO getConfiguration() {
- return flowSnippet;
+ public FlowDTO getConfiguration() {
+ final ProcessGroup group = processGroupDAO.getProcessGroup(groupId);
+ return dtoFactory.createFlowDto(group, snippet);
}
};
}
@@ -909,7 +1101,6 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
// add the snippet
final Snippet snippet = snippetDAO.createSnippet(snippetDTO);
final SnippetDTO responseSnippetDTO = dtoFactory.createSnippetDto(snippet);
- responseSnippetDTO.setContents(snippetUtils.populateFlowSnippet(snippet, false, false));
return new ConfigurationResult<SnippetDTO>() {
@Override
@@ -927,27 +1118,53 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public ConfigurationSnapshot<PortDTO> createInputPort(final Revision revision, final String groupId, final PortDTO inputPortDTO) {
- return createComponent(revision, inputPortDTO, () -> inputPortDAO.createPort(groupId, inputPortDTO), port -> dtoFactory.createPortDto(port));
+ public PortEntity createInputPort(final Revision revision, final String groupId, final PortDTO inputPortDTO) {
+ final ConfigurationSnapshot<PortDTO> snapshot = createComponent(
+ revision,
+ inputPortDTO,
+ () -> inputPortDAO.createPort(groupId, inputPortDTO),
+ port -> dtoFactory.createPortDto(port));
+
+ final Port port = inputPortDAO.getPort(inputPortDTO.getId());
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(port);
+ return entityFactory.createPortEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy);
}
@Override
- public ConfigurationSnapshot<PortDTO> createOutputPort(final Revision revision, final String groupId, final PortDTO outputPortDTO) {
- return createComponent(revision, outputPortDTO, () -> outputPortDAO.createPort(groupId, outputPortDTO), port -> dtoFactory.createPortDto(port));
+ public PortEntity createOutputPort(final Revision revision, final String groupId, final PortDTO outputPortDTO) {
+ final ConfigurationSnapshot<PortDTO> snapshot = createComponent(
+ revision,
+ outputPortDTO,
+ () -> outputPortDAO.createPort(groupId, outputPortDTO),
+ port -> dtoFactory.createPortDto(port));
+
+ final Port port = outputPortDAO.getPort(outputPortDTO.getId());
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(port);
+ return entityFactory.createPortEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy);
}
@Override
- public ConfigurationSnapshot<ProcessGroupDTO> createProcessGroup(final String parentGroupId, final Revision revision, final ProcessGroupDTO processGroupDTO) {
- return createComponent(revision, processGroupDTO,
+ public ProcessGroupEntity createProcessGroup(final String parentGroupId, final Revision revision, final ProcessGroupDTO processGroupDTO) {
+ final ConfigurationSnapshot<ProcessGroupDTO> snapshot = createComponent(revision, processGroupDTO,
() -> processGroupDAO.createProcessGroup(parentGroupId, processGroupDTO),
processGroup -> dtoFactory.createProcessGroupDto(processGroup));
+
+ final ProcessGroup processGroup = processGroupDAO.getProcessGroup(processGroupDTO.getId());
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(processGroup);
+ return entityFactory.createProcessGroupEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy);
}
@Override
- public ConfigurationSnapshot<RemoteProcessGroupDTO> createRemoteProcessGroup(final Revision revision, final String groupId, final RemoteProcessGroupDTO remoteProcessGroupDTO) {
- return createComponent(revision, remoteProcessGroupDTO,
+ public RemoteProcessGroupEntity createRemoteProcessGroup(final Revision revision, final String groupId, final RemoteProcessGroupDTO remoteProcessGroupDTO) {
+ final ConfigurationSnapshot<RemoteProcessGroupDTO> snapshot = createComponent(
+ revision,
+ remoteProcessGroupDTO,
() -> remoteProcessGroupDAO.createRemoteProcessGroup(groupId, remoteProcessGroupDTO),
remoteProcessGroup -> dtoFactory.createRemoteProcessGroupDto(remoteProcessGroup));
+
+ final RemoteProcessGroup remoteProcessGroup = remoteProcessGroupDAO.getRemoteProcessGroup(remoteProcessGroupDTO.getId());
+ final AccessPolicyDTO accessPolicy = dtoFactory.createAccessPolicyDto(remoteProcessGroup);
+ return entityFactory.createRemoteProcessGroupEntity(snapshot.getConfiguration(), dtoFactory.createRevisionDTO(snapshot.getVersion(), revision.getClientId()), accessPolicy);
}
@Override
@@ -993,29 +1210,30 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public ConfigurationSnapshot<FlowSnippetDTO> createTemplateInstance(final Revision revision, final String groupId, final Double originX, final Double originY, final String templateId) {
- return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<FlowSnippetDTO>() {
+ public ConfigurationSnapshot<FlowDTO> createTemplateInstance(final Revision revision, final String groupId, final Double originX, final Double originY, final String templateId) {
+ return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<FlowDTO>() {
@Override
- public ConfigurationResult<FlowSnippetDTO> execute() {
+ public ConfigurationResult<FlowDTO> execute() {
// instantiate the template - there is no need to make another copy of the flow snippet since the actual template
// was copied and this dto is only used to instantiate it's components (which as already completed)
- final FlowSnippetDTO flowSnippet = templateDAO.instantiateTemplate(groupId, originX, originY, templateId);
+ final FlowSnippetDTO snippet = templateDAO.instantiateTemplate(groupId, originX, originY, templateId);
// validate the new snippet
- validateSnippetContents(flowSnippet);
+ validateSnippetContents(snippet);
// save the flow
controllerFacade.save();
- return new ConfigurationResult<FlowSnippetDTO>() {
+ return new ConfigurationResult<FlowDTO>() {
@Override
public boolean isNew() {
return false;
}
@Override
- public FlowSnippetDTO getConfiguration() {
- return flowSnippet;
+ public FlowDTO getConfiguration() {
+ final ProcessGroup group = processGroupDAO.getProcessGroup(groupId);
+ return dtoFactory.createFlowDto(group, snippet);
}
};
}
@@ -1367,30 +1585,39 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public Set<ConnectionDTO> getConnections(String groupId) {
- Set<ConnectionDTO> connectionDtos = new LinkedHashSet<>();
+ public Set<ConnectionEntity> getConnections(String groupId) {
+ final ProcessGroup group = processGroupDAO.getProcessGroup(groupId);
+ group.authorize(authorizer, RequestAction.READ);
+
+ Set<ConnectionEntity> connections = new LinkedHashSet<>();
for (Connection connection : connectionDAO.getConnections(groupId)) {
- connectionDtos.add(dtoFactory.createConnectionDto(connection));
+ connections.add(entityFactory.createConnectionEntity(dtoFactory.createConnectionDto(connection), null, dtoFactory.createAccessPolicyDto(connection)));
}
- return connectionDtos;
+ return connections;
}
@Override
- public ConnectionDTO getConnection(String connectionId) {
- return dtoFactory.createConnectionDto(connectionDAO.getConnection(connectionId));
+ public ConnectionEntity getConnection(String connectionId) {
+ final Connection connection = connectionDAO.getConnection(connectionId);
+ connection.authorize(authorizer, RequestAction.READ);
+ return entityFactory.createConnectionEntity(dtoFactory.createConnectionDto(connectionDAO.getConnection(connectionId)), null, dtoFactory.createAccessPolicyDto(connection));
}
@Override
public DropRequestDTO getFlowFileDropRequest(String connectionId, String dropRequestId) {
+ final Connection connection = connectionDAO.getConnection(connectionId);
+ connection.authorize(authorizer, RequestAction.WRITE);
return dtoFactory.createDropRequestDTO(connectionDAO.getFlowFileDropRequest(connectionId, dropRequestId));
}
@Override
public ListingRequestDTO getFlowFileListingRequest(String connectionId, String listingRequestId) {
+ final Connection connection = connectionDAO.getConnection(connectionId);
+ connection.authorize(authorizer, RequestAction.WRITE);
+
final ListingRequestDTO listRequest = dtoFactory.createListingRequestDTO(connectionDAO.getFlowFileListingRequest(connectionId, listingRequestId));
// include whether the source and destination are running
- final Connection connection = connectionDAO.getConnection(connectionId);
if (connection.getSource() != null) {
listRequest.setSourceRunning(connection.getSource().isRunning());
}
@@ -1403,6 +1630,8 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
@Override
public FlowFileDTO getFlowFile(String connectionId, String flowFileUuid) {
+ final Connection connection = connectionDAO.getConnection(connectionId);
+ connection.authorize(authorizer, RequestAction.WRITE);
return dtoFactory.createFlowFileDTO(connectionDAO.getFlowFile(connectionId, flowFileUuid));
}
@@ -1417,12 +1646,15 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public Set<ProcessorDTO> getProcessors(String groupId) {
- Set<ProcessorDTO> processorDtos = new LinkedHashSet<>();
+ public Set<ProcessorEntity> getProcessors(String groupId) {
+ final ProcessGroup group = processGroupDAO.getProcessGroup(groupId);
+ group.authorize(authorizer, RequestAction.READ);
+
+ Set<ProcessorEntity> processors = new LinkedHashSet<>();
for (ProcessorNode processor : processorDAO.getProcessors(groupId)) {
- processorDtos.add(dtoFactory.createProcessorDto(processor));
+ processors.add(entityFactory.createProcessorEntity(dtoFactory.createProcessorDto(processor), null, dtoFactory.createAccessPolicyDto(processor)));
}
- return processorDtos;
+ return processors;
}
@Override
@@ -1470,10 +1702,10 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public ProcessorDTO getProcessor(String id) {
+ public ProcessorEntity getProcessor(String id) {
final ProcessorNode processor = processorDAO.getProcessor(id);
- final ProcessorDTO processorDto = dtoFactory.createProcessorDto(processor);
- return processorDto;
+ processor.authorize(authorizer, RequestAction.READ);
+ return entityFactory.createProcessorEntity(dtoFactory.createProcessorDto(processor), null, dtoFactory.createAccessPolicyDto(processor));
}
@Override
@@ -1662,80 +1894,103 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public Set<LabelDTO> getLabels(String groupId) {
- Set<LabelDTO> labelDtos = new LinkedHashSet<>();
+ public Set<LabelEntity> getLabels(String groupId) {
+ final ProcessGroup group = processGroupDAO.getProcessGroup(groupId);
+ group.authorize(authorizer, RequestAction.READ);
+
+ Set<LabelEntity> labels = new LinkedHashSet<>();
for (Label label : labelDAO.getLabels(groupId)) {
- labelDtos.add(dtoFactory.createLabelDto(label));
+ labels.add(entityFactory.createLabelEntity(dtoFactory.createLabelDto(label), null, dtoFactory.createAccessPolicyDto(label)));
}
- return labelDtos;
+ return labels;
}
@Override
- public LabelDTO getLabel(String labelId) {
- return dtoFactory.createLabelDto(labelDAO.getLabel(labelId));
+ public LabelEntity getLabel(String labelId) {
+ final Label label = labelDAO.getLabel(labelId);
+ label.authorize(authorizer, RequestAction.READ);
+ return entityFactory.createLabelEntity(dtoFactory.createLabelDto(label), null, dtoFactory.createAccessPolicyDto(label));
}
@Override
- public Set<FunnelDTO> getFunnels(String groupId) {
- Set<FunnelDTO> funnelDtos = new LinkedHashSet<>();
+ public Set<FunnelEntity> getFunnels(String groupId) {
+ final ProcessGroup group = processGroupDAO.getProcessGroup(groupId);
+ group.authorize(authorizer, RequestAction.READ);
+
+ final Set<FunnelEntity> funnelDtos = new LinkedHashSet<>();
for (Funnel funnel : funnelDAO.getFunnels(groupId)) {
- funnelDtos.add(dtoFactory.createFunnelDto(funnel));
+ funnelDtos.add(entityFactory.createFunnelEntity(dtoFactory.createFunnelDto(funnel), null, dtoFactory.createAccessPolicyDto(funnel)));
}
return funnelDtos;
}
@Override
- public FunnelDTO getFunnel(String funnelId) {
- return dtoFactory.createFunnelDto(funnelDAO.getFunnel(funnelId));
+ public FunnelEntity getFunnel(String funnelId) {
+ final Funnel funnel = funnelDAO.getFunnel(funnelId);
+ funnel.authorize(authorizer, RequestAction.READ);
+ return entityFactory.createFunnelEntity(dtoFactory.createFunnelDto(funnel), null, dtoFactory.createAccessPolicyDto(funnel));
}
@Override
public SnippetDTO getSnippet(String snippetId) {
final Snippet snippet = snippetDAO.getSnippet(snippetId);
final SnippetDTO snippetDTO = dtoFactory.createSnippetDto(snippet);
- snippetDTO.setContents(snippetUtils.populateFlowSnippet(snippet, false, false));
return snippetDTO;
}
@Override
- public Set<PortDTO> getInputPorts(String groupId) {
- Set<PortDTO> portDtos = new LinkedHashSet<>();
+ public Set<PortEntity> getInputPorts(String groupId) {
+ final ProcessGroup group = processGroupDAO.getProcessGroup(groupId);
+ group.authorize(authorizer, RequestAction.READ);
+
+ final Set<PortEntity> ports = new LinkedHashSet<>();
for (Port port : inputPortDAO.getPorts(groupId)) {
- portDtos.add(dtoFactory.createPortDto(port));
+ ports.add(entityFactory.createPortEntity(dtoFactory.createPortDto(port), null, dtoFactory.createAccessPolicyDto(port)));
}
- return portDtos;
+ return ports;
}
@Override
- public Set<PortDTO> getOutputPorts(String groupId) {
- Set<PortDTO> portDtos = new LinkedHashSet<>();
+ public Set<PortEntity> getOutputPorts(String groupId) {
+ final ProcessGroup group = processGroupDAO.getProcessGroup(groupId);
+ group.authorize(authorizer, RequestAction.READ);
+
+ Set<PortEntity> ports = new LinkedHashSet<>();
for (Port port : outputPortDAO.getPorts(groupId)) {
- portDtos.add(dtoFactory.createPortDto(port));
+ ports.add(entityFactory.createPortEntity(dtoFactory.createPortDto(port), null, dtoFactory.createAccessPolicyDto(port)));
}
- return portDtos;
+ return ports;
}
@Override
- public Set<ProcessGroupDTO> getProcessGroups(String parentGroupId) {
- Set<ProcessGroupDTO> processGroupDtos = new LinkedHashSet<>();
- for (ProcessGroup groups : processGroupDAO.getProcessGroups(parentGroupId)) {
- processGroupDtos.add(dtoFactory.createProcessGroupDto(groups));
+ public Set<ProcessGroupEntity> getProcessGroups(String parentGroupId) {
+ final ProcessGroup parentGroup = processGroupDAO.getProcessGroup(parentGroupId);
+ parentGroup.authorize(authorizer, RequestAction.READ);
+
+ Set<ProcessGroupEntity> processGroups = new LinkedHashSet<>();
+ for (ProcessGroup group : processGroupDAO.getProcessGroups(parentGroupId)) {
+ processGroups.add(entityFactory.createProcessGroupEntity(dtoFactory.createProcessGroupDto(group), null, dtoFactory.createAccessPolicyDto(group)));
}
- return processGroupDtos;
+ return processGroups;
}
@Override
- public Set<RemoteProcessGroupDTO> getRemoteProcessGroups(String groupId) {
- Set<RemoteProcessGroupDTO> remoteProcessGroupDtos = new LinkedHashSet<>();
- for (RemoteProcessGroup remoteProcessGroup : remoteProcessGroupDAO.getRemoteProcessGroups(groupId)) {
- remoteProcessGroupDtos.add(dtoFactory.createRemoteProcessGroupDto(remoteProcessGroup));
+ public Set<RemoteProcessGroupEntity> getRemoteProcessGroups(String groupId) {
+ final ProcessGroup group = processGroupDAO.getProcessGroup(groupId);
+ group.authorize(authorizer, RequestAction.READ);
+
+ Set<RemoteProcessGroupEntity> remoteProcessGroups = new LinkedHashSet<>();
+ for (RemoteProcessGroup rpg : remoteProcessGroupDAO.getRemoteProcessGroups(groupId)) {
+ remoteProcessGroups.add(entityFactory.createRemoteProcessGroupEntity(dtoFactory.createRemoteProcessGroupDto(rpg), null, dtoFactory.createAccessPolicyDto(rpg)));
}
- return remoteProcessGroupDtos;
+ return remoteProcessGroups;
}
@Override
- public PortDTO getInputPort(String inputPortId) {
- return dtoFactory.createPortDto(inputPortDAO.getPort(inputPortId));
+ public PortEntity getInputPort(String inputPortId) {
+ final Port port = inputPortDAO.getPort(inputPortId);
+ port.authorize(authorizer, RequestAction.READ);
+ return entityFactory.createPortEntity(dtoFactory.createPortDto(port), null, dtoFactory.createAccessPolicyDto(port));
}
@Override
@@ -1744,8 +1999,10 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public PortDTO getOutputPort(String outputPortId) {
- return dtoFactory.createPortDto(outputPortDAO.getPort(outputPortId));
+ public PortEntity getOutputPort(String outputPortId) {
+ final Port port = outputPortDAO.getPort(outputPortId);
+ port.authorize(authorizer, RequestAction.READ);
+ return entityFactory.createPortEntity(dtoFactory.createPortDto(port), null, dtoFactory.createAccessPolicyDto(port));
}
@Override
@@ -1754,8 +2011,10 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public RemoteProcessGroupDTO getRemoteProcessGroup(String remoteProcessGroupId) {
- return dtoFactory.createRemoteProcessGroupDto(remoteProcessGroupDAO.getRemoteProcessGroup(remoteProcessGroupId));
+ public RemoteProcessGroupEntity getRemoteProcessGroup(String remoteProcessGroupId) {
+ final RemoteProcessGroup rpg = remoteProcessGroupDAO.getRemoteProcessGroup(remoteProcessGroupId);
+ rpg.authorize(authorizer, RequestAction.READ);
+ return entityFactory.createRemoteProcessGroupEntity(dtoFactory.createRemoteProcessGroupDto(rpg), null, dtoFactory.createAccessPolicyDto(rpg));
}
@Override
@@ -1769,14 +2028,21 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public ConfigurationSnapshot<ProcessGroupDTO> getProcessGroup(String groupId, final boolean recurse) {
+ public ConfigurationSnapshot<ProcessGroupFlowDTO> getProcessGroupFlow(String groupId, boolean recurse) {
ProcessGroup processGroup = processGroupDAO.getProcessGroup(groupId);
Revision revision = optimisticLockingManager.getLastModification().getRevision();
- ConfigurationSnapshot<ProcessGroupDTO> response = new ConfigurationSnapshot<>(revision.getVersion(), dtoFactory.createProcessGroupDto(processGroup, recurse));
+ ConfigurationSnapshot<ProcessGroupFlowDTO> response = new ConfigurationSnapshot<>(revision.getVersion(), dtoFactory.createProcessGroupFlowDto(processGroup, recurse));
return response;
}
@Override
+ public ProcessGroupEntity getProcessGroup(String groupId) {
+ final ProcessGroup processGroup = processGroupDAO.getProcessGroup(groupId);
+ processGroup.authorize(authorizer, RequestAction.READ);
+ return entityFactory.createProcessGroupEntity(dtoFactory.createProcessGroupDto(processGroup), null, dtoFactory.createAccessPolicyDto(processGroup));
+ }
+
+ @Override
public Set<ControllerServiceDTO> getControllerServices() {
final Set<ControllerServiceDTO> controllerServiceDtos = new LinkedHashSet<>();
for (ControllerServiceNode controllerService : controllerServiceDAO.getControllerServices()) {
@@ -2014,6 +2280,10 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
this.dtoFactory = dtoFactory;
}
+ public void setEntityFactory(EntityFactory entityFactory) {
+ this.entityFactory = entityFactory;
+ }
+
public void setInputPortDAO(PortDAO inputPortDAO) {
this.inputPortDAO = inputPortDAO;
}
@@ -2042,6 +2312,10 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
this.snippetUtils = snippetUtils;
}
+ public void setAuthorizer(Authorizer authorizer) {
+ this.authorizer = authorizer;
+ }
+
private boolean isPrimaryNode(String nodeId) {
final Node primaryNode = clusterManager.getPrimaryNode();
return (primaryNode != null && primaryNode.getNodeId().getId().equals(nodeId));