This is an automated email from the ASF dual-hosted git repository.

markap14 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/master by this push:
     new 625d4a1  NIFI-6612: - Updating context menu to only show the 
Parameters menu item when the user has the appropriate permissions.
625d4a1 is described below

commit 625d4a13ca57b80c10255295689e097ef5a8119d
Author: Matt Gilman <[email protected]>
AuthorDate: Fri Sep 6 16:51:56 2019 -0400

    NIFI-6612:
    - Updating context menu to only show the Parameters menu item when the user 
has the appropriate permissions.
---
 .../web/api/dto/ParameterContextReferenceDTO.java  | 10 +++
 .../apache/nifi/web/api/dto/ProcessGroupDTO.java   |  7 +-
 .../nifi/web/api/dto/flow/ProcessGroupFlowDTO.java | 13 ++--
 .../entity/ParameterContextReferenceEntity.java    | 79 ++++++++++++++++++++++
 .../nifi/web/api/entity/ProcessGroupEntity.java    | 12 ++--
 .../http/endpoints/ParameterContextMerger.java     |  2 +-
 .../cluster/manager/ProcessGroupEntityMerger.java  | 34 +++++++++-
 .../nifi/controller/StandardFlowSnippet.java       |  8 +--
 .../nifi/controller/StandardFlowSynchronizer.java  |  4 +-
 .../serialization/FlowFromDOMFactory.java          |  4 +-
 .../apache/nifi/web/api/ProcessGroupResource.java  |  8 +--
 .../org/apache/nifi/web/api/dto/DtoFactory.java    | 50 ++++++++++++--
 .../org/apache/nifi/web/api/dto/EntityFactory.java | 18 ++++-
 .../nifi/web/dao/impl/StandardProcessGroupDAO.java |  8 +--
 .../src/main/webapp/js/nf/canvas/nf-actions.js     | 11 +--
 .../main/webapp/js/nf/canvas/nf-canvas-utils.js    | 14 ++--
 .../src/main/webapp/js/nf/canvas/nf-canvas.js      | 20 +++---
 .../main/webapp/js/nf/canvas/nf-context-menu.js    | 11 ++-
 .../webapp/js/nf/canvas/nf-controller-service.js   | 18 +++--
 .../js/nf/canvas/nf-process-group-configuration.js |  4 +-
 .../js/nf/canvas/nf-processor-configuration.js     |  9 +--
 .../impl/command/nifi/pg/PGGetParamContext.java    |  4 +-
 .../impl/command/nifi/pg/PGSetParamContext.java    |  4 +-
 23 files changed, 268 insertions(+), 84 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ParameterContextReferenceDTO.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ParameterContextReferenceDTO.java
index 9d6241f..96c6d9f 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ParameterContextReferenceDTO.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ParameterContextReferenceDTO.java
@@ -23,6 +23,7 @@ import javax.xml.bind.annotation.XmlType;
 @XmlType(name = "parameterContextReference")
 public class ParameterContextReferenceDTO {
     private String id;
+    private String name;
 
     public void setId(String id) {
         this.id = id;
@@ -32,4 +33,13 @@ public class ParameterContextReferenceDTO {
     public String getId() {
         return id;
     }
+
+    @ApiModelProperty("The name of the Parameter Context")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
 }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ProcessGroupDTO.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ProcessGroupDTO.java
index f5a4e35..349d0bb 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ProcessGroupDTO.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ProcessGroupDTO.java
@@ -18,6 +18,7 @@ package org.apache.nifi.web.api.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.nifi.web.api.dto.util.NumberUtil;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 
 import javax.xml.bind.annotation.XmlType;
 import java.util.Map;
@@ -32,7 +33,7 @@ public class ProcessGroupDTO extends ComponentDTO {
     private String comments;
     private Map<String, String> variables;
     private VersionControlInformationDTO versionControlInformation;
-    private ParameterContextReferenceDTO parameterContext;
+    private ParameterContextReferenceEntity parameterContext;
 
     private Integer runningCount;
     private Integer stoppedCount;
@@ -344,11 +345,11 @@ public class ProcessGroupDTO extends ComponentDTO {
     }
 
     @ApiModelProperty("The Parameter Context that this Process Group is bound 
to.")
-    public ParameterContextReferenceDTO getParameterContext() {
+    public ParameterContextReferenceEntity getParameterContext() {
         return parameterContext;
     }
 
-    public void setParameterContext(final ParameterContextReferenceDTO 
parameterContext) {
+    public void setParameterContext(final ParameterContextReferenceEntity 
parameterContext) {
         this.parameterContext = parameterContext;
     }
 }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/flow/ProcessGroupFlowDTO.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/flow/ProcessGroupFlowDTO.java
index 479375e..dd2a3ff 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/flow/ProcessGroupFlowDTO.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/flow/ProcessGroupFlowDTO.java
@@ -19,6 +19,7 @@ package org.apache.nifi.web.api.dto.flow;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.nifi.web.api.dto.util.TimeAdapter;
 import org.apache.nifi.web.api.entity.FlowBreadcrumbEntity;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -33,7 +34,7 @@ public class ProcessGroupFlowDTO {
     private String id;
     private String uri;
     private String parentGroupId;
-    private String parameterContextId;
+    private ParameterContextReferenceEntity parameterContext;
     private FlowBreadcrumbEntity breadcrumb;
     private FlowDTO flow;
     private Date lastRefreshed;
@@ -127,12 +128,12 @@ public class ProcessGroupFlowDTO {
         this.lastRefreshed = lastRefreshed;
     }
 
-    @ApiModelProperty("The ID of the Parameter Context, or null if no 
Parameter Context has been bound to the Process Group")
-    public String getParameterContextId() {
-        return parameterContextId;
+    @ApiModelProperty("The Parameter Context, or null if no Parameter Context 
has been bound to the Process Group")
+    public ParameterContextReferenceEntity getParameterContext() {
+        return parameterContext;
     }
 
-    public void setParameterContextId(String parameterContextId) {
-        this.parameterContextId = parameterContextId;
+    public void setParameterContext(ParameterContextReferenceEntity 
parameterContext) {
+        this.parameterContext = parameterContext;
     }
 }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/ParameterContextReferenceEntity.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/ParameterContextReferenceEntity.java
new file mode 100644
index 0000000..ee05877
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/ParameterContextReferenceEntity.java
@@ -0,0 +1,79 @@
+/*
+ * 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.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.nifi.web.api.dto.ParameterContextReferenceDTO;
+import org.apache.nifi.web.api.dto.PermissionsDTO;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * A serialized representation of this class can be placed in the entity body 
of a request or response to or from the API. This particular entity holds a 
reference to a ParameterContextReferenceDTO.
+ */
+@XmlRootElement(name = "parameterContextReferenceEntity")
+public class ParameterContextReferenceEntity implements 
Permissible<ParameterContextReferenceDTO> {
+
+    private String id;
+    private PermissionsDTO permissions;
+    private ParameterContextReferenceDTO component;
+
+    /**
+     * The id for this component.
+     *
+     * @return The id
+     */
+    @ApiModelProperty(
+            value = "The id of the component."
+    )
+    public String getId() {
+        return this.id;
+    }
+
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+    /**
+     * The permissions for this component.
+     *
+     * @return The permissions
+     */
+    @ApiModelProperty(
+            value = "The permissions for this component."
+    )
+    public PermissionsDTO getPermissions() {
+        return permissions;
+    }
+
+    public void setPermissions(PermissionsDTO permissions) {
+        this.permissions = permissions;
+    }
+
+    /**
+     * The ParameterContextReferenceDTO that is being serialized.
+     *
+     * @return The ParameterContextReferenceDTO object
+     */
+    public ParameterContextReferenceDTO getComponent() {
+        return component;
+    }
+
+    public void setComponent(ParameterContextReferenceDTO component) {
+        this.component = component;
+    }
+}
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/ProcessGroupEntity.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/ProcessGroupEntity.java
index 5defa7f..11cdc51 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/ProcessGroupEntity.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/ProcessGroupEntity.java
@@ -54,7 +54,7 @@ public class ProcessGroupEntity extends ComponentEntity 
implements Permissible<P
     private Integer publicInputPortCount;
     private Integer publicOutputPortCount;
 
-    private String parameterContextId;
+    private ParameterContextReferenceEntity parameterContext;
 
     /**
      * The ProcessGroupDTO that is being serialized.
@@ -320,12 +320,12 @@ public class ProcessGroupEntity extends ComponentEntity 
implements Permissible<P
         this.syncFailureCount = syncFailureCount;
     }
 
-    @ApiModelProperty("The ID of the Parameter Context, or null if no 
Parameter Context has been bound to the Process Group")
-    public String getParameterContextId() {
-        return parameterContextId;
+    @ApiModelProperty("The Parameter Context, or null if no Parameter Context 
has been bound to the Process Group")
+    public ParameterContextReferenceEntity getParameterContext() {
+        return parameterContext;
     }
 
-    public void setParameterContextId(String parameterContextId) {
-        this.parameterContextId = parameterContextId;
+    public void setParameterContext(ParameterContextReferenceEntity 
parameterContext) {
+        this.parameterContext = parameterContext;
     }
 }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/ParameterContextMerger.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/ParameterContextMerger.java
index 805aff7..df8c4ba 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/ParameterContextMerger.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/ParameterContextMerger.java
@@ -42,7 +42,7 @@ public class ParameterContextMerger {
             final NodeIdentifier nodeId = entry.getKey();
             final ParameterContextEntity entity = entry.getValue();
 
-            PermissionsDtoMerger.mergePermissions(entity.getPermissions(), 
entity.getPermissions());
+            PermissionsDtoMerger.mergePermissions(target.getPermissions(), 
entity.getPermissions());
 
             if (entity.getComponent() == null) {
                 target.setComponent(null);
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/ProcessGroupEntityMerger.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/ProcessGroupEntityMerger.java
index d74fdeb..1a71212 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/ProcessGroupEntityMerger.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/ProcessGroupEntityMerger.java
@@ -20,8 +20,10 @@ import org.apache.nifi.cluster.protocol.NodeIdentifier;
 import org.apache.nifi.web.api.dto.ProcessGroupDTO;
 import org.apache.nifi.web.api.dto.VersionControlInformationDTO;
 import org.apache.nifi.web.api.dto.status.ProcessGroupStatusDTO;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 import org.apache.nifi.web.api.entity.ProcessGroupEntity;
 
+import java.util.HashMap;
 import java.util.Map;
 
 public class ProcessGroupEntityMerger implements 
ComponentEntityMerger<ProcessGroupEntity>, 
ComponentEntityStatusMerger<ProcessGroupStatusDTO> {
@@ -29,11 +31,37 @@ public class ProcessGroupEntityMerger implements 
ComponentEntityMerger<ProcessGr
     @Override
     public void merge(ProcessGroupEntity clientEntity, Map<NodeIdentifier, 
ProcessGroupEntity> entityMap) {
         ComponentEntityMerger.super.merge(clientEntity, entityMap);
+
+        final Map<NodeIdentifier, ProcessGroupDTO> dtoMap = new HashMap<>();
         for (Map.Entry<NodeIdentifier, ProcessGroupEntity> entry : 
entityMap.entrySet()) {
-            final ProcessGroupEntity entityStatus = entry.getValue();
-            if (entityStatus != clientEntity) {
+            final ProcessGroupEntity entity = entry.getValue();
+            if (entity != clientEntity) {
                 mergeStatus(clientEntity.getStatus(), 
clientEntity.getPermissions().getCanRead(), entry.getValue().getStatus(), 
entry.getValue().getPermissions().getCanRead(), entry.getKey());
-                mergeVersionControlInformation(clientEntity, entityStatus);
+                mergeVersionControlInformation(clientEntity, entity);
+            }
+
+            dtoMap.put(entry.getKey(), entity.getComponent());
+        }
+
+        mergeDtos(clientEntity.getComponent(), dtoMap);
+    }
+
+    private static void mergeDtos(final ProcessGroupDTO clientDto, final 
Map<NodeIdentifier, ProcessGroupDTO> dtoMap) {
+        // if unauthorized for the client dto, simple return
+        if (clientDto == null) {
+            return;
+        }
+
+        // get the parameter context if configured
+        final ParameterContextReferenceEntity clientParameterContextEntity = 
clientDto.getParameterContext();
+
+        // if this process group is bound to a parameter context, merge the 
permissions from the other nodes
+        if (clientParameterContextEntity != null) {
+            for (Map.Entry<NodeIdentifier, ProcessGroupDTO> entry : 
dtoMap.entrySet()) {
+                final ProcessGroupDTO dto = entry.getValue();
+                final ParameterContextReferenceEntity 
parameterContextReferenceEntity = dto.getParameterContext();
+
+                
PermissionsDtoMerger.mergePermissions(clientParameterContextEntity.getPermissions(),
 parameterContextReferenceEntity.getPermissions());
             }
         }
     }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSnippet.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSnippet.java
index c18522d..a65583f 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSnippet.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSnippet.java
@@ -56,7 +56,6 @@ import org.apache.nifi.web.api.dto.ControllerServiceDTO;
 import org.apache.nifi.web.api.dto.FlowSnippetDTO;
 import org.apache.nifi.web.api.dto.FunnelDTO;
 import org.apache.nifi.web.api.dto.LabelDTO;
-import org.apache.nifi.web.api.dto.ParameterContextReferenceDTO;
 import org.apache.nifi.web.api.dto.PortDTO;
 import org.apache.nifi.web.api.dto.PositionDTO;
 import org.apache.nifi.web.api.dto.ProcessGroupDTO;
@@ -66,6 +65,7 @@ import org.apache.nifi.web.api.dto.RelationshipDTO;
 import org.apache.nifi.web.api.dto.RemoteProcessGroupContentsDTO;
 import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO;
 import org.apache.nifi.web.api.dto.RemoteProcessGroupPortDTO;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -458,9 +458,9 @@ public class StandardFlowSnippet implements FlowSnippet {
                 childGroup.setVariables(groupDTO.getVariables());
             }
 
-            final ParameterContextReferenceDTO parameterContextReferenceDto = 
groupDTO.getParameterContext();
-            if (parameterContextReferenceDto != null) {
-                final ParameterContext parameterContext = 
flowManager.getParameterContextManager().getParameterContext(parameterContextReferenceDto.getId());
+            final ParameterContextReferenceEntity parameterContextReference = 
groupDTO.getParameterContext();
+            if (parameterContextReference != null) {
+                final ParameterContext parameterContext = 
flowManager.getParameterContextManager().getParameterContext(parameterContextReference.getId());
                 if (parameterContext != null) {
                     childGroup.setParameterContext(parameterContext);
                 }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java
index 6d970db..c14c2df 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java
@@ -86,7 +86,6 @@ import org.apache.nifi.web.api.dto.FlowSnippetDTO;
 import org.apache.nifi.web.api.dto.FunnelDTO;
 import org.apache.nifi.web.api.dto.LabelDTO;
 import org.apache.nifi.web.api.dto.ParameterContextDTO;
-import org.apache.nifi.web.api.dto.ParameterContextReferenceDTO;
 import org.apache.nifi.web.api.dto.ParameterDTO;
 import org.apache.nifi.web.api.dto.PortDTO;
 import org.apache.nifi.web.api.dto.PositionDTO;
@@ -97,6 +96,7 @@ import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO;
 import org.apache.nifi.web.api.dto.ReportingTaskDTO;
 import org.apache.nifi.web.api.dto.TemplateDTO;
 import org.apache.nifi.web.api.dto.VersionControlInformationDTO;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 import org.apache.nifi.web.api.entity.ParameterEntity;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -1161,7 +1161,7 @@ public class StandardFlowSynchronizer implements 
FlowSynchronizer {
             group.setComments(comments);
         }
 
-        final ParameterContextReferenceDTO parameterContextReference = 
dto.getParameterContext();
+        final ParameterContextReferenceEntity parameterContextReference = 
dto.getParameterContext();
         if (parameterContextReference != null && 
parameterContextReference.getId() != null) {
             final String parameterContextId = 
parameterContextReference.getId();
             final ParameterContext parameterContext = 
parameterContextManager.getParameterContext(parameterContextId);
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/serialization/FlowFromDOMFactory.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/serialization/FlowFromDOMFactory.java
index fa8bb8a..e64e573 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/serialization/FlowFromDOMFactory.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/serialization/FlowFromDOMFactory.java
@@ -37,7 +37,6 @@ import org.apache.nifi.web.api.dto.FlowSnippetDTO;
 import org.apache.nifi.web.api.dto.FunnelDTO;
 import org.apache.nifi.web.api.dto.LabelDTO;
 import org.apache.nifi.web.api.dto.ParameterContextDTO;
-import org.apache.nifi.web.api.dto.ParameterContextReferenceDTO;
 import org.apache.nifi.web.api.dto.ParameterDTO;
 import org.apache.nifi.web.api.dto.PortDTO;
 import org.apache.nifi.web.api.dto.PositionDTO;
@@ -47,6 +46,7 @@ import org.apache.nifi.web.api.dto.ProcessorDTO;
 import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO;
 import org.apache.nifi.web.api.dto.ReportingTaskDTO;
 import org.apache.nifi.web.api.dto.VersionControlInformationDTO;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 import org.apache.nifi.web.api.entity.ParameterEntity;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -198,7 +198,7 @@ public class FlowFromDOMFactory {
         
dto.setVersionControlInformation(getVersionControlInformation(versionControlInfoElement));
 
         final String parameterContextId = getString(element, 
"parameterContextId");
-        final ParameterContextReferenceDTO parameterContextReference = new 
ParameterContextReferenceDTO();
+        final ParameterContextReferenceEntity parameterContextReference = new 
ParameterContextReferenceEntity();
         parameterContextReference.setId(parameterContextId);
         dto.setParameterContext(parameterContextReference);
 
diff --git 
a/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-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java
index af2bec0..89bb313 100644
--- 
a/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-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java
@@ -67,7 +67,6 @@ import org.apache.nifi.web.api.dto.ConnectionDTO;
 import org.apache.nifi.web.api.dto.ControllerServiceDTO;
 import org.apache.nifi.web.api.dto.DtoFactory;
 import org.apache.nifi.web.api.dto.FlowSnippetDTO;
-import org.apache.nifi.web.api.dto.ParameterContextReferenceDTO;
 import org.apache.nifi.web.api.dto.PortDTO;
 import org.apache.nifi.web.api.dto.PositionDTO;
 import org.apache.nifi.web.api.dto.ProcessGroupDTO;
@@ -98,6 +97,7 @@ import 
org.apache.nifi.web.api.entity.InstantiateTemplateRequestEntity;
 import org.apache.nifi.web.api.entity.LabelEntity;
 import org.apache.nifi.web.api.entity.LabelsEntity;
 import org.apache.nifi.web.api.entity.OutputPortsEntity;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 import org.apache.nifi.web.api.entity.PortEntity;
 import org.apache.nifi.web.api.entity.ProcessGroupEntity;
 import org.apache.nifi.web.api.entity.ProcessGroupsEntity;
@@ -478,13 +478,13 @@ public class ProcessGroupResource extends 
ApplicationResource {
                     authorizable.authorize(authorizer, RequestAction.WRITE, 
user);
 
                     // Ensure that user has READ permission on current 
Parameter Context (if any) because user is un-binding.
-                    final ParameterContextReferenceDTO referencedParamContext 
= requestProcessGroupDTO.getParameterContext();
+                    final ParameterContextReferenceEntity 
referencedParamContext = requestProcessGroupDTO.getParameterContext();
                     if (referencedParamContext != null) {
                         // Lookup the current Parameter Context and determine 
whether or not the Parameter Context is changing
                         final String groupId = requestProcessGroupDTO.getId();
                         final ProcessGroupEntity currentGroupEntity = 
serviceFacade.getProcessGroup(groupId);
                         final ProcessGroupDTO groupDto = 
currentGroupEntity.getComponent();
-                        final ParameterContextReferenceDTO currentParamContext 
= groupDto.getParameterContext();
+                        final ParameterContextReferenceEntity 
currentParamContext = groupDto.getParameterContext();
                         final String currentParamContextId = 
currentParamContext == null ? null : currentParamContext.getId();
                         final boolean parameterContextChanging = 
!Objects.equals(referencedParamContext.getId(), currentParamContextId);
 
@@ -1776,7 +1776,7 @@ public class ProcessGroupResource extends 
ApplicationResource {
                     processGroup.authorize(authorizer, RequestAction.WRITE, 
user);
 
                     // If request specifies a Parameter Context, need to 
authorize that user has READ policy for the Parameter Context.
-                    final ParameterContextReferenceDTO referencedParamContext 
= requestProcessGroupEntity.getComponent().getParameterContext();
+                    final ParameterContextReferenceEntity 
referencedParamContext = 
requestProcessGroupEntity.getComponent().getParameterContext();
                     if (referencedParamContext != null && 
referencedParamContext.getId() != null) {
                         
lookup.getParameterContext(referencedParamContext.getId()).authorize(authorizer,
 RequestAction.READ, user);
                     }
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 3be7ae7..b1822d6 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
@@ -219,6 +219,7 @@ import 
org.apache.nifi.web.api.entity.ComponentReferenceEntity;
 import org.apache.nifi.web.api.entity.ConnectionStatusSnapshotEntity;
 import org.apache.nifi.web.api.entity.ControllerServiceEntity;
 import org.apache.nifi.web.api.entity.FlowBreadcrumbEntity;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 import org.apache.nifi.web.api.entity.ParameterEntity;
 import org.apache.nifi.web.api.entity.PortEntity;
 import org.apache.nifi.web.api.entity.PortStatusSnapshotEntity;
@@ -2142,7 +2143,21 @@ public final class DtoFactory {
         }
 
         final ParameterContext parameterContext = group.getParameterContext();
-        dto.setParameterContextId(parameterContext == null ? null : 
parameterContext.getIdentifier());
+        if (parameterContext != null) {
+            
dto.setParameterContext(entityFactory.createParameterReferenceEntity(createParameterContextReference(parameterContext),
 createPermissionsDto(parameterContext)));
+        }
+        return dto;
+    }
+
+    public ParameterContextReferenceDTO createParameterContextReference(final 
ParameterContext parameterContext) {
+        if (parameterContext == null) {
+            return null;
+        }
+
+        final ParameterContextReferenceDTO dto = new 
ParameterContextReferenceDTO();
+        dto.setId(parameterContext.getIdentifier());
+        dto.setName(parameterContext.getName());
+
         return dto;
     }
 
@@ -2409,9 +2424,10 @@ public final class DtoFactory {
         
dto.setVersionedComponentId(group.getVersionedComponentId().orElse(null));
         
dto.setVersionControlInformation(createVersionControlInformationDto(group));
 
-        final ParameterContextReferenceDTO parameterContextReference = new 
ParameterContextReferenceDTO();
-        parameterContextReference.setId(group.getParameterContext() == null ? 
null : group.getParameterContext().getIdentifier());
-        dto.setParameterContext(parameterContextReference);
+        final ParameterContext parameterContext = group.getParameterContext();
+        if (parameterContext != null) {
+            
dto.setParameterContext(entityFactory.createParameterReferenceEntity(createParameterContextReference(parameterContext),
 createPermissionsDto(parameterContext)));
+        }
 
         final Map<String, String> variables = 
group.getVariableRegistry().getVariableMap().entrySet().stream()
             .collect(Collectors.toMap(entry -> entry.getKey().getName(), 
Entry::getValue));
@@ -4234,13 +4250,35 @@ public final class DtoFactory {
         return copy;
     }
 
-    public ParameterContextReferenceDTO copy(final 
ParameterContextReferenceDTO original) {
+    public ParameterContextReferenceEntity copy(final 
ParameterContextReferenceEntity original) {
         if (original == null) {
             return null;
         }
 
-        final ParameterContextReferenceDTO copy = new 
ParameterContextReferenceDTO();
+        final ParameterContextReferenceEntity copy = new 
ParameterContextReferenceEntity();
         copy.setId(original.getId());
+        copy.setPermissions(copy(original.getPermissions()));
+
+        if (original.getComponent() != null) {
+            final ParameterContextReferenceDTO dtoOriginal = 
original.getComponent();
+
+            final ParameterContextReferenceDTO dtoCopy = new 
ParameterContextReferenceDTO();
+            dtoCopy.setId(dtoOriginal.getId());
+            dtoCopy.setName(dtoOriginal.getName());
+            copy.setComponent(dtoCopy);
+        }
+
+        return copy;
+    }
+
+    public PermissionsDTO copy(final PermissionsDTO original) {
+        if (original == null) {
+            return null;
+        }
+
+        final PermissionsDTO copy = new PermissionsDTO();
+        copy.setCanRead(original.getCanRead());
+        copy.setCanWrite(original.getCanWrite());
         return copy;
     }
 
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
index 08c28d1..ab004c0 100644
--- 
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
@@ -52,6 +52,7 @@ import org.apache.nifi.web.api.entity.FlowBreadcrumbEntity;
 import org.apache.nifi.web.api.entity.FunnelEntity;
 import org.apache.nifi.web.api.entity.LabelEntity;
 import org.apache.nifi.web.api.entity.ParameterContextEntity;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 import org.apache.nifi.web.api.entity.PortEntity;
 import org.apache.nifi.web.api.entity.PortStatusEntity;
 import org.apache.nifi.web.api.entity.PortStatusSnapshotEntity;
@@ -269,9 +270,9 @@ public final class EntityFactory {
             
entity.setLocallyModifiedAndStaleCount(dto.getLocallyModifiedAndStaleCount());
             entity.setSyncFailureCount(dto.getSyncFailureCount());
 
-            final ParameterContextReferenceDTO parameterContextReference = 
dto.getParameterContext();
+            final ParameterContextReferenceEntity parameterContextReference = 
dto.getParameterContext();
             if (parameterContextReference != null) {
-                
entity.setParameterContextId(parameterContextReference.getId());
+                entity.setParameterContext(parameterContextReference);
             }
 
             if (dto.getVersionControlInformation() != null) {
@@ -425,6 +426,19 @@ public final class EntityFactory {
         return entity;
     }
 
+    public ParameterContextReferenceEntity 
createParameterReferenceEntity(final ParameterContextReferenceDTO dto, final 
PermissionsDTO permissions) {
+        final ParameterContextReferenceEntity entity = new 
ParameterContextReferenceEntity();
+        if (dto != null) {
+            entity.setPermissions(permissions);
+            entity.setId(dto.getId());
+
+            if (permissions != null && permissions.getCanRead()) {
+                entity.setComponent(dto);
+            }
+        }
+        return entity;
+    }
+
     public FunnelEntity createFunnelEntity(final FunnelDTO dto, final 
RevisionDTO revision, final PermissionsDTO permissions) {
         final FunnelEntity entity = new FunnelEntity();
         entity.setRevision(revision);
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 e8957dd..858db08 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
@@ -36,10 +36,10 @@ import org.apache.nifi.registry.flow.VersionedProcessGroup;
 import org.apache.nifi.registry.flow.mapping.NiFiRegistryFlowMapper;
 import org.apache.nifi.remote.RemoteGroupPort;
 import org.apache.nifi.web.ResourceNotFoundException;
-import org.apache.nifi.web.api.dto.ParameterContextReferenceDTO;
 import org.apache.nifi.web.api.dto.ProcessGroupDTO;
 import org.apache.nifi.web.api.dto.VariableRegistryDTO;
 import org.apache.nifi.web.api.dto.VersionControlInformationDTO;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 import org.apache.nifi.web.api.entity.VariableEntity;
 import org.apache.nifi.web.dao.ProcessGroupDAO;
 
@@ -78,7 +78,7 @@ public class StandardProcessGroupDAO extends ComponentDAO 
implements ProcessGrou
             group.setPosition(new Position(processGroup.getPosition().getX(), 
processGroup.getPosition().getY()));
         }
 
-        final ParameterContextReferenceDTO parameterContextReference = 
processGroup.getParameterContext();
+        final ParameterContextReferenceEntity parameterContextReference = 
processGroup.getParameterContext();
         if (parameterContextReference != null && 
parameterContextReference.getId() != null) {
             final ParameterContext parameterContext = 
flowController.getFlowManager().getParameterContextManager().getParameterContext(parameterContextReference.getId());
             group.setParameterContext(parameterContext);
@@ -98,7 +98,7 @@ public class StandardProcessGroupDAO extends ComponentDAO 
implements ProcessGrou
 
     @Override
     public void verifyUpdate(final ProcessGroupDTO processGroup) {
-        final ParameterContextReferenceDTO parameterContextReference = 
processGroup.getParameterContext();
+        final ParameterContextReferenceEntity parameterContextReference = 
processGroup.getParameterContext();
         if (parameterContextReference == null) {
             return;
         }
@@ -336,7 +336,7 @@ public class StandardProcessGroupDAO extends ComponentDAO 
implements ProcessGrou
         final String name = processGroupDTO.getName();
         final String comments = processGroupDTO.getComments();
 
-        final ParameterContextReferenceDTO parameterContextReference = 
processGroupDTO.getParameterContext();
+        final ParameterContextReferenceEntity parameterContextReference = 
processGroupDTO.getParameterContext();
         if (parameterContextReference != null) {
             final String parameterContextId = 
parameterContextReference.getId();
             if (parameterContextId == null) {
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
index 3d0c9d0..ec3e254 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
@@ -1411,18 +1411,19 @@
          * @param {selection} selection
          */
         openParameterContext: function (selection) {
-            var pcid;
+            var parameterContext;
+
             if (selection.empty()) {
-                pcid = nfCanvasUtils.getParameterContextId();
+                parameterContext = nfCanvasUtils.getParameterContext();
             } else if (selection.size() === 1) {
                 if (nfCanvasUtils.isProcessGroup(selection)) {
                     var pg = selection.datum();
-                    pcid = pg.component.parameterContext.id;
+                    parameterContext = pg.parameterContext;
                 }
             }
 
-            if (nfCommon.isDefinedAndNotNull(pcid)) {
-                nfParameterContexts.showParameterContext(pcid);
+            if (nfCommon.isDefinedAndNotNull(parameterContext)) {
+                nfParameterContexts.showParameterContext(parameterContext.id);
             }
         },
 
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-utils.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-utils.js
index 5241263..2a5d573 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-utils.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-utils.js
@@ -2089,19 +2089,19 @@
         },
 
         /**
-         * Set the parameter context id.
+         * Set the parameter context.
          *
-         * @argument {string} pcid       The parameter context id
+         * @argument {string} pc       The parameter context
          */
-        setParameterContextId: function (pcid) {
-            return nfCanvas.setParameterContextId(pcid);
+        setParameterContext: function (pc) {
+            return nfCanvas.setParameterContext(pc);
         },
 
         /**
-         * Get the parameter context id.
+         * Get the parameter context.
          */
-        getParameterContextId: function () {
-            return nfCanvas.getParameterContextId();
+        getParameterContext: function () {
+            return nfCanvas.getParameterContext();
         },
 
         /**
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
index 67b7a54..ae0dd12 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
@@ -86,7 +86,7 @@
     var polling = false;
     var allowPageRefresh = false;
     var groupId = 'root';
-    var parameterContextId;
+    var parameterContext;
     var groupName = null;
     var permissions = null;
     var parentGroupId = null;
@@ -150,7 +150,7 @@
 
             // set the group and parameter context details
             nfCanvas.setGroupId(processGroupFlow.id);
-            
nfCanvas.setParameterContextId(processGroupFlow.parameterContextId);
+            nfCanvas.setParameterContext(processGroupFlow.parameterContext);
 
             // get the current group name from the breadcrumb
             var breadcrumb = processGroupFlow.breadcrumb;
@@ -220,7 +220,7 @@
     var changeProcessGroup = function (processGroupId, options) {
         // capture the current group id to reset to in case of failure
         var currentProcessGroup = nfCanvas.getGroupId();
-        var currentParameterContext = nfCanvas.getParameterContextId();
+        var currentParameterContext = nfCanvas.getParameterContext();
 
         // update process group id and attempt to reload
         nfCanvas.setGroupId(processGroupId);
@@ -230,7 +230,7 @@
         processGroupXhr
             .fail(function (xhr, status, error) {
                 nfCanvas.setGroupId(currentProcessGroup);
-                nfCanvas.setParameterContextId(currentParameterContext);
+                nfCanvas.setParameterContext(currentParameterContext);
             });
 
         return processGroupXhr;
@@ -908,19 +908,19 @@
         },
 
         /**
-         * Set the parameter context id.
+         * Set the parameter context.
          *
-         * @argument {string} pcid       The parameter context id
+         * @argument {string} pc       The parameter context
          */
-        setParameterContextId: function (pcid) {
-            parameterContextId = pcid;
+        setParameterContext: function (pc) {
+            parameterContext = pc;
         },
 
         /**
          * Get the parameter context id.
          */
-        getParameterContextId: function () {
-            return parameterContextId;
+        getParameterContext: function () {
+            return parameterContext;
         },
 
         /**
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-context-menu.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-context-menu.js
index 9cbd904..78e3e94 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-context-menu.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-context-menu.js
@@ -87,12 +87,19 @@
      * @param {selection} selection         The selection of currently 
selected components
      */
     var hasParameterContext = function (selection) {
+        var parameterContext;
+
         if (selection.empty()) {
-            return 
!nfCommon.isUndefinedOrNull(nfCanvasUtils.getParameterContextId());
+            parameterContext = nfCanvasUtils.getParameterContext();
         } else if (nfCanvasUtils.isProcessGroup(selection)) {
             var pg = selection.datum();
-            return 
!nfCommon.isUndefinedOrNull(pg.component.parameterContext.id);
+            parameterContext = pg.parameterContext;
+        }
+
+        if (nfCommon.isDefinedAndNotNull(parameterContext)) {
+            return nfCommon.isDefinedAndNotNull(parameterContext) && 
parameterContext.permissions.canRead === true;
         }
+
         return false;
     };
 
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
index c80d8c5..84c1175 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
@@ -1519,21 +1519,21 @@
     var getParameters = function (propertyDescriptor, groupId) {
         return $.Deferred(function (deferred) {
             if (nfCommon.isDefinedAndNotNull(groupId)) {
-                var parameterContextId;
+                var parameterContext;
 
                 // attempt to identify the parameter context id, conditional 
based on whether
                 // the user is configuring the current process group
                 if (groupId === nfCanvasUtils.getGroupId()) {
-                    parameterContextId = nfCanvasUtils.getParameterContextId();
+                    parameterContext = nfCanvasUtils.getParameterContext();
                 } else {
                     var parentProcessGroup = 
nfCanvasUtils.getComponentByType('ProcessGroup').get(groupId);
-                    parameterContextId = parentProcessGroup.parameterContextId;
+                    parameterContext = parentProcessGroup.parameterContext;
                 }
 
-                if (nfCommon.isDefinedAndNotNull(parameterContextId)) {
+                if (nfCommon.isDefinedAndNotNull(parameterContext)) {
                     $.ajax({
                         type: 'GET',
-                        url: '../nifi-api/parameter-contexts/' + 
parameterContextId,
+                        url: '../nifi-api/parameter-contexts/' + 
encodeURIComponent(parameterContext.id),
                         dataType: 'json'
                     }).done(function (response) {
                         var sensitive = 
nfCommon.isSensitiveProperty(propertyDescriptor);
@@ -1877,14 +1877,18 @@
                         return goToServiceFromProperty(serviceTable);
                     },
                     getParameterContextId: function (groupId) {
+                        var parameterContext;
+
                         // attempt to identify the parameter context id, 
conditional based on whether
                         // the user is configuring the current process group
                         if (_.isNil(groupId) || groupId === 
nfCanvasUtils.getGroupId()) {
-                            return nfCanvasUtils.getParameterContextId();
+                            parameterContext = 
nfCanvasUtils.getParameterContext();
                         } else {
                             var parentProcessGroup = 
nfCanvasUtils.getComponentByType('ProcessGroup').get(groupId);
-                            return parentProcessGroup.parameterContextId;
+                            parameterContext = 
parentProcessGroup.parameterContext;
                         }
+
+                        return nfCommon.isDefinedAndNotNull(parameterContext) 
? parameterContext.id : null;
                     }
                 });
 
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group-configuration.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group-configuration.js
index 43e84f2..efe0ea3 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group-configuration.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group-configuration.js
@@ -408,9 +408,9 @@
             };
 
             // populate the parameter context
-            if (processGroupResult.permissions.canRead && 
$.isEmptyObject(processGroupResult.component.parameterContext) === false) {
+            if 
(nfCommon.isDefinedAndNotNull(processGroupResult.parameterContext)) {
                 comboOptions.selectedOption = {
-                    value: processGroupResult.component.parameterContext.id
+                    value: processGroupResult.parameterContext.id
                 };
             }
 
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
index 90cd05f..dfb3c39 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
@@ -633,12 +633,12 @@
                     return $.Deferred(function (deferred) {
                         if (nfCommon.isDefinedAndNotNull(groupId)) {
                             // processors being configured must be in the 
current group
-                            var parameterContextId = 
nfCanvasUtils.getParameterContextId();
+                            var parameterContext = 
nfCanvasUtils.getParameterContext();
 
-                            if 
(nfCommon.isDefinedAndNotNull(parameterContextId)) {
+                            if 
(nfCommon.isDefinedAndNotNull(parameterContext)) {
                                 $.ajax({
                                     type: 'GET',
-                                    url: '../nifi-api/parameter-contexts/' + 
parameterContextId,
+                                    url: '../nifi-api/parameter-contexts/' + 
encodeURIComponent(parameterContext.id),
                                     dataType: 'json'
                                 }).done(function (response) {
                                     var sensitive = 
nfCommon.isSensitiveProperty(propertyDescriptor);
@@ -662,7 +662,8 @@
                 goToServiceDeferred: goToServiceFromProperty,
                 getParameterContextId: function (groupId) {
                     // processors being configured must be in the current group
-                    return nfCanvasUtils.getParameterContextId();
+                    var parameterContext = nfCanvasUtils.getParameterContext();
+                    return nfCommon.isDefinedAndNotNull(parameterContext) ? 
parameterContext.id : null;
                 }
             });
         },
diff --git 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGGetParamContext.java
 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGGetParamContext.java
index de0d5ae..8ebaae2 100644
--- 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGGetParamContext.java
+++ 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGGetParamContext.java
@@ -26,8 +26,8 @@ import org.apache.nifi.toolkit.cli.impl.command.CommandOption;
 import org.apache.nifi.toolkit.cli.impl.command.nifi.AbstractNiFiCommand;
 import org.apache.nifi.toolkit.cli.impl.result.StringResult;
 import org.apache.nifi.util.StringUtils;
-import org.apache.nifi.web.api.dto.ParameterContextReferenceDTO;
 import org.apache.nifi.web.api.dto.ProcessGroupDTO;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 import org.apache.nifi.web.api.entity.ProcessGroupEntity;
 
 import java.io.IOException;
@@ -66,7 +66,7 @@ public class PGGetParamContext extends 
AbstractNiFiCommand<StringResult> {
             return "";
         }
 
-        final ParameterContextReferenceDTO parameterContextReference = 
processGroup.getParameterContext();
+        final ParameterContextReferenceEntity parameterContextReference = 
processGroup.getParameterContext();
         if (parameterContextReference == null) {
             return "";
         }
diff --git 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGSetParamContext.java
 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGSetParamContext.java
index 7cb6d9b..f369cd2 100644
--- 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGSetParamContext.java
+++ 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGSetParamContext.java
@@ -25,8 +25,8 @@ import 
org.apache.nifi.toolkit.cli.impl.client.nifi.ProcessGroupClient;
 import org.apache.nifi.toolkit.cli.impl.command.CommandOption;
 import org.apache.nifi.toolkit.cli.impl.command.nifi.AbstractNiFiCommand;
 import org.apache.nifi.toolkit.cli.impl.result.VoidResult;
-import org.apache.nifi.web.api.dto.ParameterContextReferenceDTO;
 import org.apache.nifi.web.api.dto.ProcessGroupDTO;
+import org.apache.nifi.web.api.entity.ParameterContextReferenceEntity;
 import org.apache.nifi.web.api.entity.ProcessGroupEntity;
 
 import java.io.IOException;
@@ -60,7 +60,7 @@ public class PGSetParamContext extends 
AbstractNiFiCommand<VoidResult> {
         final ProcessGroupClient pgClient = client.getProcessGroupClient();
         final ProcessGroupEntity pgEntity = pgClient.getProcessGroup(pgId);
 
-        final ParameterContextReferenceDTO parameterContextReference = new 
ParameterContextReferenceDTO();
+        final ParameterContextReferenceEntity parameterContextReference = new 
ParameterContextReferenceEntity();
         parameterContextReference.setId(paramContextId);
 
         final ProcessGroupDTO updatedDTO = new ProcessGroupDTO();

Reply via email to