From 78b532f2196062550fc65623fd79c87b574a6d85 Mon Sep 17 00:00:00 2001 From: krisztina-zsihovszki Date: Fri, 11 Nov 2022 11:14:59 +0100 Subject: [PATCH] NIFI-10793 Comment is not populated when process group is created via API This closes #6653. Signed-off-by: Tamas Palfy --- .../web/dao/impl/StandardProcessGroupDAO.java | 4 + .../dao/impl/TestStandardProcessGroupDAO.java | 99 +++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/dao/impl/TestStandardProcessGroupDAO.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/StandardProcessGroupDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java index f349fb2f8ea2..e42a135d2e93 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java @@ -82,6 +82,10 @@ public ProcessGroup createProcessGroup(String parentGroupId, ProcessGroupDTO pro group.setPosition(new Position(processGroup.getPosition().getX(), processGroup.getPosition().getY())); } + if (processGroup.getComments() != null) { + group.setComments(processGroup.getComments()); + } + final ParameterContextReferenceEntity parameterContextReference = processGroup.getParameterContext(); if (parameterContextReference != null && parameterContextReference.getId() != null) { final ParameterContext parameterContext = flowController.getFlowManager().getParameterContextManager().getParameterContext(parameterContextReference.getId()); diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/dao/impl/TestStandardProcessGroupDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/dao/impl/TestStandardProcessGroupDAO.java new file mode 100644 index 000000000000..6bf86e34113d --- /dev/null +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/dao/impl/TestStandardProcessGroupDAO.java @@ -0,0 +1,99 @@ +/* + * 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.dao.impl; + +import static org.mockito.Answers.RETURNS_DEEP_STUBS; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import org.apache.nifi.connectable.Position; +import org.apache.nifi.controller.FlowController; +import org.apache.nifi.groups.ProcessGroup; +import org.apache.nifi.parameter.ParameterContext; +import org.apache.nifi.web.api.dto.PositionDTO; +import org.apache.nifi.web.api.dto.ProcessGroupDTO; +import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +public class TestStandardProcessGroupDAO { + private static final String PARENT_PROCESS_GROUP_ID = "parentId"; + private static final String PROCESS_GROUP_ID = "pgId"; + private static final String PROCESS_GROUP_NAME = "pgName"; + private static final String PROCESS_GROUP_COMMENTS = "This is a comment"; + private static final String PARAMETER_CONTEXT_ID = "parameterContextId"; + + private StandardProcessGroupDAO testSubject; + + @Mock(answer = RETURNS_DEEP_STUBS) + private FlowController flowController; + + @Mock + private ProcessGroup parentProcessGroup; + + @Mock + private ParameterContext parameterContext; + + @BeforeEach + void setUp() { + testSubject = new StandardProcessGroupDAO(); + testSubject.setFlowController(flowController); + + when(flowController + .getFlowManager() + .getGroup(PARENT_PROCESS_GROUP_ID) + ).thenReturn(parentProcessGroup); + + when(flowController + .getFlowManager() + .getParameterContextManager() + .getParameterContext(PARAMETER_CONTEXT_ID) + ).thenReturn(parameterContext); + } + + @Test + public void testCreateProcessGroup() { + //GIVEN + ParameterContextReferenceEntity parameterContextReferenceEntity = new ParameterContextReferenceEntity(); + parameterContextReferenceEntity.setId(PARAMETER_CONTEXT_ID); + + ProcessGroupDTO processGroupDTO = new ProcessGroupDTO(); + processGroupDTO.setId(PROCESS_GROUP_ID); + processGroupDTO.setName(PROCESS_GROUP_NAME); + processGroupDTO.setComments(PROCESS_GROUP_COMMENTS); + processGroupDTO.setPosition(new PositionDTO(10.0, 20.0)); + processGroupDTO.setParameterContext(parameterContextReferenceEntity); + + //WHEN + ProcessGroup createdProcessGroup = testSubject.createProcessGroup(PARENT_PROCESS_GROUP_ID, processGroupDTO); + + //THEN + verify(createdProcessGroup).setParent(parentProcessGroup); + verify(createdProcessGroup).setParameterContext(parameterContext); + verify(createdProcessGroup).setName(PROCESS_GROUP_NAME); + verify(createdProcessGroup).setComments(PROCESS_GROUP_COMMENTS); + verify(createdProcessGroup).setPosition(any(Position.class)); + + verify(parentProcessGroup).addProcessGroup(createdProcessGroup); + } +} \ No newline at end of file