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());