You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2021/12/15 17:46:57 UTC
[sling-org-apache-sling-jcr-contentloader] 01/01: SLING-11001 for single file source path replace the target node
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch bugfix/SLING-11001
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-contentloader.git
commit edeee4d27eb0bc4dfdb38231420abff2f44ea89d
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Wed Dec 15 18:46:00 2021 +0100
SLING-11001 for single file source path replace the target node
Update mocking libraries to latest versions
---
pom.xml | 162 +++++++++++++++------
.../internal/BundleContentLoader.java | 10 +-
.../internal/BundleContentLoaderTest.java | 23 ++-
3 files changed, 138 insertions(+), 57 deletions(-)
diff --git a/pom.xml b/pom.xml
index af14a2d..269be33 100644
--- a/pom.xml
+++ b/pom.xml
@@ -103,6 +103,14 @@
</reporting>
<dependencies>
+ <!-- this dependency must come first to make sure Oak 1.40.0 is used for testing and not older versions being provided by other dependencies (oak-api, oak-security-spi) -->
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.testing.sling-mock-oak</artifactId>
+ <version>3.1.2-1.40.0</version>
+ <scope>test</scope>
+ </dependency>
+
<!-- OSGi -->
<dependency>
<groupId>org.osgi</groupId>
@@ -111,17 +119,17 @@
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.service.component.annotations</artifactId>
+ <artifactId>org.osgi.annotation.bundle</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.service.metatype.annotations</artifactId>
+ <artifactId>org.osgi.service.component.annotations</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.annotation.bundle</artifactId>
+ <artifactId>org.osgi.service.metatype.annotations</artifactId>
<scope>provided</scope>
</dependency>
<!-- JetBrains annotations for null-analysis (SLING-7798) -->
@@ -131,11 +139,6 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.serviceusermapper</artifactId>
<version>1.3.4</version>
@@ -144,7 +147,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.jcr.api</artifactId>
- <version>2.3.0</version>
+ <version>2.4.0</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -167,9 +170,35 @@
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ <version>2.16.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-commons</artifactId>
+ <version>2.16.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-api</artifactId>
+ <version>1.8.0</version>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
<artifactId>oak-security-spi</artifactId>
<version>1.8.0</version>
+ <scope>provided</scope>
<optional>true</optional>
+ <exclusions>
+ <exclusion>
+ <groupId>*</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
@@ -180,7 +209,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.osgi</artifactId>
- <version>2.3.0</version>
+ <version>2.4.0</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -190,23 +219,6 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- <version>2.12.1</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-jcr-commons</artifactId>
- <version>2.12.1</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
<groupId>net.sf.kxml</groupId>
<artifactId>kxml2</artifactId>
<version>2.2.2</version>
@@ -245,7 +257,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.api</artifactId>
- <version>2.11.0</version>
+ <version>2.16.4</version>
<scope>provided</scope>
</dependency>
<!-- Apache Felix -->
@@ -282,21 +294,71 @@
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.testing.osgi-mock</artifactId>
- <version>2.3.2</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.testing.jcr-mock</artifactId>
- <version>1.3.0</version>
+ <artifactId>org.apache.sling.testing.osgi-mock.junit4</artifactId>
+ <version>3.2.2</version>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.testing.sling-mock</artifactId>
- <version>2.2.12</version>
+ <artifactId>org.apache.sling.testing.sling-mock.junit4</artifactId>
+ <version>3.2.2</version>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-store-spi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.service.component.annotations</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.service.metatype.annotations</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-query-spi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-core-spi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-commons</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-commons</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
@@ -311,12 +373,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.testing.sling-mock-oak</artifactId>
- <version>2.1.2</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>junit-addons</groupId>
<artifactId>junit-addons</artifactId>
<version>1.4</version>
@@ -338,6 +394,12 @@
<artifactId>pax-exam</artifactId>
<version>${org.ops4j.pax.exam.version}</version>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
@@ -350,6 +412,12 @@
<artifactId>pax-exam-container-forked</artifactId>
<version>${org.ops4j.pax.exam.version}</version>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
@@ -362,6 +430,12 @@
<artifactId>pax-exam-link-mvn</artifactId>
<version>${org.ops4j.pax.exam.version}</version>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
</dependencies>
diff --git a/src/main/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoader.java b/src/main/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoader.java
index 9881e52..71bd020 100644
--- a/src/main/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoader.java
+++ b/src/main/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoader.java
@@ -367,14 +367,8 @@ public class BundleContentLoader extends BaseImportLoader {
log.info("install: No initial content entries at {} in bundle {}", path, bundle.getSymbolicName());
return;
}
- // we have a single file content, let's check if this has an content reader
- // extension
- for (String ext : contentCreator.getContentReaders().keySet()) {
- if (path.endsWith(ext)) {
-
- }
- }
- handleFile(path, bundle, processedEntries, configuration, parent, createdNodes, contentCreator);
+ // we have a single file content -> this should replace the target node fully, i.e. parent is one level above
+ handleFile(path, bundle, processedEntries, configuration, parent.getParent(), createdNodes, contentCreator);
return;
}
diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoaderTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoaderTest.java
index 4c8a58e..40b5a41 100644
--- a/src/test/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoaderTest.java
+++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoaderTest.java
@@ -22,10 +22,9 @@ import static java.util.Collections.singletonMap;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import java.lang.annotation.Annotation;
@@ -52,11 +51,9 @@ import org.apache.sling.api.resource.Resource;
import org.apache.sling.jcr.contentloader.internal.readers.JsonReader;
import org.apache.sling.jcr.contentloader.internal.readers.XmlReader;
import org.apache.sling.jcr.contentloader.internal.readers.ZipReader;
-import org.apache.sling.jcr.resource.internal.helper.JcrResourceUtil;
import org.apache.sling.testing.mock.osgi.MockBundle;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
import org.apache.sling.testing.mock.sling.junit.SlingContext;
-import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.junit.Before;
import org.junit.Ignore;
@@ -132,7 +129,7 @@ public class BundleContentLoaderTest {
AccessControlManager acMgr = session.getAccessControlManager();
AccessControlList acl = (AccessControlList)acMgr.getPolicies(path)[0];
AccessControlEntry[] aces = acl.getAccessControlEntries();
- MatcherAssert.assertThat(aces, Matchers.arrayContaining(expectedAces));
+ assertThat(aces, Matchers.arrayContaining(expectedAces));
}
@Test
@@ -186,6 +183,22 @@ public class BundleContentLoaderTest {
}
@Test
+ public void loadContentFromFilePathEntry() throws Exception {
+
+ BundleContentLoader contentLoader = new BundleContentLoader(bundleHelper, whiteboard, null);
+
+ Bundle mockBundle = newBundleWithInitialContent(context, "initial-content/i18n/en.json;path:=/apps/i18n/en");
+
+ contentLoader.registerBundle(context.resourceResolver().adaptTo(Session.class), mockBundle, false);
+
+ Resource imported = context.resourceResolver().getResource("/apps/i18n/en");
+
+ assertThat("Resource was not imported", imported, notNullValue());
+ assertEquals("i18n-message", imported.getValueMap().get("i18n-key"));
+ assertThat("sling:resourceType was not properly set", imported.getResourceType(), equalTo("sling:Folder"));
+ }
+
+ @Test
public void loadContentWithExcludes() throws Exception {
BundleContentLoader contentLoader = new BundleContentLoader(bundleHelper, whiteboard,