Repository: nifi Updated Branches: refs/heads/develop b31c76bf3 -> 0a279ff53
NIFI-795: - Ensuring consistency with response codes when creating new components between standalone and cluster mode. - Fixing checkstyle issues. Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/0a279ff5 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/0a279ff5 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/0a279ff5 Branch: refs/heads/develop Commit: 0a279ff538a69709e97285ad4c9b8de01bd68627 Parents: b31c76b Author: Matt Gilman <[email protected]> Authored: Wed Aug 12 12:59:58 2015 -0400 Committer: Matt Gilman <[email protected]> Committed: Wed Aug 12 12:59:58 2015 -0400 ---------------------------------------------------------------------- .../nifi/web/StandardNiFiServiceFacade.java | 595 ++++++++++++++++--- .../apache/nifi/web/api/ConnectionResource.java | 12 +- .../nifi/web/api/ControllerServiceResource.java | 6 +- .../org/apache/nifi/web/api/FunnelResource.java | 6 +- .../apache/nifi/web/api/InputPortResource.java | 6 +- .../org/apache/nifi/web/api/LabelResource.java | 6 +- .../apache/nifi/web/api/OutputPortResource.java | 6 +- .../nifi/web/api/ProcessGroupResource.java | 31 +- .../apache/nifi/web/api/ProcessorResource.java | 6 +- .../web/api/RemoteProcessGroupResource.java | 6 +- .../nifi/web/api/ReportingTaskResource.java | 6 +- .../apache/nifi/web/api/SnippetResource.java | 6 +- .../apache/nifi/web/ConfigurationRequest.java | 2 +- .../apache/nifi/web/ConfigurationResult.java | 41 ++ .../apache/nifi/web/ConfigurationSnapshot.java | 37 +- .../web/StandardOptimisticLockingManager.java | 4 +- 16 files changed, 655 insertions(+), 121 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/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/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java index 4e50ff3..2286213 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java @@ -376,12 +376,22 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ConnectionDTO>() { @Override - public ConnectionDTO execute() { + public ConfigurationResult<ConnectionDTO> execute() { final Connection connection = connectionDAO.updateConnection(groupId, connectionDTO); controllerFacade.save(); - return dtoFactory.createConnectionDto(connection); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ConnectionDTO getConfiguration() { + return dtoFactory.createConnectionDto(connection); + } + }; } }); } @@ -395,14 +405,24 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ProcessorDTO>() { @Override - public ProcessorDTO execute() { + public ConfigurationResult<ProcessorDTO> execute() { // update the processor - ProcessorNode processor = processorDAO.updateProcessor(groupId, processorDTO); + final ProcessorNode processor = processorDAO.updateProcessor(groupId, processorDTO); // save the flow controllerFacade.save(); - return dtoFactory.createProcessorDto(processor); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ProcessorDTO getConfiguration() { + return dtoFactory.createProcessorDto(processor); + } + }; } }); } @@ -416,14 +436,24 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<LabelDTO>() { @Override - public LabelDTO execute() { + public ConfigurationResult<LabelDTO> execute() { // update the existing label final Label label = labelDAO.updateLabel(groupId, labelDTO); // save updated controller controllerFacade.save(); - return dtoFactory.createLabelDto(label); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public LabelDTO getConfiguration() { + return dtoFactory.createLabelDto(label); + } + }; } }); } @@ -437,14 +467,24 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<FunnelDTO>() { @Override - public FunnelDTO execute() { + public ConfigurationResult<FunnelDTO> execute() { // update the existing label final Funnel funnel = funnelDAO.updateFunnel(groupId, funnelDTO); // save updated controller controllerFacade.save(); - return dtoFactory.createFunnelDto(funnel); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public FunnelDTO getConfiguration() { + return dtoFactory.createFunnelDto(funnel); + } + }; } }); } @@ -467,7 +507,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<SnippetDTO>() { @Override - public SnippetDTO execute() { + public ConfigurationResult<SnippetDTO> execute() { // update the snippet final Snippet snippet = snippetDAO.updateSnippet(snippetDto); @@ -480,7 +520,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { controllerFacade.save(); } - return responseSnippetDto; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public SnippetDTO getConfiguration() { + return responseSnippetDto; + } + }; } }); } @@ -494,13 +544,23 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<PortDTO>() { @Override - public PortDTO execute() { + public ConfigurationResult<PortDTO> execute() { final Port inputPort = inputPortDAO.updatePort(groupId, inputPortDTO); // save updated controller controllerFacade.save(); - return dtoFactory.createPortDto(inputPort); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public PortDTO getConfiguration() { + return dtoFactory.createPortDto(inputPort); + } + }; } }); } @@ -514,13 +574,23 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<PortDTO>() { @Override - public PortDTO execute() { + public ConfigurationResult<PortDTO> execute() { final Port outputPort = outputPortDAO.updatePort(groupId, outputPortDTO); // save updated controller controllerFacade.save(); - return dtoFactory.createPortDto(outputPort); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public PortDTO getConfiguration() { + return dtoFactory.createPortDto(outputPort); + } + }; } }); } @@ -534,13 +604,23 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<RemoteProcessGroupDTO>() { @Override - public RemoteProcessGroupDTO execute() { - RemoteProcessGroup remoteProcessGroup = remoteProcessGroupDAO.updateRemoteProcessGroup(groupId, remoteProcessGroupDTO); + public ConfigurationResult<RemoteProcessGroupDTO> execute() { + final RemoteProcessGroup remoteProcessGroup = remoteProcessGroupDAO.updateRemoteProcessGroup(groupId, remoteProcessGroupDTO); // save updated controller controllerFacade.save(); - return dtoFactory.createRemoteProcessGroupDto(remoteProcessGroup); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public RemoteProcessGroupDTO getConfiguration() { + return dtoFactory.createRemoteProcessGroupDto(remoteProcessGroup); + } + }; } }); } @@ -550,14 +630,24 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { final Revision revision, final String groupId, final String remoteProcessGroupId, final RemoteProcessGroupPortDTO remoteProcessGroupPortDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<RemoteProcessGroupPortDTO>() { @Override - public RemoteProcessGroupPortDTO execute() { + public ConfigurationResult<RemoteProcessGroupPortDTO> execute() { // update the remote port - RemoteGroupPort remoteGroupPort = remoteProcessGroupDAO.updateRemoteProcessGroupInputPort(groupId, remoteProcessGroupId, remoteProcessGroupPortDTO); + final RemoteGroupPort remoteGroupPort = remoteProcessGroupDAO.updateRemoteProcessGroupInputPort(groupId, remoteProcessGroupId, remoteProcessGroupPortDTO); // save updated controller controllerFacade.save(); - return dtoFactory.createRemoteProcessGroupPortDto(remoteGroupPort); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public RemoteProcessGroupPortDTO getConfiguration() { + return dtoFactory.createRemoteProcessGroupPortDto(remoteGroupPort); + } + }; } }); } @@ -567,14 +657,24 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { final Revision revision, final String groupId, final String remoteProcessGroupId, final RemoteProcessGroupPortDTO remoteProcessGroupPortDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<RemoteProcessGroupPortDTO>() { @Override - public RemoteProcessGroupPortDTO execute() { + public ConfigurationResult<RemoteProcessGroupPortDTO> execute() { // update the remote port - RemoteGroupPort remoteGroupPort = remoteProcessGroupDAO.updateRemoteProcessGroupOutputPort(groupId, remoteProcessGroupId, remoteProcessGroupPortDTO); + final RemoteGroupPort remoteGroupPort = remoteProcessGroupDAO.updateRemoteProcessGroupOutputPort(groupId, remoteProcessGroupId, remoteProcessGroupPortDTO); // save updated controller controllerFacade.save(); - return dtoFactory.createRemoteProcessGroupPortDto(remoteGroupPort); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public RemoteProcessGroupPortDTO getConfiguration() { + return dtoFactory.createRemoteProcessGroupPortDto(remoteGroupPort); + } + }; } }); } @@ -592,14 +692,24 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ProcessGroupDTO>() { @Override - public ProcessGroupDTO execute() { + public ConfigurationResult<ProcessGroupDTO> execute() { // update the process group - ProcessGroup processGroup = processGroupDAO.updateProcessGroup(processGroupDTO); + final ProcessGroup processGroup = processGroupDAO.updateProcessGroup(processGroupDTO); // save updated controller controllerFacade.save(); - return dtoFactory.createProcessGroupDto(processGroup); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ProcessGroupDTO getConfiguration() { + return dtoFactory.createProcessGroupDto(processGroup); + } + }; } }); } @@ -608,7 +718,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<ControllerConfigurationDTO> updateControllerConfiguration(final Revision revision, final ControllerConfigurationDTO controllerConfigurationDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ControllerConfigurationDTO>() { @Override - public ControllerConfigurationDTO execute() { + public ConfigurationResult<ControllerConfigurationDTO> execute() { // update the controller configuration through the proxy if (controllerConfigurationDTO.getName() != null) { controllerFacade.setName(controllerConfigurationDTO.getName()); @@ -624,12 +734,22 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { } // create the controller configuration dto - ControllerConfigurationDTO controllerConfig = getControllerConfiguration(); + final ControllerConfigurationDTO controllerConfig = getControllerConfiguration(); // save the flow controllerFacade.save(); - return controllerConfig; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return controllerConfig; + } + }; } }); } @@ -667,13 +787,23 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteConnection(final Revision revision, final String groupId, final String connectionId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { connectionDAO.deleteConnection(groupId, connectionId); // save the flow controllerFacade.save(); - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -682,14 +812,24 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteProcessor(final Revision revision, final String groupId, final String processorId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { // delete the processor and synchronize the connection state processorDAO.deleteProcessor(groupId, processorId); // save the flow controllerFacade.save(); - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -698,14 +838,24 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteLabel(final Revision revision, final String groupId, final String labelId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { // delete the label labelDAO.deleteLabel(groupId, labelId); // save the flow controllerFacade.save(); - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -714,14 +864,24 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteFunnel(final Revision revision, final String groupId, final String funnelId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { // delete the label funnelDAO.deleteFunnel(groupId, funnelId); // save the flow controllerFacade.save(); - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -735,7 +895,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteSnippet(final Revision revision, final String snippetId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { // determine if this snippet was linked to the data flow Snippet snippet = snippetDAO.getSnippet(snippetId); boolean linked = snippet.isLinked(); @@ -748,7 +908,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { controllerFacade.save(); } - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -757,13 +927,23 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteInputPort(final Revision revision, final String groupId, final String inputPortId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { inputPortDAO.deletePort(groupId, inputPortId); // save the flow controllerFacade.save(); - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -772,13 +952,23 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteOutputPort(final Revision revision, final String groupId, final String outputPortId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { outputPortDAO.deletePort(groupId, outputPortId); // save the flow controllerFacade.save(); - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -787,13 +977,23 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteProcessGroup(final Revision revision, final String groupId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { processGroupDAO.deleteProcessGroup(groupId); // save the flow controllerFacade.save(); - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -802,13 +1002,23 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteRemoteProcessGroup(final Revision revision, final String groupId, final String remoteProcessGroupId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { remoteProcessGroupDAO.deleteRemoteProcessGroup(groupId, remoteProcessGroupId); // save the flow controllerFacade.save(); - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -823,7 +1033,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<ConnectionDTO> createConnection(final Revision revision, final String groupId, final ConnectionDTO connectionDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ConnectionDTO>() { @Override - public ConnectionDTO execute() { + public ConfigurationResult<ConnectionDTO> execute() { // ensure id is set if (StringUtils.isBlank(connectionDTO.getId())) { connectionDTO.setId(UUID.randomUUID().toString()); @@ -834,7 +1044,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // save the flow controllerFacade.save(); - return dtoFactory.createConnectionDto(connection); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public ConnectionDTO getConfiguration() { + return dtoFactory.createConnectionDto(connection); + } + }; } }); } @@ -843,7 +1063,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<ProcessorDTO> createProcessor(final Revision revision, final String groupId, final ProcessorDTO processorDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ProcessorDTO>() { @Override - public ProcessorDTO execute() { + public ConfigurationResult<ProcessorDTO> execute() { // ensure id is set if (StringUtils.isBlank(processorDTO.getId())) { processorDTO.setId(UUID.randomUUID().toString()); @@ -855,7 +1075,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // save the flow controllerFacade.save(); - return dtoFactory.createProcessorDto(processor); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public ProcessorDTO getConfiguration() { + return dtoFactory.createProcessorDto(processor); + } + }; } }); } @@ -864,7 +1094,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<LabelDTO> createLabel(final Revision revision, final String groupId, final LabelDTO labelDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<LabelDTO>() { @Override - public LabelDTO execute() { + public ConfigurationResult<LabelDTO> execute() { // ensure id is set if (StringUtils.isBlank(labelDTO.getId())) { labelDTO.setId(UUID.randomUUID().toString()); @@ -876,7 +1106,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // save the flow controllerFacade.save(); - return dtoFactory.createLabelDto(label); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public LabelDTO getConfiguration() { + return dtoFactory.createLabelDto(label); + } + }; } }); } @@ -885,7 +1125,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<FunnelDTO> createFunnel(final Revision revision, final String groupId, final FunnelDTO funnelDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<FunnelDTO>() { @Override - public FunnelDTO execute() { + public ConfigurationResult<FunnelDTO> execute() { // ensure id is set if (StringUtils.isBlank(funnelDTO.getId())) { funnelDTO.setId(UUID.randomUUID().toString()); @@ -897,7 +1137,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // save the flow controllerFacade.save(); - return dtoFactory.createFunnelDto(funnel); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public FunnelDTO getConfiguration() { + return dtoFactory.createFunnelDto(funnel); + } + }; } }); } @@ -961,7 +1211,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { 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>() { @Override - public FlowSnippetDTO execute() { + public ConfigurationResult<FlowSnippetDTO> execute() { String id = snippetId; // ensure id is set @@ -970,7 +1220,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { } // create the new snippet - FlowSnippetDTO flowSnippet = snippetDAO.copySnippet(groupId, id, originX, originY); + final FlowSnippetDTO flowSnippet = snippetDAO.copySnippet(groupId, id, originX, originY); // validate the new snippet validateSnippetContents(flowSnippet, groupId); @@ -978,7 +1228,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // save the flow controllerFacade.save(); - return flowSnippet; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public FlowSnippetDTO getConfiguration() { + return flowSnippet; + } + }; } }); } @@ -987,7 +1247,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<SnippetDTO> createSnippet(final Revision revision, final SnippetDTO snippetDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<SnippetDTO>() { @Override - public SnippetDTO execute() { + public ConfigurationResult<SnippetDTO> execute() { // ensure id is set if (StringUtils.isBlank(snippetDTO.getId())) { snippetDTO.setId(UUID.randomUUID().toString()); @@ -998,7 +1258,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { final SnippetDTO responseSnippetDTO = dtoFactory.createSnippetDto(snippet); responseSnippetDTO.setContents(snippetUtils.populateFlowSnippet(snippet, false, false)); - return responseSnippetDTO; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public SnippetDTO getConfiguration() { + return responseSnippetDTO; + } + }; } }); } @@ -1007,7 +1277,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<PortDTO> createInputPort(final Revision revision, final String groupId, final PortDTO inputPortDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<PortDTO>() { @Override - public PortDTO execute() { + public ConfigurationResult<PortDTO> execute() { // ensure id is set if (StringUtils.isBlank(inputPortDTO.getId())) { inputPortDTO.setId(UUID.randomUUID().toString()); @@ -1018,7 +1288,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // save the flow controllerFacade.save(); - return dtoFactory.createPortDto(inputPort); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public PortDTO getConfiguration() { + return dtoFactory.createPortDto(inputPort); + } + }; } }); } @@ -1027,7 +1307,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<PortDTO> createOutputPort(final Revision revision, final String groupId, final PortDTO outputPortDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<PortDTO>() { @Override - public PortDTO execute() { + public ConfigurationResult<PortDTO> execute() { // ensure id is set if (StringUtils.isBlank(outputPortDTO.getId())) { outputPortDTO.setId(UUID.randomUUID().toString()); @@ -1038,7 +1318,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // save the flow controllerFacade.save(); - return dtoFactory.createPortDto(outputPort); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public PortDTO getConfiguration() { + return dtoFactory.createPortDto(outputPort); + } + }; } }); } @@ -1047,7 +1337,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<ProcessGroupDTO> createProcessGroup(final String parentGroupId, final Revision revision, final ProcessGroupDTO processGroupDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ProcessGroupDTO>() { @Override - public ProcessGroupDTO execute() { + public ConfigurationResult<ProcessGroupDTO> execute() { // ensure id is set if (StringUtils.isBlank(processGroupDTO.getId())) { processGroupDTO.setId(UUID.randomUUID().toString()); @@ -1058,7 +1348,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // save the flow controllerFacade.save(); - return dtoFactory.createProcessGroupDto(processGroup); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public ProcessGroupDTO getConfiguration() { + return dtoFactory.createProcessGroupDto(processGroup); + } + }; } }); } @@ -1067,7 +1367,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<RemoteProcessGroupDTO> createRemoteProcessGroup(final Revision revision, final String groupId, final RemoteProcessGroupDTO remoteProcessGroupDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<RemoteProcessGroupDTO>() { @Override - public RemoteProcessGroupDTO execute() { + public ConfigurationResult<RemoteProcessGroupDTO> execute() { // ensure id is set if (StringUtils.isBlank(remoteProcessGroupDTO.getId())) { remoteProcessGroupDTO.setId(UUID.randomUUID().toString()); @@ -1078,7 +1378,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // save the flow controllerFacade.save(); - return dtoFactory.createRemoteProcessGroupDto(remoteProcessGroup); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public RemoteProcessGroupDTO getConfiguration() { + return dtoFactory.createRemoteProcessGroupDto(remoteProcessGroup); + } + }; } }); } @@ -1129,10 +1439,10 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { 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>() { @Override - public FlowSnippetDTO execute() { + public ConfigurationResult<FlowSnippetDTO> 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) - FlowSnippetDTO flowSnippet = templateDAO.instantiateTemplate(groupId, originX, originY, templateId); + final FlowSnippetDTO flowSnippet = templateDAO.instantiateTemplate(groupId, originX, originY, templateId); // validate the new snippet validateSnippetContents(flowSnippet, groupId); @@ -1140,7 +1450,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // save the flow controllerFacade.save(); - return flowSnippet; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public FlowSnippetDTO getConfiguration() { + return flowSnippet; + } + }; } }); } @@ -1149,10 +1469,21 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> createArchive(final Revision revision) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { // create the archive controllerFacade.createArchive(); - return null; + + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -1161,7 +1492,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<ProcessorDTO> setProcessorAnnotationData(final Revision revision, final String processorId, final String annotationData) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ProcessorDTO>() { @Override - public ProcessorDTO execute() { + public ConfigurationResult<ProcessorDTO> execute() { // create the processor config final ProcessorConfigDTO config = new ProcessorConfigDTO(); config.setAnnotationData(annotationData); @@ -1180,12 +1511,22 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { } // update the processor configuration - ProcessorNode processor = processorDAO.updateProcessor(groupId, processorDTO); + final ProcessorNode processor = processorDAO.updateProcessor(groupId, processorDTO); // save the flow controllerFacade.save(); - return dtoFactory.createProcessorDto(processor); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ProcessorDTO getConfiguration() { + return dtoFactory.createProcessorDto(processor); + } + }; } }); } @@ -1194,7 +1535,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<ControllerServiceDTO> createControllerService(final Revision revision, final ControllerServiceDTO controllerServiceDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ControllerServiceDTO>() { @Override - public ControllerServiceDTO execute() { + public ConfigurationResult<ControllerServiceDTO> execute() { // ensure id is set if (StringUtils.isBlank(controllerServiceDTO.getId())) { controllerServiceDTO.setId(UUID.randomUUID().toString()); @@ -1210,7 +1551,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { controllerFacade.save(); } - return dtoFactory.createControllerServiceDto(controllerService); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public ControllerServiceDTO getConfiguration() { + return dtoFactory.createControllerServiceDto(controllerService); + } + }; } }); } @@ -1224,7 +1575,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ControllerServiceDTO>() { @Override - public ControllerServiceDTO execute() { + public ConfigurationResult<ControllerServiceDTO> execute() { final ControllerServiceNode controllerService = controllerServiceDAO.updateControllerService(controllerServiceDTO); // save the update @@ -1234,7 +1585,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { controllerFacade.save(); } - return dtoFactory.createControllerServiceDto(controllerService); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerServiceDTO getConfiguration() { + return dtoFactory.createControllerServiceDto(controllerService); + } + }; } }); } @@ -1245,11 +1606,23 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { final String controllerServiceId, final org.apache.nifi.controller.ScheduledState scheduledState, final org.apache.nifi.controller.service.ControllerServiceState controllerServiceState) { + return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Set<ControllerServiceReferencingComponentDTO>>() { @Override - public Set<ControllerServiceReferencingComponentDTO> execute() { + public ConfigurationResult<Set<ControllerServiceReferencingComponentDTO>> execute() { final ControllerServiceReference reference = controllerServiceDAO.updateControllerServiceReferencingComponents(controllerServiceId, scheduledState, controllerServiceState); - return dtoFactory.createControllerServiceReferencingComponentsDto(reference); + + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public Set<ControllerServiceReferencingComponentDTO> getConfiguration() { + return dtoFactory.createControllerServiceReferencingComponentsDto(reference); + } + }; } }); } @@ -1258,7 +1631,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteControllerService(final Revision revision, final String controllerServiceId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { // delete the label controllerServiceDAO.deleteControllerService(controllerServiceId); @@ -1269,7 +1642,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { controllerFacade.save(); } - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } @@ -1278,7 +1661,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<ReportingTaskDTO> createReportingTask(final Revision revision, final ReportingTaskDTO reportingTaskDTO) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ReportingTaskDTO>() { @Override - public ReportingTaskDTO execute() { + public ConfigurationResult<ReportingTaskDTO> execute() { // ensure id is set if (StringUtils.isBlank(reportingTaskDTO.getId())) { reportingTaskDTO.setId(UUID.randomUUID().toString()); @@ -1294,7 +1677,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { controllerFacade.save(); } - return dtoFactory.createReportingTaskDto(reportingTask); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return true; + } + + @Override + public ReportingTaskDTO getConfiguration() { + return dtoFactory.createReportingTaskDto(reportingTask); + } + }; } }); } @@ -1308,7 +1701,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<ReportingTaskDTO>() { @Override - public ReportingTaskDTO execute() { + public ConfigurationResult<ReportingTaskDTO> execute() { final ReportingTaskNode reportingTask = reportingTaskDAO.updateReportingTask(reportingTaskDTO); // save the update @@ -1318,7 +1711,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { controllerFacade.save(); } - return dtoFactory.createReportingTaskDto(reportingTask); + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ReportingTaskDTO getConfiguration() { + return dtoFactory.createReportingTaskDto(reportingTask); + } + }; } }); } @@ -1327,7 +1730,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public ConfigurationSnapshot<Void> deleteReportingTask(final Revision revision, final String reportingTaskId) { return optimisticLockingManager.configureFlow(revision, new ConfigurationRequest<Void>() { @Override - public Void execute() { + public ConfigurationResult<Void> execute() { // delete the label reportingTaskDAO.deleteReportingTask(reportingTaskId); @@ -1338,7 +1741,17 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { controllerFacade.save(); } - return null; + return new ConfigurationResult() { + @Override + public boolean isNew() { + return false; + } + + @Override + public ControllerConfigurationDTO getConfiguration() { + return null; + } + }; } }); } http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ConnectionResource.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ConnectionResource.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ConnectionResource.java index 93fde8f..64c14fa 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ConnectionResource.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ConnectionResource.java @@ -787,13 +787,21 @@ public class ConnectionResource extends ApplicationResource { updatedRevision.setClientId(revision.getClientId()); updatedRevision.setVersion(controllerResponse.getVersion()); + // marshall the target and add the source processor + final ConnectionDTO connectionDTO = controllerResponse.getConfiguration(); + populateRemainingConnectionContent(connectionDTO); + // create the response entity ConnectionEntity entity = new ConnectionEntity(); entity.setRevision(updatedRevision); - entity.setConnection(populateRemainingConnectionContent(controllerResponse.getConfiguration())); + entity.setConnection(connectionDTO); // generate the response - return clusterContext(generateOkResponse(entity)).build(); + if (controllerResponse.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(connectionDTO.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } /** http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ControllerServiceResource.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ControllerServiceResource.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ControllerServiceResource.java index 2a68015..0f2cdce 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ControllerServiceResource.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ControllerServiceResource.java @@ -955,7 +955,11 @@ public class ControllerServiceResource extends ApplicationResource { entity.setRevision(updatedRevision); entity.setControllerService(populateRemainingControllerServiceContent(availability, responseControllerServiceDTO)); - return clusterContext(generateOkResponse(entity)).build(); + if (controllerResponse.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(responseControllerServiceDTO.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } /** http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FunnelResource.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FunnelResource.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FunnelResource.java index d0ad806..0ab6c32 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FunnelResource.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FunnelResource.java @@ -514,7 +514,11 @@ public class FunnelResource extends ApplicationResource { entity.setRevision(updatedRevision); entity.setFunnel(responseFunnelDTO); - return clusterContext(generateOkResponse(entity)).build(); + if (controllerResponse.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(responseFunnelDTO.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } /** http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/InputPortResource.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/InputPortResource.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/InputPortResource.java index b4c4607..d2be69d 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/InputPortResource.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/InputPortResource.java @@ -541,7 +541,11 @@ public class InputPortResource extends ApplicationResource { entity.setRevision(updatedRevision); entity.setInputPort(responsePortDTO); - return clusterContext(generateOkResponse(entity)).build(); + if (controllerResponse.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(responsePortDTO.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } /** http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/LabelResource.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/LabelResource.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/LabelResource.java index b6edb71..400c92a 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/LabelResource.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/LabelResource.java @@ -558,7 +558,11 @@ public class LabelResource extends ApplicationResource { entity.setRevision(updatedRevision); entity.setLabel(responseLabelDTO); - return clusterContext(generateOkResponse(entity)).build(); + if (controllerResponse.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(responseLabelDTO.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } /** http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/OutputPortResource.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/OutputPortResource.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/OutputPortResource.java index 127ac43..ccd08db 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/OutputPortResource.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/OutputPortResource.java @@ -542,7 +542,11 @@ public class OutputPortResource extends ApplicationResource { entity.setRevision(updatedRevision); entity.setOutputPort(responsePortDTO); - return clusterContext(generateOkResponse(entity)).build(); + if (controllerResponse.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(responsePortDTO.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } /** http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java index 3e82bad..a67e74b 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java @@ -283,8 +283,8 @@ public class ProcessGroupResource extends ApplicationResource { @ApiOperation( value = "Gets a process group", notes = "Gets a process group and includes all components contained in this group. The verbose and recursive flags can be used to adjust " - + "the default behavior. This endpoint is starting point for obtaining the current flow and consequently includes the current " - + "flow revision.", + + "the default behavior. This endpoint is starting point for obtaining the current flow and consequently includes the current " + + "flow revision.", response = ProcessGroupEntity.class, authorizations = { @Authorization(value = "Read Only", type = "ROLE_MONITOR"), @@ -350,7 +350,10 @@ public class ProcessGroupResource extends ApplicationResource { } /** - * Copies the specified snippet within this ProcessGroup. + * Copies the specified snippet within this ProcessGroup. The snippet instance that is instantiated cannot be referenced at a later time, therefore there is no + * corresponding URI. Instead the request URI is returned. + * + * Alternatively, we could have performed a PUT request. However, PUT requests are supposed to be idempotent and this endpoint is certainly not. * * @param httpServletRequest request * @param version The revision is used to verify the client is working with the latest version of the flow. @@ -457,11 +460,14 @@ public class ProcessGroupResource extends ApplicationResource { entity.setContents(populateRemainingSnippetContent(flowSnippet)); // generate the response - return clusterContext(generateOkResponse(entity)).build(); + return clusterContext(generateCreatedResponse(getAbsolutePath(), entity)).build(); } /** - * Instantiates the specified template within this ProcessGroup. + * Instantiates the specified template within this ProcessGroup. The template instance that is instantiated cannot be referenced at a later time, therefore there is no + * corresponding URI. Instead the request URI is returned. + * + * Alternatively, we could have performed a PUT request. However, PUT requests are supposed to be idempotent and this endpoint is certainly not. * * @param httpServletRequest request * @param version The revision is used to verify the client is working with the latest version of the flow. @@ -565,7 +571,7 @@ public class ProcessGroupResource extends ApplicationResource { entity.setContents(populateRemainingSnippetContent(flowSnippet)); // generate the response - return clusterContext(generateOkResponse(entity)).build(); + return clusterContext(generateCreatedResponse(getAbsolutePath(), entity)).build(); } /** @@ -644,7 +650,7 @@ public class ProcessGroupResource extends ApplicationResource { @Context HttpServletRequest httpServletRequest, @ApiParam( value = "The process group to update. The only action that is supported at this endpoint is to set the running flag in order " - + "to start or stop all descendent schedulable components. This defines the schema of the expected input.", + + "to start or stop all descendent schedulable components. This defines the schema of the expected input.", required = true ) ProcessGroupEntity processGroupEntity) { @@ -1152,8 +1158,11 @@ public class ProcessGroupResource extends ApplicationResource { entity.setRevision(updatedRevision); entity.setProcessGroup(populateRemainingProcessGroupContent(processGroup, getProcessGroupReferenceUri(processGroup))); - // generate the response - return clusterContext(generateOkResponse(entity)).build(); + if (response.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(processGroup.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } /** @@ -1253,13 +1262,13 @@ public class ProcessGroupResource extends ApplicationResource { @ApiOperation( value = "Gets the status for a process group", notes = "The status for a process group includes status for all descendent components. When invoked on the root group with " - + "recursive set to true, it will return the current status of every component in the flow.", + + "recursive set to true, it will return the current status of every component in the flow.", response = ProcessGroupStatusEntity.class, authorizations = { @Authorization(value = "Read Only", type = "ROLE_MONITOR"), @Authorization(value = "Data Flow Manager", type = "ROLE_DFM"), @Authorization(value = "Administrator", type = "ROLE_ADMIN"), - @Authorization(value = "NiFi", type="ROLE_NIFI") + @Authorization(value = "NiFi", type = "ROLE_NIFI") } ) @ApiResponses( http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessorResource.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessorResource.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessorResource.java index f972c07..84ad8d1 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessorResource.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessorResource.java @@ -812,7 +812,11 @@ public class ProcessorResource extends ApplicationResource { entity.setRevision(updatedRevision); entity.setProcessor(responseProcessorDTO); - return clusterContext(generateOkResponse(entity)).build(); + if (controllerResponse.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(responseProcessorDTO.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } /** http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/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/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/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/RemoteProcessGroupResource.java index 2a12ceb..e466666 100644 --- a/nifi/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/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/RemoteProcessGroupResource.java @@ -1049,7 +1049,11 @@ public class RemoteProcessGroupResource extends ApplicationResource { entity.setRevision(updatedRevision); entity.setRemoteProcessGroup(responseRemoteProcessGroup); - return clusterContext(generateOkResponse(entity)).build(); + if (controllerResponse.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(responseRemoteProcessGroup.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } // setters http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ReportingTaskResource.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ReportingTaskResource.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ReportingTaskResource.java index 4af8783..c783da6 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ReportingTaskResource.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ReportingTaskResource.java @@ -739,7 +739,11 @@ public class ReportingTaskResource extends ApplicationResource { entity.setRevision(updatedRevision); entity.setReportingTask(populateRemainingReportingTaskContent(availability, responseReportingTaskDTO)); - return clusterContext(generateOkResponse(entity)).build(); + if (controllerResponse.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(responseReportingTaskDTO.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } /** http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/SnippetResource.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/SnippetResource.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/SnippetResource.java index 4dfa9fe..a27c7a4 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/SnippetResource.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/SnippetResource.java @@ -607,7 +607,11 @@ public class SnippetResource extends ApplicationResource { entity.setRevision(updatedRevision); entity.setSnippet(populateRemainingSnippetContent(snippet)); - return clusterContext(generateOkResponse(entity)).build(); + if (controllerResponse.isNew()) { + return clusterContext(generateCreatedResponse(URI.create(snippet.getUri()), entity)).build(); + } else { + return clusterContext(generateOkResponse(entity)).build(); + } } /** http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationRequest.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationRequest.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationRequest.java index c2e940a..af50d49 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationRequest.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationRequest.java @@ -31,5 +31,5 @@ public interface ConfigurationRequest<T> { * * @return The resulting configuration */ - T execute(); + ConfigurationResult<T> execute(); } http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationResult.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationResult.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationResult.java new file mode 100644 index 0000000..46b0db0 --- /dev/null +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationResult.java @@ -0,0 +1,41 @@ +/* + * 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; + +/** + * Represents a request to configure. The implementations execute method will + * perform the configuration action. It will return type T which will be + * encapsulated in a ConfigurationSnapshot. + * + * @param <T> type of request + */ +public interface ConfigurationResult<T> { + + /** + * Returns whether the configuration represents a newly created resource. + * + * @return If the configuration represents a newly created resource + */ + boolean isNew(); + + /** + * Returns the resulting configuration. + * + * @return The resulting configuration + */ + T getConfiguration(); +} http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationSnapshot.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationSnapshot.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationSnapshot.java index c706fd2..8e9194f 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationSnapshot.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/ConfigurationSnapshot.java @@ -17,17 +17,18 @@ package org.apache.nifi.web; /** - * Response object that captures some configuration for a given revision. + * Response object that captures the context of a given configuration. * * @param <T> type of snapshot */ public class ConfigurationSnapshot<T> { - private Long version; - private T configuration; + private final Long version; + private final T configuration; + private final boolean isNew; /** - * Creates a new ConfigurationSnapshot. + * Creates a new ConfigurationSnapshot with no configuration object. * * @param version The revision version */ @@ -36,14 +37,30 @@ public class ConfigurationSnapshot<T> { } /** - * Creates a new ConfigurationSnapshot. + * Creates a new ConfigurationSnapshot with the specified configuration + * object. The object is consider to have been existing prior to this + * request. * * @param version The revision version * @param configuration The configuration */ public ConfigurationSnapshot(Long version, T configuration) { + this(version, configuration, false); + } + + /** + * Creates a new ConfigurationSnapshot with the specified configuration + * object. The isNew parameter specifies whether the object was created as a + * result of this request. + * + * @param version The revision version + * @param configuration The configuration + * @param isNew Whether the resource was newly created + */ + public ConfigurationSnapshot(Long version, T configuration, boolean isNew) { this.version = version; this.configuration = configuration; + this.isNew = isNew; } /** @@ -64,4 +81,14 @@ public class ConfigurationSnapshot<T> { return configuration; } + /** + * Returns whether the configuration object was created as a result of this + * request. + * + * @return Whether the object was created as a result of this request + */ + public boolean isNew() { + return isNew; + } + } http://git-wip-us.apache.org/repos/asf/nifi/blob/0a279ff5/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/StandardOptimisticLockingManager.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/StandardOptimisticLockingManager.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/StandardOptimisticLockingManager.java index 7792f0e..16b55ee 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/StandardOptimisticLockingManager.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/src/main/java/org/apache/nifi/web/StandardOptimisticLockingManager.java @@ -80,13 +80,13 @@ public class StandardOptimisticLockingManager implements OptimisticLockingManage checkRevision(revision); // execute the configuration request - final T result = configurationRequest.execute(); + final ConfigurationResult<T> result = configurationRequest.execute(); // update the revision final Revision newRevision = updateRevision(incrementRevision(revision.getClientId())); // build the result - return new ConfigurationSnapshot(newRevision.getVersion(), result); + return new ConfigurationSnapshot(newRevision.getVersion(), result.getConfiguration(), result.isNew()); } finally { unlock(); }
