You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jg...@apache.org on 2022/03/03 00:12:45 UTC

[nifi] branch main updated: NIFI-9745 - Prevent insertion of revisions in NiFi registry when revision feature is disabled

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

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


The following commit(s) were added to refs/heads/main by this push:
     new db76907  NIFI-9745 - Prevent insertion of revisions in NiFi registry when revision feature is disabled
db76907 is described below

commit db7690769d5966d390638461e13f8896fc4cb840
Author: Bryan Bende <bb...@gmail.com>
AuthorDate: Wed Mar 2 09:57:55 2022 -0500

    NIFI-9745 - Prevent insertion of revisions in NiFi registry when revision feature is disabled
    
    Signed-off-by: Joe Gresock <jg...@gmail.com>
    
    This closes #5823.
---
 .../web/service/StandardServiceFacade.java         | 69 +++++++++++++++++-----
 1 file changed, 55 insertions(+), 14 deletions(-)

diff --git a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/service/StandardServiceFacade.java b/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/service/StandardServiceFacade.java
index ba9878a..f4a5459 100644
--- a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/service/StandardServiceFacade.java
+++ b/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/service/StandardServiceFacade.java
@@ -155,7 +155,7 @@ public class StandardServiceFacade implements ServiceFacade {
     public Bucket getBucket(final String bucketIdentifier) {
         authorizeBucketAccess(RequestAction.READ, bucketIdentifier);
 
-        final Bucket bucket = entityService.get(() -> registryService.getBucket(bucketIdentifier));
+        final Bucket bucket = getRevisableEntity(() -> registryService.getBucket(bucketIdentifier));
         permissionsService.populateBucketPermissions(bucket);
         linkService.populateLinks(bucket);
         return bucket;
@@ -169,7 +169,7 @@ public class StandardServiceFacade implements ServiceFacade {
             return Collections.emptyList();
         }
 
-        final List<Bucket> buckets = entityService.getEntities(() -> registryService.getBuckets(authorizedBucketIds));
+        final List<Bucket> buckets = getRevisableEntities(() -> registryService.getBuckets(authorizedBucketIds));
         permissionsService.populateBucketPermissions(buckets);
         linkService.populateLinks(buckets);
         return buckets;
@@ -209,7 +209,7 @@ public class StandardServiceFacade implements ServiceFacade {
         authorizeBucketAccess(RequestAction.READ, bucketIdentifier);
 
         final List<BucketItem> items = registryService.getBucketItems(bucketIdentifier);
-        entityService.populateRevisions(items);
+        populateRevisableEntities(items);
         permissionsService.populateItemPermissions(items);
         linkService.populateLinks(items);
         return items;
@@ -224,7 +224,7 @@ public class StandardServiceFacade implements ServiceFacade {
         }
 
         final List<BucketItem> items = registryService.getBucketItems(authorizedBucketIds);
-        entityService.populateRevisions(items);
+        populateRevisableEntities(items);
         permissionsService.populateItemPermissions(items);
         linkService.populateLinks(items);
         return items;
@@ -254,7 +254,7 @@ public class StandardServiceFacade implements ServiceFacade {
     public VersionedFlow getFlow(final String bucketIdentifier, final String flowIdentifier) {
         authorizeBucketAccess(RequestAction.READ, bucketIdentifier);
 
-        final VersionedFlow flow = entityService.get(
+        final VersionedFlow flow = getRevisableEntity(
                 () -> registryService.getFlow(bucketIdentifier, flowIdentifier));
         permissionsService.populateItemPermissions(flow);
         linkService.populateLinks(flow);
@@ -263,7 +263,7 @@ public class StandardServiceFacade implements ServiceFacade {
 
     @Override
     public VersionedFlow getFlow(final String flowIdentifier) {
-        final VersionedFlow flow =  entityService.get(() -> registryService.getFlow(flowIdentifier));
+        final VersionedFlow flow =  getRevisableEntity(() -> registryService.getFlow(flowIdentifier));
         authorizeBucketAccess(RequestAction.READ, flow);
 
         permissionsService.populateItemPermissions(flow);
@@ -275,7 +275,7 @@ public class StandardServiceFacade implements ServiceFacade {
     public List<VersionedFlow> getFlows(final String bucketIdentifier) {
         authorizeBucketAccess(RequestAction.READ, bucketIdentifier);
 
-        final List<VersionedFlow> flows = entityService.getEntities(() -> registryService.getFlows(bucketIdentifier));
+        final List<VersionedFlow> flows = getRevisableEntities(() -> registryService.getFlows(bucketIdentifier));
         permissionsService.populateItemPermissions(flows);
         linkService.populateLinks(flows);
         return flows;
@@ -866,14 +866,14 @@ public class StandardServiceFacade implements ServiceFacade {
     public List<User> getUsers() {
         verifyAuthorizerIsManaged();
         authorizeTenantsAccess(RequestAction.READ);
-        return entityService.getEntities(() -> authorizationService.getUsers());
+        return getRevisableEntities(() -> authorizationService.getUsers());
     }
 
     @Override
     public User getUser(final String identifier) {
         verifyAuthorizerIsManaged();
         authorizeTenantsAccess(RequestAction.READ);
-        return entityService.get(() -> authorizationService.getUser(identifier));
+        return getRevisableEntity(() -> authorizationService.getUser(identifier));
     }
 
     @Override
@@ -918,14 +918,14 @@ public class StandardServiceFacade implements ServiceFacade {
     public List<UserGroup> getUserGroups() {
         verifyAuthorizerIsManaged();
         authorizeTenantsAccess(RequestAction.READ);
-        return entityService.getEntities(() -> authorizationService.getUserGroups());
+        return getRevisableEntities(() -> authorizationService.getUserGroups());
     }
 
     @Override
     public UserGroup getUserGroup(final String identifier) {
         verifyAuthorizerIsManaged();
         authorizeTenantsAccess(RequestAction.READ);
-        return entityService.get(() -> authorizationService.getUserGroup(identifier));
+        return getRevisableEntity(() -> authorizationService.getUserGroup(identifier));
     }
 
     @Override
@@ -972,21 +972,21 @@ public class StandardServiceFacade implements ServiceFacade {
     public AccessPolicy getAccessPolicy(final String identifier) {
         verifyAuthorizerIsManaged();
         authorizePoliciesAccess(RequestAction.READ);
-        return entityService.get(() -> authorizationService.getAccessPolicy(identifier));
+        return getRevisableEntity(() -> authorizationService.getAccessPolicy(identifier));
     }
 
     @Override
     public AccessPolicy getAccessPolicy(final String resource, final RequestAction action) {
         verifyAuthorizerIsManaged();
         authorizePoliciesAccess(RequestAction.READ);
-        return entityService.get(() -> authorizationService.getAccessPolicy(resource, action));
+        return getRevisableEntity(() -> authorizationService.getAccessPolicy(resource, action));
     }
 
     @Override
     public List<AccessPolicy> getAccessPolicies() {
         verifyAuthorizerIsManaged();
         authorizePoliciesAccess(RequestAction.READ);
-        return entityService.getEntities(() -> authorizationService.getAccessPolicies());
+        return getRevisableEntities(() -> authorizationService.getAccessPolicies());
     }
 
     @Override
@@ -1230,6 +1230,47 @@ public class StandardServiceFacade implements ServiceFacade {
         }
     }
 
+    private <T extends RevisableEntity> T getRevisableEntity(final Supplier<T> getEntity) {
+        if (!revisionFeature.isEnabled()) {
+            final T entity = getEntity.get();
+            if (entity.getRevision() == null) {
+                entity.setRevision(new RevisionInfo(null, 0L));
+            }
+            return entity;
+        } else {
+            return entityService.get(getEntity);
+        }
+    }
+
+    private <T extends RevisableEntity> List<T> getRevisableEntities(final Supplier<List<T>> getEntities) {
+        if (!revisionFeature.isEnabled()) {
+            final List<T> entities = getEntities.get();
+            for (final RevisableEntity entity : entities) {
+                if (entity.getRevision() == null) {
+                    entity.setRevision(new RevisionInfo(null, 0L));
+                }
+            }
+            return entities;
+        } else {
+            return entityService.getEntities(getEntities);
+        }
+    }
+
+    private void populateRevisableEntities(final List<?> entities) {
+        if (!revisionFeature.isEnabled()) {
+            for (final Object entity : entities) {
+                if (entity instanceof RevisableEntity) {
+                    final RevisableEntity revisableEntity = (RevisableEntity) entity;
+                    if (revisableEntity.getRevision() == null) {
+                        revisableEntity.setRevision(new RevisionInfo(null, 0L));
+                    }
+                }
+            }
+        } else {
+            entityService.populateRevisions(entities);
+        }
+    }
+
     private <T extends RevisableEntity> T createRevisableEntity(final T requestEntity, final String entityTypeName,
                                                                 final String creatorIdentity, final Supplier<T> createEntity) {