nifi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From marka...@apache.org
Subject [nifi] branch master updated: NIFI-5910 Retain external service reference when already set to an existing external service
Date Thu, 03 Oct 2019 16:32:58 GMT
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 9c9f9c1  NIFI-5910 Retain external service reference when already set to an existing
external service
9c9f9c1 is described below

commit 9c9f9c10a980342b57ae13f38239fd809578d822
Author: Bryan Bende <bbende@apache.org>
AuthorDate: Tue Oct 1 17:27:39 2019 -0400

    NIFI-5910 Retain external service reference when already set to an existing external service
    
    This closes #3783.
    
    Signed-off-by: Mark Payne <markap14@hotmail.com>
---
 .../apache/nifi/groups/StandardProcessGroup.java   | 32 ++++++++++++++++++----
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java
index 82c51ab..f52188a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java
@@ -4603,12 +4603,32 @@ public final class StandardProcessGroup implements ProcessGroup {
 
                 String value;
                 if (descriptor != null && descriptor.getIdentifiesControllerService())
{
-                    // Property identifies a Controller Service. So the value that we want
to assign is not the value given.
-                    // The value given is instead the Versioned Component ID of the Controller
Service. We want to resolve this
-                    // to the instance ID of the Controller Service.
-                    final String serviceVersionedComponentId = proposedProperties.get(propertyName);
-                    String instanceId = getServiceInstanceId(serviceVersionedComponentId,
group);
-                    value = instanceId == null ? serviceVersionedComponentId : instanceId;
+
+                    // Need to determine if the component's property descriptor for this
service is already set to an id
+                    // of an existing service that is outside the current processor group,
and if it is we want to leave
+                    // the property set to that value
+                    String existingExternalServiceId = null;
+                    final PropertyDescriptor componentDescriptor = componentNode.getPropertyDescriptor(propertyName);
+                    if (componentDescriptor != null) {
+                        final String componentDescriptorValue = componentNode.getEffectivePropertyValue(componentDescriptor);
+                        if (componentDescriptorValue != null) {
+                            final ControllerServiceNode serviceNode = findAncestorControllerService(componentDescriptorValue,
getParent());
+                            if (serviceNode != null) {
+                                existingExternalServiceId = componentDescriptorValue;
+                            }
+                        }
+                    }
+
+                    // If the component's property descriptor is not already set to an id
of an existing external service,
+                    // then we need to take the Versioned Component ID and resolve this to
the instance ID of the service
+                    if (existingExternalServiceId == null) {
+                        final String serviceVersionedComponentId = proposedProperties.get(propertyName);
+                        String instanceId = getServiceInstanceId(serviceVersionedComponentId,
group);
+                        value = instanceId == null ? serviceVersionedComponentId : instanceId;
+                    } else {
+                        value = existingExternalServiceId;
+                    }
+
                 } else {
                     value = proposedProperties.get(propertyName);
                 }


Mime
View raw message