You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by an...@apache.org on 2021/01/20 14:57:20 UTC

[sling-org-apache-sling-feature-cpconverter] 01/01: SLING-10079 : Review DefaultAclManager.computePathWithTypes

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

angela pushed a commit to branch SLING-10078
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git

commit fd5dc48317f97958256c0eaf90d639a0115f9ebc
Author: angela <an...@adobe.com>
AuthorDate: Wed Jan 20 15:56:59 2021 +0100

    SLING-10079 : Review DefaultAclManager.computePathWithTypes
---
 .../accesscontrol/DefaultAclManager.java           | 62 ++++++++++++----------
 1 file changed, 35 insertions(+), 27 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java
index 1508a78..e4c9313 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java
@@ -294,43 +294,51 @@ public class DefaultAclManager implements AclManager {
         privilegeDefinitions = null;
     }
 
-     protected @Nullable String computePathWithTypes(@NotNull RepoPath path, @NotNull List<VaultPackageAssembler> packageAssemblers) {
-        path = new RepoPath(PlatformNameFormat.getPlatformPath(path.toString()));
-
-        boolean type = false;
+    protected @Nullable String computePathWithTypes(@NotNull RepoPath path, @NotNull List<VaultPackageAssembler> packageAssemblers) {
+        String[] parts = PlatformNameFormat.getPlatformPath(path.toString()).substring(1).split("/");
+        boolean foundType = false;
         String current = "";
-        for (String part : path.toString().substring(1).split("/")) {
+        for (String part : parts) {
             current += current.isEmpty() ? part : "/" + part;
             for (VaultPackageAssembler packageAssembler : packageAssemblers) {
                 File currentContent = packageAssembler.getEntry(current + "/" + CONTENT_XML_FILE_NAME);
                 if (currentContent.isFile()) {
-                    String primary;
-                    String mixin;
-                    try (FileInputStream input = new FileInputStream(currentContent);
-                         FileInputStream input2 = new FileInputStream(currentContent)) {
-                        primary = new PrimaryTypeParser().parse(input);
-                        mixin = new MixinParser().parse(input2);
-                        current += "(" + primary;
-                        if (mixin != null) {
-                            mixin = mixin.trim();
-                            if (mixin.startsWith("[")) {
-                                mixin = mixin.substring(1, mixin.length() - 1);
-                            }
-                            current += " mixin " + mixin;
-                        }
-                        current += ")";
-                        type = true;
-                    } catch (Exception e) {
-                        throw new RuntimeException("A fatal error occurred while parsing the '"
-                                + currentContent
-                                + "' file, see nested exceptions: "
-                                + e);
+                    String typeNames = extractTypeNames(currentContent);
+                    if (typeNames != null) {
+                        current += typeNames;
+                        foundType = true;
                     }
                 }
             }
         }
+        return foundType ? new RepoPath(current).toString() : null;
+    }
 
-        return type ? new RepoPath(current).toString() : null;
+    @Nullable
+    private String extractTypeNames(@NotNull File currentContent) {
+        String typeNames = null;
+        try (FileInputStream input = new FileInputStream(currentContent);
+             FileInputStream input2 = new FileInputStream(currentContent)) {
+            String primary = new PrimaryTypeParser().parse(input);
+            if (primary != null) {
+                typeNames = "(" + primary;
+                String mixin = new MixinParser().parse(input2);
+                if (mixin != null) {
+                    mixin = mixin.trim();
+                    if (mixin.startsWith("[")) {
+                        mixin = mixin.substring(1, mixin.length() - 1);
+                    }
+                    typeNames += " mixin " + mixin;
+                }
+                typeNames += ")";
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("A fatal error occurred while parsing the '"
+                    + currentContent
+                    + "' file, see nested exceptions: "
+                    + e);
+        }
+        return typeNames;
     }
 
     @NotNull