You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2024/01/02 18:54:06 UTC

(nifi) branch support/nifi-1.x updated: NIFI-12524 Fixed null handling for auditing Connect Details

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

mattyb149 pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/support/nifi-1.x by this push:
     new e7f0efb999 NIFI-12524 Fixed null handling for auditing Connect Details
e7f0efb999 is described below

commit e7f0efb99915c02e6aafd64acd1cf8d3e990f265
Author: exceptionfactory <ex...@apache.org>
AuthorDate: Sat Dec 30 13:16:31 2023 -0600

    NIFI-12524 Fixed null handling for auditing Connect Details
    
    Signed-off-by: Matt Burgess <ma...@apache.org>
---
 .../admin/service/EntityStoreAuditService.java     | 14 ++++-
 .../admin/service/EntityStoreAuditServiceTest.java | 71 ++++++++++++++++++++++
 2 files changed, 82 insertions(+), 3 deletions(-)

diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-administration/src/main/java/org/apache/nifi/admin/service/EntityStoreAuditService.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-administration/src/main/java/org/apache/nifi/admin/service/EntityStoreAuditService.java
index 34c41d786c..00658687be 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-administration/src/main/java/org/apache/nifi/admin/service/EntityStoreAuditService.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-administration/src/main/java/org/apache/nifi/admin/service/EntityStoreAuditService.java
@@ -446,12 +446,20 @@ public class EntityStoreAuditService implements AuditService, Closeable {
         actionEntity.setLink(ActionLink.CONNECT_DETAILS.getProperty(), connectDetailsEntity);
 
         connectDetailsEntity.setProperty(ConnectDetailsEntity.SOURCE_ID.getProperty(), connectDetails.getSourceId());
-        connectDetailsEntity.setProperty(ConnectDetailsEntity.SOURCE_NAME.getProperty(), connectDetails.getSourceName());
         connectDetailsEntity.setProperty(ConnectDetailsEntity.SOURCE_TYPE.getProperty(), connectDetails.getSourceType().name());
+        if (connectDetails.getSourceName() != null) {
+            connectDetailsEntity.setProperty(ConnectDetailsEntity.SOURCE_NAME.getProperty(), connectDetails.getSourceName());
+        }
+
         connectDetailsEntity.setProperty(ConnectDetailsEntity.DESTINATION_ID.getProperty(), connectDetails.getDestinationId());
-        connectDetailsEntity.setProperty(ConnectDetailsEntity.DESTINATION_NAME.getProperty(), connectDetails.getDestinationName());
         connectDetailsEntity.setProperty(ConnectDetailsEntity.DESTINATION_TYPE.getProperty(), connectDetails.getDestinationType().name());
-        connectDetailsEntity.setProperty(ConnectDetailsEntity.RELATIONSHIP.getProperty(), connectDetails.getRelationship());
+        if (connectDetails.getDestinationName() != null) {
+            connectDetailsEntity.setProperty(ConnectDetailsEntity.DESTINATION_NAME.getProperty(), connectDetails.getDestinationName());
+        }
+
+        if (connectDetails.getRelationship() != null) {
+            connectDetailsEntity.setProperty(ConnectDetailsEntity.RELATIONSHIP.getProperty(), connectDetails.getRelationship());
+        }
     }
 
     private void addMoveDetails(final StoreTransaction storeTransaction, final Entity actionEntity, final MoveDetails moveDetails) {
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-administration/src/test/java/org/apache/nifi/admin/service/EntityStoreAuditServiceTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-administration/src/test/java/org/apache/nifi/admin/service/EntityStoreAuditServiceTest.java
index 215a9e3a05..7844e3ec31 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-administration/src/test/java/org/apache/nifi/admin/service/EntityStoreAuditServiceTest.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-administration/src/test/java/org/apache/nifi/admin/service/EntityStoreAuditServiceTest.java
@@ -21,7 +21,9 @@ import org.apache.nifi.action.Component;
 import org.apache.nifi.action.FlowChangeAction;
 import org.apache.nifi.action.Operation;
 import org.apache.nifi.action.details.ActionDetails;
+import org.apache.nifi.action.details.ConnectDetails;
 import org.apache.nifi.action.details.FlowChangeConfigureDetails;
+import org.apache.nifi.action.details.FlowChangeConnectDetails;
 import org.apache.nifi.action.details.FlowChangePurgeDetails;
 import org.apache.nifi.action.details.PurgeDetails;
 import org.apache.nifi.history.History;
@@ -74,6 +76,12 @@ class EntityStoreAuditServiceTest {
 
     private static final Component SOURCE_TYPE = Component.Processor;
 
+    private static final String DESTINATION_NAME = "UpdateCounter";
+
+    private static final Component DESTINATION_TYPE = Component.Funnel;
+
+    private static final String RELATIONSHIP = "success";
+
     private static final Operation OPERATION = Operation.Add;
 
     private static final int ACTION_ID = 0;
@@ -348,6 +356,55 @@ class EntityStoreAuditServiceTest {
         assertEquals(USER_IDENTITY, secondPreviousValue.getUserIdentity());
     }
 
+    @Test
+    void testAddActionsConnectDetailsMinimumPropertiesGetAction() {
+        final FlowChangeAction action = newAction();
+
+        final FlowChangeConnectDetails connectDetails = new FlowChangeConnectDetails();
+        connectDetails.setSourceId(SOURCE_ID);
+        connectDetails.setSourceType(SOURCE_TYPE);
+        connectDetails.setDestinationId(SECOND_SOURCE_ID);
+        connectDetails.setDestinationType(DESTINATION_TYPE);
+        action.setActionDetails(connectDetails);
+
+        final Collection<Action> actions = Collections.singletonList(action);
+
+        service.addActions(actions);
+
+        final Action actionFound = service.getAction(ACTION_ID);
+        assertEquals(ACTION_ID, actionFound.getId());
+        assertActionFound(actionFound);
+
+        final ActionDetails actionDetails = actionFound.getActionDetails();
+        assertConnectDetailsFound(connectDetails, actionDetails);
+    }
+
+    @Test
+    void testAddActionsConnectDetailsGetAction() {
+        final FlowChangeAction action = newAction();
+
+        final FlowChangeConnectDetails connectDetails = new FlowChangeConnectDetails();
+        connectDetails.setSourceName(SOURCE_NAME);
+        connectDetails.setSourceId(SOURCE_ID);
+        connectDetails.setSourceType(SOURCE_TYPE);
+        connectDetails.setDestinationName(DESTINATION_NAME);
+        connectDetails.setDestinationId(SECOND_SOURCE_ID);
+        connectDetails.setDestinationType(DESTINATION_TYPE);
+        connectDetails.setRelationship(RELATIONSHIP);
+        action.setActionDetails(connectDetails);
+
+        final Collection<Action> actions = Collections.singletonList(action);
+
+        service.addActions(actions);
+
+        final Action actionFound = service.getAction(ACTION_ID);
+        assertEquals(ACTION_ID, actionFound.getId());
+        assertActionFound(actionFound);
+
+        final ActionDetails actionDetails = actionFound.getActionDetails();
+        assertConnectDetailsFound(connectDetails, actionDetails);
+    }
+
     private FlowChangeAction newAction() {
         final FlowChangeAction action = new FlowChangeAction();
         action.setTimestamp(ACTION_TIMESTAMP);
@@ -367,4 +424,18 @@ class EntityStoreAuditServiceTest {
         assertEquals(USER_IDENTITY, actionFound.getUserIdentity());
         assertEquals(OPERATION, actionFound.getOperation());
     }
+
+    private void assertConnectDetailsFound(final ConnectDetails connectDetails, final ActionDetails actionDetails) {
+        assertNotNull(actionDetails);
+        assertInstanceOf(ConnectDetails.class, actionDetails);
+
+        final ConnectDetails connectDetailsFound = (ConnectDetails) actionDetails;
+        assertEquals(connectDetails.getSourceName(), connectDetailsFound.getSourceName());
+        assertEquals(connectDetails.getSourceId(), connectDetailsFound.getSourceId());
+        assertEquals(connectDetails.getSourceType(), connectDetailsFound.getSourceType());
+        assertEquals(connectDetails.getDestinationName(), connectDetailsFound.getDestinationName());
+        assertEquals(connectDetails.getDestinationId(), connectDetailsFound.getDestinationId());
+        assertEquals(connectDetails.getDestinationType(), connectDetailsFound.getDestinationType());
+        assertEquals(connectDetails.getRelationship(), connectDetailsFound.getRelationship());
+    }
 }