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:19 UTC
[06/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/api/RemoteProcessGroupResource.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/RemoteProcessGroupResource.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/RemoteProcessGroupResource.java
index d1999d9..64fe273 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/RemoteProcessGroupResource.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/RemoteProcessGroupResource.java
@@ -28,6 +28,7 @@ import org.apache.nifi.util.NiFiProperties;
import org.apache.nifi.web.ConfigurationSnapshot;
import org.apache.nifi.web.NiFiServiceFacade;
import org.apache.nifi.web.Revision;
+import org.apache.nifi.web.UpdateResult;
import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO;
import org.apache.nifi.web.api.dto.RemoteProcessGroupPortDTO;
import org.apache.nifi.web.api.dto.RevisionDTO;
@@ -74,6 +75,32 @@ public class RemoteProcessGroupResource extends ApplicationResource {
/**
* Populates the remaining content for each remote process group. The uri must be generated and the remote process groups name must be retrieved.
*
+ * @param remoteProcessGroupEntities groups
+ * @return dtos
+ */
+ public Set<RemoteProcessGroupEntity> populateRemainingRemoteProcessGroupEntitiesContent(Set<RemoteProcessGroupEntity> remoteProcessGroupEntities) {
+ for (RemoteProcessGroupEntity remoteProcessEntities : remoteProcessGroupEntities) {
+ populateRemainingRemoteProcessGroupEntityContent(remoteProcessEntities);
+ }
+ return remoteProcessGroupEntities;
+ }
+
+ /**
+ * Populates the remaining content for each remote process group. The uri must be generated and the remote process groups name must be retrieved.
+ *
+ * @param remoteProcessGroupEntity groups
+ * @return dtos
+ */
+ public RemoteProcessGroupEntity populateRemainingRemoteProcessGroupEntityContent(RemoteProcessGroupEntity remoteProcessGroupEntity) {
+ if (remoteProcessGroupEntity.getComponent() != null) {
+ populateRemainingRemoteProcessGroupContent(remoteProcessGroupEntity.getComponent());
+ }
+ return remoteProcessGroupEntity;
+ }
+
+ /**
+ * Populates the remaining content for each remote process group. The uri must be generated and the remote process groups name must be retrieved.
+ *
* @param remoteProcessGroups groups
* @return dtos
*/
@@ -100,7 +127,6 @@ public class RemoteProcessGroupResource extends ApplicationResource {
/**
* Retrieves the specified remote process group.
*
- * @param clientId Optional client id. If the client id is not specified, a new one will be generated. This value (whether specified or generated) is included in the response.
* @param verbose Optional verbose flag that defaults to false. If the verbose flag is set to true remote group contents (ports) will be included.
* @param id The id of the remote process group to retrieve
* @return A remoteProcessGroupEntity.
@@ -130,11 +156,6 @@ public class RemoteProcessGroupResource extends ApplicationResource {
)
public Response getRemoteProcessGroup(
@ApiParam(
- value = "If the client id is not specified, new one will be generated. This value (whether specified or generated) is included in the response.",
- required = false
- )
- @QueryParam(CLIENT_ID) @DefaultValue(StringUtils.EMPTY) ClientIdParameter clientId,
- @ApiParam(
value = "Whether to include any encapulated ports or just details about the remote process group.",
required = false
)
@@ -150,23 +171,17 @@ public class RemoteProcessGroupResource extends ApplicationResource {
return clusterManager.applyRequest(HttpMethod.GET, getAbsolutePath(), getRequestParameters(true), getHeaders()).getResponse();
}
- // get the label
- final RemoteProcessGroupDTO remoteProcessGroup = serviceFacade.getRemoteProcessGroup(id);
+ // get the remote process group
+ final RemoteProcessGroupEntity entity = serviceFacade.getRemoteProcessGroup(id);
+ populateRemainingRemoteProcessGroupEntityContent(entity);
// prune the response as necessary
if (!verbose) {
- remoteProcessGroup.setContents(null);
+ if (entity.getComponent() != null) {
+ entity.getComponent().setContents(null);
+ }
}
- // create the revision
- final RevisionDTO revision = new RevisionDTO();
- revision.setClientId(clientId.getClientId());
-
- // create the response entity
- final RemoteProcessGroupEntity entity = new RemoteProcessGroupEntity();
- entity.setRevision(revision);
- entity.setRemoteProcessGroup(populateRemainingRemoteProcessGroupContent(remoteProcessGroup));
-
return clusterContext(generateOkResponse(entity)).build();
}
@@ -236,18 +251,7 @@ public class RemoteProcessGroupResource extends ApplicationResource {
clientVersion = version.getLong();
}
- final ConfigurationSnapshot<Void> controllerResponse = serviceFacade.deleteRemoteProcessGroup(new Revision(clientVersion, clientId.getClientId()), id);
-
- // get the updated revision
- final RevisionDTO revision = new RevisionDTO();
- revision.setClientId(clientId.getClientId());
- revision.setVersion(controllerResponse.getVersion());
-
- // create the response entity
- final RemoteProcessGroupEntity entity = new RemoteProcessGroupEntity();
- entity.setRevision(revision);
-
- // create the response
+ final RemoteProcessGroupEntity entity = serviceFacade.deleteRemoteProcessGroup(new Revision(clientVersion, clientId.getClientId()), id);
return clusterContext(generateOkResponse(entity)).build();
}
@@ -463,7 +467,7 @@ public class RemoteProcessGroupResource extends ApplicationResource {
@PathParam("id") String id,
RemoteProcessGroupEntity remoteProcessGroupEntity) {
- if (remoteProcessGroupEntity == null || remoteProcessGroupEntity.getRemoteProcessGroup() == null) {
+ if (remoteProcessGroupEntity == null || remoteProcessGroupEntity.getComponent() == null) {
throw new IllegalArgumentException("Remote process group details must be specified.");
}
@@ -472,7 +476,7 @@ public class RemoteProcessGroupResource extends ApplicationResource {
}
// ensure the ids are the same
- final RemoteProcessGroupDTO requestRemoteProcessGroup = remoteProcessGroupEntity.getRemoteProcessGroup();
+ final RemoteProcessGroupDTO requestRemoteProcessGroup = remoteProcessGroupEntity.getComponent();
if (!id.equals(requestRemoteProcessGroup.getId())) {
throw new IllegalArgumentException(String.format("The remote process group id (%s) in the request body does not equal the "
+ "remote process group id of the requested resource (%s).", requestRemoteProcessGroup.getId(), id));
@@ -530,24 +534,14 @@ public class RemoteProcessGroupResource extends ApplicationResource {
// update the specified remote process group
final RevisionDTO revision = remoteProcessGroupEntity.getRevision();
- final ConfigurationSnapshot<RemoteProcessGroupDTO> controllerResponse
+ final UpdateResult<RemoteProcessGroupEntity> updateResult
= serviceFacade.updateRemoteProcessGroup(new Revision(revision.getVersion(), revision.getClientId()), requestRemoteProcessGroup);
- final RemoteProcessGroupDTO responseRemoteProcessGroup = controllerResponse.getConfiguration();
- populateRemainingRemoteProcessGroupContent(responseRemoteProcessGroup);
-
- // get the updated revision
- final RevisionDTO updatedRevision = new RevisionDTO();
- updatedRevision.setClientId(revision.getClientId());
- updatedRevision.setVersion(controllerResponse.getVersion());
-
- // build the response entity
- final RemoteProcessGroupEntity entity = new RemoteProcessGroupEntity();
- entity.setRevision(updatedRevision);
- entity.setRemoteProcessGroup(responseRemoteProcessGroup);
+ final RemoteProcessGroupEntity entity = updateResult.getResult();
+ populateRemainingRemoteProcessGroupEntityContent(entity);
- if (controllerResponse.isNew()) {
- return clusterContext(generateCreatedResponse(URI.create(responseRemoteProcessGroup.getUri()), entity)).build();
+ if (updateResult.isNew()) {
+ return clusterContext(generateCreatedResponse(URI.create(entity.getComponent().getUri()), entity)).build();
} else {
return clusterContext(generateOkResponse(entity)).build();
}
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/api/TemplateResource.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java
index 5657fff..ceb9455 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java
@@ -89,9 +89,6 @@ public class TemplateResource extends ApplicationResource {
/**
* Retrieves the specified template.
*
- * @param clientId Optional client id. If the client id is not specified, a
- * new one will be generated. This value (whether specified or generated) is
- * included in the response.
* @param id The id of the template to retrieve
* @return A templateEntity.
*/
@@ -120,11 +117,6 @@ public class TemplateResource extends ApplicationResource {
)
public Response exportTemplate(
@ApiParam(
- value = "If the client id is not specified, new one will be generated. This value (whether specified or generated) is included in the response.",
- required = false
- )
- @QueryParam(CLIENT_ID) @DefaultValue(StringUtils.EMPTY) ClientIdParameter clientId,
- @ApiParam(
value = "The template id.",
required = true
)
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/api/config/AccessDeniedExceptionMapper.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/config/AccessDeniedExceptionMapper.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/config/AccessDeniedExceptionMapper.java
index 5d50e70..3af22c9 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/config/AccessDeniedExceptionMapper.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/config/AccessDeniedExceptionMapper.java
@@ -19,12 +19,13 @@ package org.apache.nifi.web.api.config;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
-import org.apache.nifi.web.security.user.NiFiUserUtils;
-import org.apache.nifi.user.NiFiUser;
+
+import org.apache.nifi.authorization.AccessDeniedException;
+import org.apache.nifi.authorization.user.NiFiUser;
import org.apache.commons.lang3.StringUtils;
+import org.apache.nifi.authorization.user.NiFiUserUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.security.access.AccessDeniedException;
/**
* Maps access denied exceptions into a client response.
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/api/dto/DtoFactory.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java
index 79e1d55..afcf86a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java
@@ -34,7 +34,10 @@ import org.apache.nifi.action.details.PurgeDetails;
import org.apache.nifi.annotation.behavior.Stateful;
import org.apache.nifi.annotation.documentation.CapabilityDescription;
import org.apache.nifi.annotation.documentation.Tags;
+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.cluster.coordination.heartbeat.NodeHeartbeat;
import org.apache.nifi.cluster.event.Event;
import org.apache.nifi.cluster.manager.StatusMerger;
@@ -113,6 +116,9 @@ import org.apache.nifi.web.api.dto.action.details.ConfigureDetailsDTO;
import org.apache.nifi.web.api.dto.action.details.ConnectDetailsDTO;
import org.apache.nifi.web.api.dto.action.details.MoveDetailsDTO;
import org.apache.nifi.web.api.dto.action.details.PurgeDetailsDTO;
+import org.apache.nifi.web.api.dto.flow.FlowBreadcrumbDTO;
+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.lineage.LineageDTO;
import org.apache.nifi.web.api.dto.provenance.lineage.LineageRequestDTO;
import org.apache.nifi.web.api.dto.provenance.lineage.LineageRequestDTO.LineageRequestType;
@@ -163,6 +169,8 @@ public final class DtoFactory {
};
private ControllerServiceLookup controllerServiceLookup;
+ private EntityFactory entityFactory;
+ private Authorizer authorizer;
/**
* Creates an ActionDTO for the specified Action.
@@ -537,6 +545,7 @@ public final class DtoFactory {
if (connection == null) {
return null;
}
+
final ConnectionDTO dto = new ConnectionDTO();
dto.setId(connection.getIdentifier());
@@ -652,6 +661,9 @@ public final class DtoFactory {
if (funnel == null) {
return null;
}
+ if (!funnel.isAuthorized(authorizer, RequestAction.READ)) {
+ return null;
+ }
final FunnelDTO dto = new FunnelDTO();
dto.setId(funnel.getIdentifier());
@@ -1385,27 +1397,34 @@ public final class DtoFactory {
}
/**
- * Creates a ProcessGroupDTO from the specified parent ProcessGroup.
+ * Creates a FlowBreadcrumbDTO from the specified parent ProcessGroup.
*
* @param parentGroup group
* @return dto
*/
- private ProcessGroupDTO createParentProcessGroupDto(final ProcessGroup parentGroup) {
+ private FlowBreadcrumbDTO createBreadcrumbDto(final ProcessGroup parentGroup) {
if (parentGroup == null) {
return null;
}
- final ProcessGroupDTO dto = new ProcessGroupDTO();
+ final FlowBreadcrumbDTO dto = new FlowBreadcrumbDTO();
dto.setId(parentGroup.getIdentifier());
dto.setName(parentGroup.getName());
if (parentGroup.getParent() != null) {
- dto.setParent(createParentProcessGroupDto(parentGroup.getParent()));
+ dto.setParentBreadcrumb(createBreadcrumbDto(parentGroup.getParent()));
}
return dto;
}
+ public AccessPolicyDTO createAccessPolicyDto(final Authorizable authorizable) {
+ final AccessPolicyDTO dto = new AccessPolicyDTO();
+ dto.setCanRead(authorizable.isAuthorized(authorizer, RequestAction.READ));
+ dto.setCanWrite(authorizable.isAuthorized(authorizer, RequestAction.WRITE));
+ return dto;
+ }
+
/**
* Creates a ProcessGroupDTO from the specified ProcessGroup.
*
@@ -1416,6 +1435,125 @@ public final class DtoFactory {
return createProcessGroupDto(group, false);
}
+ public ProcessGroupFlowDTO createProcessGroupFlowDto(final ProcessGroup group, final boolean recurse) {
+ final ProcessGroupFlowDTO dto = new ProcessGroupFlowDTO();
+ dto.setId(group.getIdentifier());
+ dto.setBreadcrumb(createBreadcrumbDto(group));
+ dto.setFlow(createFlowDto(group));
+
+ final ProcessGroup parent = group.getParent();
+ if (parent != null) {
+ dto.setParentGroupId(parent.getIdentifier());
+ }
+
+ return dto;
+ }
+
+ public FlowDTO createFlowDto(final ProcessGroup group, final FlowSnippetDTO snippet) {
+ if (snippet == null) {
+ return null;
+ }
+
+ final FlowDTO flow = new FlowDTO();
+
+ for (final ConnectionDTO connection : snippet.getConnections()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(group.getConnection(connection.getId()));
+ flow.getConnections().add(entityFactory.createConnectionEntity(connection, null, accessPolicy));
+ }
+
+ for (final ControllerServiceDTO controllerService : snippet.getControllerServices()) {
+ flow.getControllerServices().add(entityFactory.createControllerServiceEntity(controllerService, null, null));
+ }
+
+ for (final FunnelDTO funnel : snippet.getFunnels()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(group.getFunnel(funnel.getId()));
+ flow.getFunnels().add(entityFactory.createFunnelEntity(funnel, null, accessPolicy));
+ }
+
+ for (final PortDTO inputPort : snippet.getInputPorts()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(group.getInputPort(inputPort.getId()));
+ flow.getInputPorts().add(entityFactory.createPortEntity(inputPort, null, accessPolicy));
+ }
+
+ for (final PortDTO outputPort : snippet.getOutputPorts()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(group.getOutputPort(outputPort.getId()));
+ flow.getOutputPorts().add(entityFactory.createPortEntity(outputPort, null, accessPolicy));
+ }
+
+ for (final LabelDTO label : snippet.getLabels()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(group.getLabel(label.getId()));
+ flow.getLabels().add(entityFactory.createLabelEntity(label, null, accessPolicy));
+ }
+
+ for (final ProcessGroupDTO processGroup : snippet.getProcessGroups()) {
+ // clear the contents as we only return a single level/group at a time
+ processGroup.setContents(null);
+
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(group.getProcessGroup(processGroup.getId()));
+ flow.getProcessGroups().add(entityFactory.createProcessGroupEntity(processGroup, null, accessPolicy));
+ }
+
+ for (final ProcessorDTO processor : snippet.getProcessors()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(group.getProcessor(processor.getId()));
+ flow.getProcessors().add(entityFactory.createProcessorEntity(processor, null, accessPolicy));
+ }
+
+ for (final RemoteProcessGroupDTO remoteProcessGroup : snippet.getRemoteProcessGroups()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(group.getRemoteProcessGroup(remoteProcessGroup.getId()));
+ flow.getRemoteProcessGroups().add(entityFactory.createRemoteProcessGroupEntity(remoteProcessGroup, null, accessPolicy));
+ }
+
+ return flow;
+ }
+
+ public FlowDTO createFlowDto(final ProcessGroup group) {
+ final FlowDTO dto = new FlowDTO();
+
+ for (final ProcessorNode procNode : group.getProcessors()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(procNode);
+ dto.getProcessors().add(entityFactory.createProcessorEntity(createProcessorDto(procNode), null, accessPolicy));
+ }
+
+ for (final Connection connNode : group.getConnections()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(connNode);
+ dto.getConnections().add(entityFactory.createConnectionEntity(createConnectionDto(connNode), null, accessPolicy));
+ }
+
+ for (final Label label : group.getLabels()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(label);
+ dto.getLabels().add(entityFactory.createLabelEntity(createLabelDto(label), null, accessPolicy));
+ }
+
+ for (final Funnel funnel : group.getFunnels()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(funnel);
+ dto.getFunnels().add(entityFactory.createFunnelEntity(createFunnelDto(funnel), null, accessPolicy));
+ }
+
+ for (final ProcessGroup childGroup : group.getProcessGroups()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(childGroup);
+ dto.getProcessGroups().add(entityFactory.createProcessGroupEntity(createProcessGroupDto(childGroup), null, accessPolicy));
+ }
+
+ for (final RemoteProcessGroup rpg : group.getRemoteProcessGroups()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(rpg);
+ dto.getRemoteProcessGroups().add(entityFactory.createRemoteProcessGroupEntity(createRemoteProcessGroupDto(rpg), null, accessPolicy));
+ }
+
+ for (final Port inputPort : group.getInputPorts()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(inputPort);
+ dto.getInputPorts().add(entityFactory.createPortEntity(createPortDto(inputPort), null, accessPolicy));
+ }
+
+ for (final Port outputPort : group.getOutputPorts()) {
+ final AccessPolicyDTO accessPolicy = createAccessPolicyDto(outputPort);
+ dto.getOutputPorts().add(entityFactory.createPortEntity(createPortDto(outputPort), null, accessPolicy));
+ }
+
+ // TODO - controller services once they are accessible from the group
+
+ return dto;
+ }
+
/**
* Creates a ProcessGroupDTO from the specified ProcessGroup.
*
@@ -1449,7 +1587,6 @@ public final class DtoFactory {
ProcessGroup parentGroup = group.getParent();
if (parentGroup != null) {
dto.setParentGroupId(parentGroup.getIdentifier());
- dto.setParent(createParentProcessGroupDto(parentGroup));
}
final ProcessGroupCounts counts = group.getCounts();
@@ -1480,7 +1617,6 @@ public final class DtoFactory {
final FlowSnippetDTO dto = new FlowSnippetDTO();
for (final ProcessorNode procNode : group.getProcessors()) {
- // authorization check
dto.getProcessors().add(createProcessorDto(procNode));
}
@@ -2121,7 +2257,6 @@ public final class DtoFactory {
copy.setPosition(original.getPosition());
copy.setWidth(original.getWidth());
copy.setHeight(original.getHeight());
- copy.setUri(original.getUri());
return copy;
}
@@ -2139,7 +2274,6 @@ public final class DtoFactory {
copy.setReferencingComponents(copy(original.getReferencingComponents()));
copy.setState(original.getState());
copy.setType(original.getType());
- copy.setUri(original.getUri());
copy.setValidationErrors(copy(original.getValidationErrors()));
return copy;
}
@@ -2149,7 +2283,6 @@ public final class DtoFactory {
copy.setId(original.getId());
copy.setParentGroupId(original.getParentGroupId());
copy.setPosition(original.getPosition());
- copy.setUri(original.getUri());
return copy;
}
@@ -2198,7 +2331,6 @@ public final class DtoFactory {
copy.setState(original.getState());
copy.setStyle(copy(original.getStyle()));
copy.setType(original.getType());
- copy.setUri(original.getUri());
copy.setSupportsParallelProcessing(original.getSupportsParallelProcessing());
copy.setSupportsEventDriven(original.getSupportsEventDriven());
copy.setValidationErrors(copy(original.getValidationErrors()));
@@ -2242,7 +2374,6 @@ public final class DtoFactory {
copy.setBackPressureDataSizeThreshold(original.getBackPressureDataSizeThreshold());
copy.setPrioritizers(copy(original.getPrioritizers()));
copy.setSource(original.getSource());
- copy.setUri(original.getUri());
copy.setzIndex(original.getzIndex());
copy.setLabelIndex(original.getLabelIndex());
copy.setBends(copy(original.getBends()));
@@ -2271,7 +2402,6 @@ public final class DtoFactory {
copy.setName(original.getName());
copy.setComments(original.getComments());
copy.setParentGroupId(original.getParentGroupId());
- copy.setUri(original.getUri());
copy.setState(original.getState());
copy.setType(original.getType());
copy.setTransmitting(original.isTransmitting());
@@ -2300,14 +2430,12 @@ public final class DtoFactory {
public ProcessGroupDTO copy(final ProcessGroupDTO original, final boolean deep) {
final ProcessGroupDTO copy = new ProcessGroupDTO();
copy.setComments(original.getComments());
- copy.setContents(copy(original.getContents(), deep));
copy.setPosition(original.getPosition());
copy.setId(original.getId());
copy.setInputPortCount(original.getInputPortCount());
copy.setInvalidCount(original.getInvalidCount());
copy.setName(original.getName());
copy.setOutputPortCount(original.getOutputPortCount());
- copy.setParent(original.getParent());
copy.setParentGroupId(original.getParentGroupId());
copy.setRunning(original.isRunning());
@@ -2316,7 +2444,6 @@ public final class DtoFactory {
copy.setDisabledCount(original.getDisabledCount());
copy.setActiveRemotePortCount(original.getActiveRemotePortCount());
copy.setInactiveRemotePortCount(original.getInactiveRemotePortCount());
- copy.setUri(original.getUri());
return copy;
}
@@ -2356,7 +2483,6 @@ public final class DtoFactory {
copy.setInactiveRemoteOutputPortCount(original.getInactiveRemoteOutputPortCount());
copy.setParentGroupId(original.getParentGroupId());
copy.setTargetUri(original.getTargetUri());
- copy.setUri(original.getUri());
copy.setContents(copyContents);
@@ -2545,6 +2671,12 @@ public final class DtoFactory {
return revisionDTO;
}
+ public RevisionDTO createRevisionDTO(final Long version, final String clientId) {
+ final RevisionDTO dto = new RevisionDTO();
+ dto.setVersion(version);
+ dto.setClientId(clientId);
+ return dto;
+ }
public NodeDTO createNodeDTO(Node node, NodeHeartbeat nodeHeartbeat, List<Event> events, boolean primary) {
final NodeDTO nodeDto = new NodeDTO();
@@ -2599,4 +2731,11 @@ public final class DtoFactory {
this.controllerServiceLookup = lookup;
}
+ public void setAuthorizer(Authorizer authorizer) {
+ this.authorizer = authorizer;
+ }
+
+ public void setEntityFactory(EntityFactory entityFactory) {
+ this.entityFactory = entityFactory;
+ }
}
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/api/dto/EntityFactory.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/EntityFactory.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/EntityFactory.java
new file mode 100644
index 0000000..0d46d94
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/EntityFactory.java
@@ -0,0 +1,155 @@
+/*
+ * 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.web.api.dto;
+
+import org.apache.nifi.web.api.entity.ConnectionEntity;
+import org.apache.nifi.web.api.entity.ControllerServiceEntity;
+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;
+
+public final class EntityFactory {
+
+ public ProcessorEntity createProcessorEntity(final ProcessorDTO dto, final RevisionDTO revision, final AccessPolicyDTO accessPolicy) {
+ final ProcessorEntity entity = new ProcessorEntity();
+ entity.setRevision(revision);
+ if (dto != null) {
+ entity.setAccessPolicy(accessPolicy);
+ entity.setId(dto.getId());
+ entity.setPosition(dto.getPosition());
+ if (accessPolicy != null && accessPolicy.getCanRead()) {
+ entity.setComponent(dto);
+ }
+ }
+ return entity;
+ }
+
+ public PortEntity createPortEntity(final PortDTO dto, final RevisionDTO revision, final AccessPolicyDTO accessPolicy) {
+ final PortEntity entity = new PortEntity();
+ entity.setRevision(revision);
+ if (dto != null) {
+ entity.setAccessPolicy(accessPolicy);
+ entity.setId(dto.getId());
+ entity.setPosition(dto.getPosition());
+ entity.setPortType(dto.getType());
+ if (accessPolicy != null && accessPolicy.getCanRead()) {
+ entity.setComponent(dto);
+ }
+ }
+ return entity;
+ }
+
+ public ProcessGroupEntity createProcessGroupEntity(final ProcessGroupDTO dto, final RevisionDTO revision, final AccessPolicyDTO accessPolicy) {
+ final ProcessGroupEntity entity = new ProcessGroupEntity();
+ entity.setRevision(revision);
+ if (dto != null) {
+ entity.setAccessPolicy(accessPolicy);
+ entity.setId(dto.getId());
+ entity.setPosition(dto.getPosition());
+ if (accessPolicy != null && accessPolicy.getCanRead()) {
+ entity.setComponent(dto);
+ }
+ }
+ return entity;
+ }
+
+ public LabelEntity createLabelEntity(final LabelDTO dto, final RevisionDTO revision, final AccessPolicyDTO accessPolicy) {
+ final LabelEntity entity = new LabelEntity();
+ entity.setRevision(revision);
+ if (dto != null) {
+ entity.setAccessPolicy(accessPolicy);
+ entity.setId(dto.getId());
+ entity.setPosition(dto.getPosition());
+
+ final DimensionsDTO dimensions = new DimensionsDTO();
+ dimensions.setHeight(dto.getHeight());
+ dimensions.setWidth(dto.getWidth());
+ entity.setDimensions(dimensions);
+
+ if (accessPolicy != null && accessPolicy.getCanRead()) {
+ entity.setComponent(dto);
+ }
+ }
+ return entity;
+ }
+
+ public FunnelEntity createFunnelEntity(final FunnelDTO dto, final RevisionDTO revision, final AccessPolicyDTO accessPolicy) {
+ final FunnelEntity entity = new FunnelEntity();
+ entity.setRevision(revision);
+ if (dto != null) {
+ entity.setAccessPolicy(accessPolicy);
+ entity.setId(dto.getId());
+ entity.setPosition(dto.getPosition());
+ if (accessPolicy != null && accessPolicy.getCanRead()) {
+ entity.setComponent(dto);
+ }
+ }
+ return entity;
+ }
+
+ public ConnectionEntity createConnectionEntity(final ConnectionDTO dto, final RevisionDTO revision, final AccessPolicyDTO accessPolicy) {
+ final ConnectionEntity entity = new ConnectionEntity();
+ entity.setRevision(revision);
+ if (dto != null) {
+ entity.setAccessPolicy(accessPolicy);
+ entity.setId(dto.getId());
+ entity.setPosition(dto.getPosition());
+ entity.setBends(dto.getBends());
+ entity.setLabelIndex(dto.getLabelIndex());
+ entity.setSourceId(dto.getSource().getId());
+ entity.setSourceGroupId(dto.getSource().getGroupId());
+ entity.setDestinationId(dto.getDestination().getId());
+ entity.setDestinationGroupId(dto.getDestination().getGroupId());
+ if (accessPolicy != null && accessPolicy.getCanRead()) {
+ entity.setComponent(dto);
+ }
+ }
+ return entity;
+ }
+
+ public ControllerServiceEntity createControllerServiceEntity(final ControllerServiceDTO dto, final RevisionDTO revision, final AccessPolicyDTO accessPolicy) {
+ final ControllerServiceEntity entity = new ControllerServiceEntity();
+ entity.setRevision(revision);
+ if (dto != null) {
+ entity.setAccessPolicy(accessPolicy);
+ entity.setId(dto.getId());
+ entity.setPosition(dto.getPosition());
+ if (accessPolicy != null && accessPolicy.getCanRead()) {
+ entity.setControllerService(dto);
+ }
+ }
+ return entity;
+ }
+
+ public RemoteProcessGroupEntity createRemoteProcessGroupEntity(final RemoteProcessGroupDTO dto, final RevisionDTO revision, final AccessPolicyDTO accessPolicy) {
+ final RemoteProcessGroupEntity entity = new RemoteProcessGroupEntity();
+ entity.setRevision(revision);
+ if (dto != null) {
+ entity.setAccessPolicy(accessPolicy);
+ entity.setId(dto.getId());
+ entity.setPosition(dto.getPosition());
+ if (accessPolicy != null && accessPolicy.getCanRead()) {
+ entity.setComponent(dto);
+ }
+ }
+ return entity;
+ }
+
+}
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/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 e8686a3..40e2ee8 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
@@ -21,8 +21,11 @@ import org.apache.commons.lang3.ClassUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.nifi.admin.service.KeyService;
import org.apache.nifi.authorization.Resource;
+import org.apache.nifi.authorization.resource.Authorizable;
import org.apache.nifi.authorization.resource.ResourceFactory;
import org.apache.nifi.authorization.resource.ResourceType;
+import org.apache.nifi.authorization.user.NiFiUser;
+import org.apache.nifi.authorization.user.NiFiUserUtils;
import org.apache.nifi.cluster.protocol.NodeIdentifier;
import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.connectable.Connectable;
@@ -79,7 +82,6 @@ import org.apache.nifi.search.SearchContext;
import org.apache.nifi.search.SearchResult;
import org.apache.nifi.search.Searchable;
import org.apache.nifi.services.FlowService;
-import org.apache.nifi.user.NiFiUser;
import org.apache.nifi.util.FormatUtils;
import org.apache.nifi.util.NiFiProperties;
import org.apache.nifi.web.DownloadableContent;
@@ -108,7 +110,6 @@ 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.security.ProxiedEntitiesUtils;
-import org.apache.nifi.web.security.user.NiFiUserUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -132,7 +133,7 @@ import java.util.TimeZone;
import java.util.TreeSet;
import java.util.concurrent.TimeUnit;
-public class ControllerFacade {
+public class ControllerFacade implements Authorizable {
private static final Logger logger = LoggerFactory.getLogger(ControllerFacade.class);
@@ -177,6 +178,16 @@ public class ControllerFacade {
flowController.setName(name);
}
+ @Override
+ public Authorizable getParentAuthorizable() {
+ return null;
+ }
+
+ @Override
+ public Resource getResource() {
+ return ResourceFactory.getControllerResource();
+ }
+
/**
* Sets the comments of this controller.
*
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/dao/TemplateDAO.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/TemplateDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/TemplateDAO.java
index 014a607..13fe66d 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/TemplateDAO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/TemplateDAO.java
@@ -16,11 +16,12 @@
*/
package org.apache.nifi.web.dao;
-import java.util.Set;
import org.apache.nifi.controller.Template;
import org.apache.nifi.web.api.dto.FlowSnippetDTO;
import org.apache.nifi.web.api.dto.TemplateDTO;
+import java.util.Set;
+
public interface TemplateDAO {
/**
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/dao/impl/StandardConnectionDAO.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardConnectionDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardConnectionDAO.java
index 29bd9b3..8a6bc3e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardConnectionDAO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardConnectionDAO.java
@@ -16,7 +16,10 @@
*/
package org.apache.nifi.web.dao.impl;
-import org.apache.nifi.admin.service.KeyService;
+import org.apache.nifi.authorization.Authorizer;
+import org.apache.nifi.authorization.RequestAction;
+import org.apache.nifi.authorization.user.NiFiUser;
+import org.apache.nifi.authorization.user.NiFiUserUtils;
import org.apache.nifi.connectable.Connectable;
import org.apache.nifi.connectable.ConnectableType;
import org.apache.nifi.connectable.Connection;
@@ -34,7 +37,6 @@ import org.apache.nifi.groups.ProcessGroup;
import org.apache.nifi.groups.RemoteProcessGroup;
import org.apache.nifi.processor.Relationship;
import org.apache.nifi.remote.RemoteGroupPort;
-import org.apache.nifi.user.NiFiUser;
import org.apache.nifi.util.FormatUtils;
import org.apache.nifi.web.DownloadableContent;
import org.apache.nifi.web.ResourceNotFoundException;
@@ -43,7 +45,6 @@ import org.apache.nifi.web.api.dto.ConnectionDTO;
import org.apache.nifi.web.api.dto.PositionDTO;
import org.apache.nifi.web.dao.ConnectionDAO;
import org.apache.nifi.web.security.ProxiedEntitiesUtils;
-import org.apache.nifi.web.security.user.NiFiUserUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -63,7 +64,7 @@ public class StandardConnectionDAO extends ComponentDAO implements ConnectionDAO
private static final Logger logger = LoggerFactory.getLogger(StandardConnectionDAO.class);
private FlowController flowController;
- private KeyService keyService;
+ private Authorizer authorizer;
private Connection locateConnection(final String connectionId) {
final ProcessGroup rootGroup = flowController.getGroup(flowController.getRootGroupId());
@@ -292,6 +293,9 @@ public class StandardConnectionDAO extends ComponentDAO implements ConnectionDAO
source = sourceGroup.getConnectable(sourceConnectableDTO.getId());
}
+ // ensure the user has write access to the source component
+ source.authorize(authorizer, RequestAction.WRITE);
+
// find the destination
final Connectable destination;
if (ConnectableType.REMOTE_INPUT_PORT.name().equals(destinationConnectableDTO.getType())) {
@@ -315,6 +319,9 @@ public class StandardConnectionDAO extends ComponentDAO implements ConnectionDAO
destination = destinationGroup.getConnectable(destinationConnectableDTO.getId());
}
+ // ensure the user has write access to the source component
+ destination.authorize(authorizer, RequestAction.WRITE);
+
// determine the relationships
final Set<String> relationships = new HashSet<>();
if (isNotNull(connectionDTO.getSelectedRelationships())) {
@@ -612,7 +619,7 @@ public class StandardConnectionDAO extends ComponentDAO implements ConnectionDAO
this.flowController = flowController;
}
- public void setKeyService(KeyService keyService) {
- this.keyService = keyService;
+ public void setAuthorizer(Authorizer authorizer) {
+ this.authorizer = authorizer;
}
}
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/filter/RequestLogger.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/filter/RequestLogger.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/filter/RequestLogger.java
index 9f63611..bb30a1e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/filter/RequestLogger.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/filter/RequestLogger.java
@@ -26,9 +26,9 @@ import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
+import org.apache.nifi.authorization.user.NiFiUserUtils;
import org.apache.nifi.logging.NiFiLog;
-import org.apache.nifi.web.security.user.NiFiUserUtils;
-import org.apache.nifi.user.NiFiUser;
+import org.apache.nifi.authorization.user.NiFiUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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/resources/nifi-web-api-context.xml
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/resources/nifi-web-api-context.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/resources/nifi-web-api-context.xml
index 0f79369..9f13a23 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/resources/nifi-web-api-context.xml
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/resources/nifi-web-api-context.xml
@@ -49,9 +49,14 @@
<property name="clusterManager" ref="clusterManager"/>
</bean>
+ <!-- entity factory -->
+ <bean id="entityFactory" class="org.apache.nifi.web.api.dto.EntityFactory"></bean>
+
<!-- dto factory -->
<bean id="dtoFactory" class="org.apache.nifi.web.api.dto.DtoFactory">
<property name="controllerServiceLookup" ref="controllerServiceProvider" />
+ <property name="entityFactory" ref="entityFactory"/>
+ <property name="authorizer" ref="authorizer"/>
</bean>
<!-- snippet utils -->
@@ -81,7 +86,7 @@
</bean>
<bean id="connectionDAO" class="org.apache.nifi.web.dao.impl.StandardConnectionDAO">
<property name="flowController" ref="flowController"/>
- <property name="keyService" ref="keyService"/>
+ <property name="authorizer" ref="authorizer"/>
</bean>
<bean id="processorDAO" class="org.apache.nifi.web.dao.impl.StandardProcessorDAO">
<property name="flowController" ref="flowController"/>
@@ -115,6 +120,7 @@
</bean>
<bean id="serviceFacade" class="org.apache.nifi.web.StandardNiFiServiceFacade">
<property name="properties" ref="nifiProperties"/>
+ <property name="authorizer" ref="authorizer"/>
<property name="controllerFacade" ref="controllerFacade"/>
<property name="processorDAO" ref="processorDAO"/>
<property name="inputPortDAO" ref="inputPortDAO"/>
@@ -133,6 +139,7 @@
<property name="snippetUtils" ref="snippetUtils"/>
<property name="optimisticLockingManager" ref="webOptimisticLockingManager"/>
<property name="dtoFactory" ref="dtoFactory"/>
+ <property name="entityFactory" ref="entityFactory"/>
<property name="clusterManager" ref="clusterManager"/>
</bean>
@@ -158,8 +165,19 @@
<!-- rest endpoints -->
<bean id="flowResource" class="org.apache.nifi.web.api.FlowResource" scope="singleton">
<property name="serviceFacade" ref="serviceFacade"/>
+ <property name="authorizer" ref="authorizer"/>
<property name="properties" ref="nifiProperties"/>
<property name="clusterManager" ref="clusterManager"/>
+ <property name="processorResource" ref="processorResource"/>
+ <property name="inputPortResource" ref="inputPortResource"/>
+ <property name="outputPortResource" ref="outputPortResource"/>
+ <property name="funnelResource" ref="funnelResource"/>
+ <property name="labelResource" ref="labelResource"/>
+ <property name="remoteProcessGroupResource" ref="remoteProcessGroupResource"/>
+ <property name="connectionResource" ref="connectionResource"/>
+ <property name="templateResource" ref="templateResource"/>
+ <property name="controllerServiceResource" ref="controllerServiceResource"/>
+ <property name="processGroupResource" ref="processGroupResource"/>
</bean>
<bean id="resourceResource" class="org.apache.nifi.web.api.ResourceResource" scope="singleton">
<property name="serviceFacade" ref="serviceFacade"/>
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/test/java/org/apache/nifi/integration/NiFiWebApiTest.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/NiFiWebApiTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/NiFiWebApiTest.java
index dbe158a..eecc28a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/NiFiWebApiTest.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/NiFiWebApiTest.java
@@ -19,8 +19,6 @@ package org.apache.nifi.integration;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.ClientResponse.Status;
-import java.util.HashSet;
-import java.util.Set;
import org.apache.nifi.connectable.ConnectableType;
import org.apache.nifi.integration.accesscontrol.DfmAccessControlTest;
import org.apache.nifi.integration.util.NiFiTestUser;
@@ -34,13 +32,15 @@ import org.apache.nifi.web.api.dto.ProcessGroupDTO;
import org.apache.nifi.web.api.dto.ProcessorDTO;
import org.apache.nifi.web.api.dto.RevisionDTO;
import org.apache.nifi.web.api.entity.ConnectionEntity;
-import org.apache.nifi.web.api.entity.InputPortEntity;
import org.apache.nifi.web.api.entity.LabelEntity;
-import org.apache.nifi.web.api.entity.OutputPortEntity;
+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.junit.Ignore;
+import java.util.HashSet;
+import java.util.Set;
+
/**
*
*/
@@ -66,7 +66,7 @@ public class NiFiWebApiTest {
// create the local selection processor entity
ProcessorEntity processorEntity = new ProcessorEntity();
processorEntity.setRevision(revision);
- processorEntity.setProcessor(processorDTO);
+ processorEntity.setComponent(processorDTO);
// add the processor
ClientResponse response = dfm.testPost(baseUrl + "/controller/process-groups/root/processors", processorEntity);
@@ -81,7 +81,7 @@ public class NiFiWebApiTest {
// get the processors id
processorEntity = response.getEntity(ProcessorEntity.class);
- processorDTO = processorEntity.getProcessor();
+ processorDTO = processorEntity.getComponent();
String localSelectionId = processorDTO.getId();
// -----------------------------------------------
@@ -95,7 +95,7 @@ public class NiFiWebApiTest {
// create the termination processor entity
processorEntity = new ProcessorEntity();
processorEntity.setRevision(revision);
- processorEntity.setProcessor(processorDTO);
+ processorEntity.setComponent(processorDTO);
// add the processor
response = dfm.testPost(baseUrl + "/controller/process-groups/root/processors", processorEntity);
@@ -110,7 +110,7 @@ public class NiFiWebApiTest {
// get the processors id
processorEntity = response.getEntity(ProcessorEntity.class);
- processorDTO = processorEntity.getProcessor();
+ processorDTO = processorEntity.getComponent();
String terminationId = processorDTO.getId();
// -----------------------------------------------
@@ -137,7 +137,7 @@ public class NiFiWebApiTest {
// create the connection entity
ConnectionEntity connectionEntity = new ConnectionEntity();
connectionEntity.setRevision(revision);
- connectionEntity.setConnection(connectionDTO);
+ connectionEntity.setComponent(connectionDTO);
// add the processor
response = dfm.testPost(baseUrl + "/controller/process-groups/root/connections", connectionEntity);
@@ -160,7 +160,7 @@ public class NiFiWebApiTest {
// create the label entity
LabelEntity labelEntity = new LabelEntity();
labelEntity.setRevision(revision);
- labelEntity.setLabel(labelDTO);
+ labelEntity.setComponent(labelDTO);
// add the label
response = dfm.testPost(baseUrl + "/controller/process-groups/root/labels", labelEntity);
@@ -183,7 +183,7 @@ public class NiFiWebApiTest {
// create the process group entity
ProcessGroupEntity processGroupEntity = new ProcessGroupEntity();
processGroupEntity.setRevision(revision);
- processGroupEntity.setProcessGroup(processGroup);
+ processGroupEntity.setComponent(processGroup);
// add the process group
response = dfm.testPost(baseUrl + "/controller/process-groups/root/process-group-references", processGroupEntity);
@@ -204,9 +204,9 @@ public class NiFiWebApiTest {
inputPort.setName("input");
// create the input port entity
- InputPortEntity inputPortEntity = new InputPortEntity();
+ PortEntity inputPortEntity = new PortEntity();
inputPortEntity.setRevision(revision);
- inputPortEntity.setInputPort(inputPort);
+ inputPortEntity.setComponent(inputPort);
// add the input port
response = dfm.testPost(baseUrl + "/controller/process-groups/root/input-ports", inputPortEntity);
@@ -227,9 +227,9 @@ public class NiFiWebApiTest {
outputPort.setName("output");
// create the process group entity
- OutputPortEntity outputPortEntity = new OutputPortEntity();
+ PortEntity outputPortEntity = new PortEntity();
outputPortEntity.setRevision(revision);
- outputPortEntity.setOutputPort(outputPort);
+ outputPortEntity.setComponent(outputPort);
// add the output port
response = dfm.testPost(baseUrl + "/controller/process-groups/root/output-ports", outputPortEntity);
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/test/java/org/apache/nifi/integration/accesscontrol/AccessTokenEndpointTest.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/AccessTokenEndpointTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/AccessTokenEndpointTest.java
index 5b96c6e..e43747d 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/AccessTokenEndpointTest.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/AccessTokenEndpointTest.java
@@ -166,7 +166,7 @@ public class AccessTokenEndpointTest {
// create the entity body
ProcessorEntity entity = new ProcessorEntity();
entity.setRevision(revision);
- entity.setProcessor(processor);
+ entity.setComponent(processor);
// perform the request
ClientResponse response = TOKEN_USER.testPostWithHeaders(url, entity, headers);
@@ -178,7 +178,7 @@ public class AccessTokenEndpointTest {
entity = response.getEntity(ProcessorEntity.class);
// verify creation
- processor = entity.getProcessor();
+ processor = entity.getComponent();
Assert.assertEquals("Copy", processor.getName());
Assert.assertEquals("org.apache.nifi.integration.util.SourceTestProcessor", processor.getType());
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/test/java/org/apache/nifi/integration/accesscontrol/AdminAccessControlTest.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/AdminAccessControlTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/AdminAccessControlTest.java
index dd69954..12693b2 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/AdminAccessControlTest.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/AdminAccessControlTest.java
@@ -17,9 +17,7 @@
package org.apache.nifi.integration.accesscontrol;
import com.sun.jersey.api.client.ClientResponse;
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.nifi.integration.NiFiWebApiTest;
import org.apache.nifi.integration.util.NiFiTestServer;
import org.apache.nifi.integration.util.NiFiTestUser;
@@ -35,12 +33,11 @@ import org.apache.nifi.web.api.entity.BannerEntity;
import org.apache.nifi.web.api.entity.ConnectionEntity;
import org.apache.nifi.web.api.entity.ConnectionsEntity;
import org.apache.nifi.web.api.entity.ControllerConfigurationEntity;
-import org.apache.nifi.web.api.entity.InputPortEntity;
import org.apache.nifi.web.api.entity.InputPortsEntity;
import org.apache.nifi.web.api.entity.LabelEntity;
import org.apache.nifi.web.api.entity.LabelsEntity;
-import org.apache.nifi.web.api.entity.OutputPortEntity;
import org.apache.nifi.web.api.entity.OutputPortsEntity;
+import org.apache.nifi.web.api.entity.PortEntity;
import org.apache.nifi.web.api.entity.PrioritizerTypesEntity;
import org.apache.nifi.web.api.entity.ProcessGroupEntity;
import org.apache.nifi.web.api.entity.ProcessGroupsEntity;
@@ -49,13 +46,16 @@ import org.apache.nifi.web.api.entity.ProcessorTypesEntity;
import org.apache.nifi.web.api.entity.ProcessorsEntity;
import org.apache.nifi.web.api.entity.UserEntity;
import org.apache.nifi.web.api.entity.UsersEntity;
-import org.apache.commons.collections4.CollectionUtils;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Access control test for the admin user.
*/
@@ -129,7 +129,7 @@ public class AdminAccessControlTest {
Assert.assertNotNull(processGroupEntity);
// extract the process group dto
- ProcessGroupDTO processGroupDTO = processGroupEntity.getProcessGroup();
+ ProcessGroupDTO processGroupDTO = processGroupEntity.getComponent();
FlowSnippetDTO processGroupContentsDTO = processGroupDTO.getContents();
// verify graph
@@ -634,7 +634,7 @@ public class AdminAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- InputPortEntity entity = new InputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
// perform the request
@@ -659,7 +659,7 @@ public class AdminAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- InputPortEntity entity = new InputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
// perform the request
@@ -724,7 +724,7 @@ public class AdminAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- OutputPortEntity entity = new OutputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
// perform the request
@@ -749,7 +749,7 @@ public class AdminAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- OutputPortEntity entity = new OutputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
// perform the request
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/test/java/org/apache/nifi/integration/accesscontrol/DfmAccessControlTest.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/DfmAccessControlTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/DfmAccessControlTest.java
index 914cf60..ecbb374 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/DfmAccessControlTest.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/DfmAccessControlTest.java
@@ -20,19 +20,6 @@ import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.multipart.BodyPart;
import com.sun.jersey.multipart.FormDataBodyPart;
import com.sun.jersey.multipart.FormDataMultiPart;
-import java.io.File;
-import java.nio.file.DirectoryStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import javax.ws.rs.core.MediaType;
-import org.junit.Assert;
import org.apache.nifi.connectable.ConnectableType;
import org.apache.nifi.controller.ScheduledState;
import org.apache.nifi.integration.NiFiWebApiTest;
@@ -57,12 +44,11 @@ import org.apache.nifi.web.api.entity.BannerEntity;
import org.apache.nifi.web.api.entity.ConnectionEntity;
import org.apache.nifi.web.api.entity.ConnectionsEntity;
import org.apache.nifi.web.api.entity.ControllerConfigurationEntity;
-import org.apache.nifi.web.api.entity.InputPortEntity;
import org.apache.nifi.web.api.entity.InputPortsEntity;
import org.apache.nifi.web.api.entity.LabelEntity;
import org.apache.nifi.web.api.entity.LabelsEntity;
-import org.apache.nifi.web.api.entity.OutputPortEntity;
import org.apache.nifi.web.api.entity.OutputPortsEntity;
+import org.apache.nifi.web.api.entity.PortEntity;
import org.apache.nifi.web.api.entity.PrioritizerTypesEntity;
import org.apache.nifi.web.api.entity.ProcessGroupEntity;
import org.apache.nifi.web.api.entity.ProcessGroupsEntity;
@@ -71,10 +57,24 @@ import org.apache.nifi.web.api.entity.ProcessorTypesEntity;
import org.apache.nifi.web.api.entity.ProcessorsEntity;
import org.apache.nifi.web.api.entity.TemplateEntity;
import org.junit.AfterClass;
+import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
+import javax.ws.rs.core.MediaType;
+import java.io.File;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
/**
* Access control test for the dfm user.
*/
@@ -159,7 +159,7 @@ public class DfmAccessControlTest {
Assert.assertNotNull(processGroupEntity);
// extract the process group dto
- ProcessGroupDTO processGroupDTO = processGroupEntity.getProcessGroup();
+ ProcessGroupDTO processGroupDTO = processGroupEntity.getComponent();
FlowSnippetDTO processGroupContentsDTO = processGroupDTO.getContents();
// verify graph
@@ -371,7 +371,7 @@ public class DfmAccessControlTest {
// create the entity body
ProcessGroupEntity entity = new ProcessGroupEntity();
entity.setRevision(revision);
- entity.setProcessGroup(processGroup);
+ entity.setComponent(processGroup);
// perform the request
ClientResponse response = DFM_USER.testPut(url + "/" + processGroup.getId(), entity);
@@ -401,7 +401,7 @@ public class DfmAccessControlTest {
// create the entity body
ProcessGroupEntity entity = new ProcessGroupEntity();
entity.setRevision(revision);
- entity.setProcessGroup(processGroup);
+ entity.setComponent(processGroup);
// perform the request
ClientResponse response = DFM_USER.testPut(url + "/" + processGroup.getId(), entity);
@@ -411,8 +411,8 @@ public class DfmAccessControlTest {
// get the result
entity = response.getEntity(ProcessGroupEntity.class);
- Assert.assertNotNull(entity.getProcessGroup());
- Assert.assertEquals("new group name", entity.getProcessGroup().getName());
+ Assert.assertNotNull(entity.getComponent());
+ Assert.assertEquals("new group name", entity.getComponent().getName());
}
/**
@@ -436,7 +436,7 @@ public class DfmAccessControlTest {
// create the entity body
ProcessorEntity entity = new ProcessorEntity();
entity.setRevision(revision);
- entity.setProcessor(processor);
+ entity.setComponent(processor);
// perform the request
ClientResponse response = DFM_USER.testPut(url + "/" + processor.getId(), entity);
@@ -466,7 +466,7 @@ public class DfmAccessControlTest {
// create the entity body
ProcessorEntity entity = new ProcessorEntity();
entity.setRevision(revision);
- entity.setProcessor(processor);
+ entity.setComponent(processor);
// perform the request
ClientResponse response = DFM_USER.testPut(url + "/" + processor.getId(), entity);
@@ -476,8 +476,8 @@ public class DfmAccessControlTest {
// get the result
entity = response.getEntity(ProcessorEntity.class);
- Assert.assertNotNull(entity.getProcessor());
- Assert.assertEquals("new processor name", entity.getProcessor().getName());
+ Assert.assertNotNull(entity.getComponent());
+ Assert.assertEquals("new processor name", entity.getComponent().getName());
}
/**
@@ -501,7 +501,7 @@ public class DfmAccessControlTest {
// create the entity body
ConnectionEntity entity = new ConnectionEntity();
entity.setRevision(revision);
- entity.setConnection(connection);
+ entity.setComponent(connection);
// perform the request
ClientResponse response = DFM_USER.testPut(url + "/" + connection.getId(), entity);
@@ -531,7 +531,7 @@ public class DfmAccessControlTest {
// create the entity body
LabelEntity entity = new LabelEntity();
entity.setRevision(revision);
- entity.setLabel(label);
+ entity.setComponent(label);
// perform the request
ClientResponse response = DFM_USER.testPut(url + "/" + label.getId(), entity);
@@ -541,8 +541,8 @@ public class DfmAccessControlTest {
// get the result
entity = response.getEntity(LabelEntity.class);
- Assert.assertNotNull(entity.getLabel());
- Assert.assertEquals("new label", entity.getLabel().getLabel());
+ Assert.assertNotNull(entity.getComponent());
+ Assert.assertEquals("new label", entity.getComponent().getLabel());
}
/**
@@ -564,9 +564,9 @@ public class DfmAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- InputPortEntity entity = new InputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
- entity.setInputPort(inputPort);
+ entity.setComponent(inputPort);
// perform the request
ClientResponse response = DFM_USER.testPut(url + "/" + inputPort.getId(), entity);
@@ -575,9 +575,9 @@ public class DfmAccessControlTest {
Assert.assertEquals(200, response.getStatus());
// get the result
- entity = response.getEntity(InputPortEntity.class);
- Assert.assertNotNull(entity.getInputPort());
- Assert.assertEquals("new input port name", entity.getInputPort().getName());
+ entity = response.getEntity(PortEntity.class);
+ Assert.assertNotNull(entity.getComponent());
+ Assert.assertEquals("new input port name", entity.getComponent().getName());
}
/**
@@ -599,9 +599,9 @@ public class DfmAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- OutputPortEntity entity = new OutputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
- entity.setOutputPort(outputPort);
+ entity.setComponent(outputPort);
// perform the request
ClientResponse response = DFM_USER.testPut(url + "/" + outputPort.getId(), entity);
@@ -610,9 +610,9 @@ public class DfmAccessControlTest {
Assert.assertEquals(200, response.getStatus());
// get the result
- entity = response.getEntity(OutputPortEntity.class);
- Assert.assertNotNull(entity.getOutputPort());
- Assert.assertEquals("new output port name", entity.getOutputPort().getName());
+ entity = response.getEntity(PortEntity.class);
+ Assert.assertNotNull(entity.getComponent());
+ Assert.assertEquals("new output port name", entity.getComponent().getName());
}
// ----------------------------------------------
@@ -761,15 +761,15 @@ public class DfmAccessControlTest {
// get the process group dtos
ProcessGroupsEntity processGroupEntity = response.getEntity(ProcessGroupsEntity.class);
- Collection<ProcessGroupDTO> processGroups = processGroupEntity.getProcessGroups();
+ Collection<ProcessGroupEntity> processGroups = processGroupEntity.getProcessGroups();
// ensure the correct number of processor groups
Assert.assertFalse(processGroups.isEmpty());
// use the first process group as the target
- Iterator<ProcessGroupDTO> processorIter = processGroups.iterator();
+ Iterator<ProcessGroupEntity> processorIter = processGroups.iterator();
Assert.assertTrue(processorIter.hasNext());
- return processorIter.next();
+ return processorIter.next().getComponent();
}
private ProcessorDTO getRandomProcessor() throws Exception {
@@ -783,15 +783,15 @@ public class DfmAccessControlTest {
// get the processor dtos
ProcessorsEntity processorsEntity = response.getEntity(ProcessorsEntity.class);
- Collection<ProcessorDTO> processors = processorsEntity.getProcessors();
+ Collection<ProcessorEntity> processors = processorsEntity.getProcessors();
// ensure the correct number of processors
Assert.assertFalse(processors.isEmpty());
// use the first processor as the target
- Iterator<ProcessorDTO> processorIter = processors.iterator();
+ Iterator<ProcessorEntity> processorIter = processors.iterator();
Assert.assertTrue(processorIter.hasNext());
- return processorIter.next();
+ return processorIter.next().getComponent();
}
private ConnectionDTO getRandomConnection() throws Exception {
@@ -805,15 +805,15 @@ public class DfmAccessControlTest {
// get the connection dtos
ConnectionsEntity connectionEntity = response.getEntity(ConnectionsEntity.class);
- Collection<ConnectionDTO> connections = connectionEntity.getConnections();
+ Collection<ConnectionEntity> connections = connectionEntity.getConnections();
// ensure the correct number of connections
Assert.assertFalse(connections.isEmpty());
// use the first connection as the target
- Iterator<ConnectionDTO> connectionIter = connections.iterator();
+ Iterator<ConnectionEntity> connectionIter = connections.iterator();
Assert.assertTrue(connectionIter.hasNext());
- return connectionIter.next();
+ return connectionIter.next().getComponent();
}
private LabelDTO getRandomLabel() throws Exception {
@@ -827,15 +827,15 @@ public class DfmAccessControlTest {
// get the label dtos
LabelsEntity labelEntity = response.getEntity(LabelsEntity.class);
- Collection<LabelDTO> labels = labelEntity.getLabels();
+ Collection<LabelEntity> labels = labelEntity.getLabels();
// ensure the correct number of labels
Assert.assertFalse(labels.isEmpty());
// use the first label as the target
- Iterator<LabelDTO> labelIter = labels.iterator();
+ Iterator<LabelEntity> labelIter = labels.iterator();
Assert.assertTrue(labelIter.hasNext());
- return labelIter.next();
+ return labelIter.next().getComponent();
}
private PortDTO getRandomInputPort() throws Exception {
@@ -849,15 +849,15 @@ public class DfmAccessControlTest {
// get the port dtos
InputPortsEntity inputPortsEntity = response.getEntity(InputPortsEntity.class);
- Collection<PortDTO> inputPorts = inputPortsEntity.getInputPorts();
+ Collection<PortEntity> inputPorts = inputPortsEntity.getInputPorts();
// ensure the correct number of ports
Assert.assertFalse(inputPorts.isEmpty());
// use the first port as the target
- Iterator<PortDTO> inputPortsIter = inputPorts.iterator();
+ Iterator<PortEntity> inputPortsIter = inputPorts.iterator();
Assert.assertTrue(inputPortsIter.hasNext());
- return inputPortsIter.next();
+ return inputPortsIter.next().getComponent();
}
private PortDTO getRandomOutputPort() throws Exception {
@@ -871,15 +871,15 @@ public class DfmAccessControlTest {
// get the port dtos
OutputPortsEntity outputPortsEntity = response.getEntity(OutputPortsEntity.class);
- Collection<PortDTO> outputPorts = outputPortsEntity.getOutputPorts();
+ Collection<PortEntity> outputPorts = outputPortsEntity.getOutputPorts();
// ensure the correct number of ports
Assert.assertFalse(outputPorts.isEmpty());
// use the first port as the target
- Iterator<PortDTO> inputPortsIter = outputPorts.iterator();
+ Iterator<PortEntity> inputPortsIter = outputPorts.iterator();
Assert.assertTrue(inputPortsIter.hasNext());
- return inputPortsIter.next();
+ return inputPortsIter.next().getComponent();
}
// ----------------------------------------------
@@ -900,7 +900,7 @@ public class DfmAccessControlTest {
// create the entity body
ProcessGroupEntity entity = new ProcessGroupEntity();
entity.setRevision(revision);
- entity.setProcessGroup(processGroup);
+ entity.setComponent(processGroup);
// perform the request
ClientResponse response = DFM_USER.testPost(url, entity);
@@ -912,7 +912,7 @@ public class DfmAccessControlTest {
entity = response.getEntity(ProcessGroupEntity.class);
// verify creation
- processGroup = entity.getProcessGroup();
+ processGroup = entity.getComponent();
Assert.assertEquals("Group1", processGroup.getName());
// get the process group
@@ -932,9 +932,9 @@ public class DfmAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- InputPortEntity entity = new InputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
- entity.setInputPort(portDTO);
+ entity.setComponent(portDTO);
// perform the request
ClientResponse response = DFM_USER.testPost(url, entity);
@@ -943,10 +943,10 @@ public class DfmAccessControlTest {
Assert.assertEquals(201, response.getStatus());
// get the entity body
- entity = response.getEntity(InputPortEntity.class);
+ entity = response.getEntity(PortEntity.class);
// verify creation
- portDTO = entity.getInputPort();
+ portDTO = entity.getComponent();
Assert.assertEquals("Input Port", portDTO.getName());
// get the process group
@@ -966,9 +966,9 @@ public class DfmAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- OutputPortEntity entity = new OutputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
- entity.setOutputPort(portDTO);
+ entity.setComponent(portDTO);
// perform the request
ClientResponse response = DFM_USER.testPost(url, entity);
@@ -977,10 +977,10 @@ public class DfmAccessControlTest {
Assert.assertEquals(201, response.getStatus());
// get the entity body
- entity = response.getEntity(OutputPortEntity.class);
+ entity = response.getEntity(PortEntity.class);
// verify creation
- portDTO = entity.getOutputPort();
+ portDTO = entity.getComponent();
Assert.assertEquals("Output Port", portDTO.getName());
// get the process group
@@ -1003,7 +1003,7 @@ public class DfmAccessControlTest {
// create the entity body
ProcessorEntity entity = new ProcessorEntity();
entity.setRevision(revision);
- entity.setProcessor(processor);
+ entity.setComponent(processor);
// perform the request
ClientResponse response = DFM_USER.testPost(url, entity);
@@ -1015,7 +1015,7 @@ public class DfmAccessControlTest {
entity = response.getEntity(ProcessorEntity.class);
// verify creation
- processor = entity.getProcessor();
+ processor = entity.getComponent();
Assert.assertEquals("Copy", processor.getName());
Assert.assertEquals("org.apache.nifi.integration.util.SourceTestProcessor", processor.getType());
@@ -1054,7 +1054,7 @@ public class DfmAccessControlTest {
// create the entity body
ConnectionEntity entity = new ConnectionEntity();
entity.setRevision(revision);
- entity.setConnection(connection);
+ entity.setComponent(connection);
// perform the request
ClientResponse response = DFM_USER.testPost(url, entity);
@@ -1066,7 +1066,7 @@ public class DfmAccessControlTest {
entity = response.getEntity(ConnectionEntity.class);
// verify the results
- connection = entity.getConnection();
+ connection = entity.getComponent();
Assert.assertEquals(sourceId, connection.getSource().getId());
Assert.assertEquals(targetId, connection.getDestination().getId());
Assert.assertEquals(1, connection.getSelectedRelationships().size());
@@ -1091,7 +1091,7 @@ public class DfmAccessControlTest {
// create the entity body
LabelEntity entity = new LabelEntity();
entity.setRevision(revision);
- entity.setLabel(label);
+ entity.setComponent(label);
// perform the request
ClientResponse response = DFM_USER.testPost(url, entity);
@@ -1103,7 +1103,7 @@ public class DfmAccessControlTest {
entity = response.getEntity(LabelEntity.class);
// verify the results
- label = entity.getLabel();
+ label = entity.getComponent();
Assert.assertEquals("Label2", label.getLabel());
// get the label id
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/test/java/org/apache/nifi/integration/accesscontrol/ReadOnlyAccessControlTest.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/ReadOnlyAccessControlTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/ReadOnlyAccessControlTest.java
index 2ed653a..98a8cd0 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/ReadOnlyAccessControlTest.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/integration/accesscontrol/ReadOnlyAccessControlTest.java
@@ -17,9 +17,6 @@
package org.apache.nifi.integration.accesscontrol;
import com.sun.jersey.api.client.ClientResponse;
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
import org.apache.nifi.integration.NiFiWebApiTest;
import org.apache.nifi.integration.util.NiFiTestServer;
import org.apache.nifi.integration.util.NiFiTestUser;
@@ -34,12 +31,11 @@ import org.apache.nifi.web.api.entity.BannerEntity;
import org.apache.nifi.web.api.entity.ConnectionEntity;
import org.apache.nifi.web.api.entity.ConnectionsEntity;
import org.apache.nifi.web.api.entity.ControllerConfigurationEntity;
-import org.apache.nifi.web.api.entity.InputPortEntity;
import org.apache.nifi.web.api.entity.InputPortsEntity;
import org.apache.nifi.web.api.entity.LabelEntity;
import org.apache.nifi.web.api.entity.LabelsEntity;
-import org.apache.nifi.web.api.entity.OutputPortEntity;
import org.apache.nifi.web.api.entity.OutputPortsEntity;
+import org.apache.nifi.web.api.entity.PortEntity;
import org.apache.nifi.web.api.entity.PrioritizerTypesEntity;
import org.apache.nifi.web.api.entity.ProcessGroupEntity;
import org.apache.nifi.web.api.entity.ProcessGroupsEntity;
@@ -52,6 +48,10 @@ import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Access control test for a read only user.
*/
@@ -125,7 +125,7 @@ public class ReadOnlyAccessControlTest {
Assert.assertNotNull(processGroupEntity);
// extract the process group dto
- ProcessGroupDTO processGroupDTO = processGroupEntity.getProcessGroup();
+ ProcessGroupDTO processGroupDTO = processGroupEntity.getComponent();
FlowSnippetDTO processGroupContentsDTO = processGroupDTO.getContents();
// verify graph
@@ -625,7 +625,7 @@ public class ReadOnlyAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- InputPortEntity entity = new InputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
// perform the request
@@ -650,7 +650,7 @@ public class ReadOnlyAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- InputPortEntity entity = new InputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
// perform the request
@@ -715,7 +715,7 @@ public class ReadOnlyAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- OutputPortEntity entity = new OutputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
// perform the request
@@ -740,7 +740,7 @@ public class ReadOnlyAccessControlTest {
revision.setVersion(NiFiTestUser.REVISION);
// create the entity body
- OutputPortEntity entity = new OutputPortEntity();
+ PortEntity entity = new PortEntity();
entity.setRevision(revision);
// perform the request
http://git-wip-us.apache.org/repos/asf/nifi/blob/ff98d823/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/pom.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/pom.xml
index 22b387c..9a7c69e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/pom.xml
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/pom.xml
@@ -42,6 +42,11 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-framework-authorization</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<scope>provided</scope>
http://git-wip-us.apache.org/repos/asf/nifi/blob/ff98d823/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/java/org/apache/nifi/web/ContentViewerController.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/java/org/apache/nifi/web/ContentViewerController.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/java/org/apache/nifi/web/ContentViewerController.java
index 50ca101..00dc06f 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/java/org/apache/nifi/web/ContentViewerController.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/java/org/apache/nifi/web/ContentViewerController.java
@@ -31,6 +31,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.nifi.authorization.AccessDeniedException;
import org.apache.nifi.stream.io.StreamUtils;
import org.apache.nifi.web.ViewableContent.DisplayMode;
import org.apache.tika.detect.DefaultDetector;
@@ -39,7 +40,6 @@ import org.apache.tika.metadata.Metadata;
import org.apache.tika.mime.MediaType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.security.access.AccessDeniedException;
/**
* Controller servlet for viewing content. This is responsible for generating