You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2021/06/23 06:23:27 UTC

[jackrabbit-filevault] branch master updated: JCRVLT-476 revert broken regex

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

kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git


The following commit(s) were added to refs/heads/master by this push:
     new 196cc51  JCRVLT-476 revert broken regex
196cc51 is described below

commit 196cc51686685a389e279437a0d477c487623781
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Wed Jun 23 08:23:16 2021 +0200

    JCRVLT-476 revert broken regex
    
    fix some more Sonar issues
---
 .../jackrabbit/vault/packaging/impl/PackagingImpl.java       |  1 +
 .../org/apache/jackrabbit/vault/util/InputStreamPump.java    | 12 +++++++++---
 .../validation/spi/impl/PackageTypeValidatorFactory.java     |  2 +-
 .../spi/impl/nodetype/JcrNodeTypeMetaDataImpl.java           |  7 ++++---
 .../vault/validation/spi/impl/PackageTypeValidatorTest.java  |  5 ++++-
 5 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagingImpl.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagingImpl.java
index 80250e7..45df491 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagingImpl.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagingImpl.java
@@ -70,6 +70,7 @@ public class PackagingImpl implements Packaging {
     @Reference (cardinality = ReferenceCardinality.MULTIPLE,
             policy = ReferencePolicy.DYNAMIC,
             policyOption = ReferencePolicyOption.GREEDY)
+    @SuppressWarnings("java:S3077") // volatile mandated by OSGi spec
     volatile List<PackageRegistry> registries;
 
     /**
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/util/InputStreamPump.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/util/InputStreamPump.java
index da473b9..96c5143 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/util/InputStreamPump.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/util/InputStreamPump.java
@@ -51,7 +51,7 @@ public class InputStreamPump extends InputStream {
 
     private Thread pumpThread;
 
-    private volatile Exception error;
+    private Exception error;
 
     public InputStreamPump(InputStream source, final Pump pump) throws IOException {
         this.source = source;
@@ -67,7 +67,9 @@ public class InputStreamPump extends InputStream {
                     byte[] buffer = new byte[8192];
                     while (in.read(buffer) >= 0);
                 } catch (Exception e) {
-                    error = e;
+                    synchronized (error) {
+                        error = e;
+                    }
                     log.error("Error while processing input stream", e);
                 }
             }
@@ -92,7 +94,9 @@ public class InputStreamPump extends InputStream {
      */
     @Deprecated
     public Exception getError() {
-        return error;
+        synchronized(error) {
+            return error;
+        }
     }
 
     @Override
@@ -151,10 +155,12 @@ public class InputStreamPump extends InputStream {
 
     @Override
     public synchronized void mark(int readlimit) {
+        throw new UnsupportedOperationException("Mark not supported");
     }
 
     @Override
     public synchronized void reset() throws IOException {
+        throw new UnsupportedOperationException("Reset not supported");
     }
 
     @Override
diff --git a/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidatorFactory.java b/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidatorFactory.java
index b7168d7..66c0f58 100644
--- a/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidatorFactory.java
+++ b/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidatorFactory.java
@@ -66,7 +66,7 @@ public final class PackageTypeValidatorFactory implements ValidatorFactory {
     /**
      *  option to disable exclude/include filter check
      */
-    static final Pattern DEFAULT_JCR_INSTALLER_NODE_PATH_REGEX = Pattern.compile("/([^/]*/){0,4}?(install|config)[\\./].*+");
+    static final Pattern DEFAULT_JCR_INSTALLER_NODE_PATH_REGEX = Pattern.compile("/([^/]*/){0,4}?(install|config)(\\.[^/]*)*/(\\d{1,3}/)?.+?");
 
     static final Pattern DEFAULT_ADDITIONAL_JCR_INSTALLER_FILE_NODE_PATH_REGEX = Pattern.compile(".+?\\.(jar|config|cfg|cfg\\.json)");
 
diff --git a/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/JcrNodeTypeMetaDataImpl.java b/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/JcrNodeTypeMetaDataImpl.java
index fbca7bd..bc4b98f 100644
--- a/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/JcrNodeTypeMetaDataImpl.java
+++ b/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/JcrNodeTypeMetaDataImpl.java
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.vault.validation.spi.impl.nodetype;
 
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -646,18 +647,18 @@ public class JcrNodeTypeMetaDataImpl implements JcrNodeTypeMetaData {
 
             @Override
             public @NotNull String getNodePath() {
-                return null;
+                return "";
             }
 
             @Override
             @NotNull
             public java.nio.file.@NotNull Path getFilePath() {
-                return null;
+                return Paths.get("");
             }
 
             @Override
             public java.nio.file.@NotNull Path getBasePath() {
-                return null;
+                return Paths.get("");
             }
             
         }, NameConstants.ROOT, NameConstants.REP_ROOT, effectiveNodeTypeProvider.getEffectiveNodeType(
diff --git a/vault-validation/src/test/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidatorTest.java b/vault-validation/src/test/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidatorTest.java
index e13a314..ea216fb 100644
--- a/vault-validation/src/test/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidatorTest.java
+++ b/vault-validation/src/test/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidatorTest.java
@@ -136,6 +136,7 @@ public class PackageTypeValidatorTest {
 
     @Test
     public void testContainerPackageType() {
+        // regular nodes not allowed!
         validator = new PackageTypeValidator(filter, ValidationMessageSeverity.ERROR, ValidationMessageSeverity.WARN, ValidationMessageSeverity.INFO, false, false, false, false, PackageType.CONTAINER, PackageTypeValidatorFactory.DEFAULT_JCR_INSTALLER_NODE_PATH_REGEX, PackageTypeValidatorFactory.DEFAULT_ADDITIONAL_JCR_INSTALLER_FILE_NODE_PATH_REGEX, PackageTypeValidatorFactory.DEFAULT_IMMUTABLE_ROOT_NODE_NAMES, null);
         MatcherAssert.assertThat(validator.validate(new NodeContextImpl("/apps/some/node", Paths.get("some", "file1"), Paths.get("base"))), AnyValidationMessageMatcher.noValidationInCollection());
         MatcherAssert.assertThat(validator.validate(new NodeContextImpl("/libs/some/node", Paths.get("some", "file2"), Paths.get("base"))), AnyValidationMessageMatcher.noValidationInCollection());
@@ -145,6 +146,8 @@ public class PackageTypeValidatorTest {
                 new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_NO_OSGI_BUNDLE_OR_CONFIG_OR_SUB_PACKAGE, PackageType.CONTAINER), "/libs/some/node", Paths.get("some", "file2"), Paths.get("base"), null),
                 new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_NO_OSGI_BUNDLE_OR_CONFIG_OR_SUB_PACKAGE, PackageType.CONTAINER), "/content/some/node", Paths.get("some", "file3"), Paths.get("base"), null)
                 );
+
+        // empty folder should lead to validation error
         validator = new PackageTypeValidator(filter, ValidationMessageSeverity.ERROR, ValidationMessageSeverity.WARN, ValidationMessageSeverity.INFO, false, false, false, false, PackageType.CONTAINER, PackageTypeValidatorFactory.DEFAULT_JCR_INSTALLER_NODE_PATH_REGEX, PackageTypeValidatorFactory.DEFAULT_ADDITIONAL_JCR_INSTALLER_FILE_NODE_PATH_REGEX, PackageTypeValidatorFactory.DEFAULT_IMMUTABLE_ROOT_NODE_NAMES, null);
         MatcherAssert.assertThat(validator.validate(new NodeContextImpl("/apps/install.runmode", Paths.get("runmode"), Paths.get("base"))), AnyValidationMessageMatcher.noValidationInCollection());
         MatcherAssert.assertThat(validator.validate(new NodeContextImpl("/apps/install.runmode/somebundle.jar", Paths.get("runmode", "somebundle.jar"), Paths.get("base"))), AnyValidationMessageMatcher.noValidationInCollection());
@@ -155,7 +158,7 @@ public class PackageTypeValidatorTest {
         ValidationExecutorTest.assertViolation(validator.done(), 
                 new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_NO_OSGI_BUNDLE_OR_CONFIG_OR_SUB_PACKAGE, PackageType.CONTAINER), "/apps/install.runmode2", Paths.get("apps", "install", "runmode2"), Paths.get("base"), null)
         );
-        
+
         validator = new PackageTypeValidator(filter, ValidationMessageSeverity.ERROR, ValidationMessageSeverity.WARN, ValidationMessageSeverity.INFO, false, false, false, false, PackageType.CONTAINER, PackageTypeValidatorFactory.DEFAULT_JCR_INSTALLER_NODE_PATH_REGEX, PackageTypeValidatorFactory.DEFAULT_ADDITIONAL_JCR_INSTALLER_FILE_NODE_PATH_REGEX, PackageTypeValidatorFactory.DEFAULT_IMMUTABLE_ROOT_NODE_NAMES, null);
         Mockito.when(properties.getPackageType()).thenReturn(PackageType.CONTAINER);
         MatcherAssert.assertThat(validator.validate(properties), AnyValidationMessageMatcher.noValidationInCollection());