You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2021/08/24 19:57:06 UTC

[sling-org-apache-sling-fsresource] branch master updated (5fc6411 -> d882431)

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

sseifert pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-fsresource.git.


    from 5fc6411  cosmetic: cleanup trailing slashes
     new c1c80ad  SLING-10750 update to sling-bundle-parent 44 update dependencies to 2018 (same as used in SLING-10045) update to latest sling-mock eliminate code warnings
     new d882431  SLING-10751 update to latest Sling Content Parser with split up dependencies

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 bnd.bnd                                            |  5 +-
 pom.xml                                            | 91 ++++++++++++++++------
 .../sling/fsprovider/internal/FileMonitor.java     |  2 +-
 .../fsprovider/internal/FsResourceProvider.java    |  2 +-
 .../fsprovider/internal/mapper/ContentFile.java    |  2 +-
 .../sling/fsprovider/internal/mapper/Escape.java   |  5 +-
 .../fsprovider/internal/mapper/FileResource.java   |  2 +-
 .../internal/mapper/FileVaultResourceMapper.java   |  2 +-
 .../internal/mapper/valuemap/ObjectConverter.java  |  2 +-
 .../mapper/valuemap/ValueMapDecorator.java         |  5 +-
 .../internal/parser/ContentElementHandler.java     |  2 +-
 .../internal/parser/ContentFileCache.java          |  1 -
 .../internal/parser/ContentFileParserUtil.java     | 45 +++++------
 .../internal/parser/ContentFileTypes.java          |  2 -
 .../{ContentFileTypes.java => ContentType.java}    | 34 +++++---
 .../sling/fsprovider/internal/FileMonitorTest.java | 13 ++--
 .../fsprovider/internal/FileVaultContentTest.java  |  2 +-
 .../internal/FileVaultFileMonitorTest.java         | 13 ++--
 .../sling/fsprovider/internal/FilesFolderTest.java |  2 +-
 .../fsprovider/internal/InvalidRootFolderTest.java |  3 +-
 .../sling/fsprovider/internal/JcrMixedTest.java    |  2 +-
 .../fsprovider/internal/JcrXmlContentTest.java     |  2 +-
 .../sling/fsprovider/internal/JsonContentTest.java |  4 +-
 .../sling/fsprovider/internal/TestUtils.java       |  6 +-
 .../internal/mapper/valuemap/Convert.java          |  1 +
 25 files changed, 151 insertions(+), 99 deletions(-)
 copy src/main/java/org/apache/sling/fsprovider/internal/parser/{ContentFileTypes.java => ContentType.java} (59%)

[sling-org-apache-sling-fsresource] 01/02: SLING-10750 update to sling-bundle-parent 44 update dependencies to 2018 (same as used in SLING-10045) update to latest sling-mock eliminate code warnings

Posted by ss...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sseifert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-fsresource.git

commit c1c80ade4f38cda56d785ea64d2ad2f08f5618cd
Author: Stefan Seifert <st...@users.noreply.github.com>
AuthorDate: Tue Aug 24 18:37:33 2021 +0200

    SLING-10750 update to sling-bundle-parent 44
    update dependencies to 2018 (same as used in SLING-10045)
    update to latest sling-mock
    eliminate code warnings
---
 pom.xml                                            | 44 +++++++++++++---------
 .../sling/fsprovider/internal/FileMonitor.java     |  2 +-
 .../sling/fsprovider/internal/mapper/Escape.java   |  5 +--
 .../internal/mapper/valuemap/ObjectConverter.java  |  2 +-
 .../mapper/valuemap/ValueMapDecorator.java         |  5 ++-
 .../sling/fsprovider/internal/FileMonitorTest.java |  8 ++--
 .../fsprovider/internal/FileVaultContentTest.java  |  2 +-
 .../internal/FileVaultFileMonitorTest.java         |  8 ++--
 .../sling/fsprovider/internal/FilesFolderTest.java |  2 +-
 .../fsprovider/internal/InvalidRootFolderTest.java |  3 +-
 .../sling/fsprovider/internal/JcrMixedTest.java    |  2 +-
 .../fsprovider/internal/JcrXmlContentTest.java     |  2 +-
 .../sling/fsprovider/internal/JsonContentTest.java |  2 +-
 .../sling/fsprovider/internal/TestUtils.java       |  6 +--
 .../internal/mapper/valuemap/Convert.java          |  1 +
 15 files changed, 55 insertions(+), 39 deletions(-)

diff --git a/pom.xml b/pom.xml
index 79d0fc7..3aa7dea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling-bundle-parent</artifactId>
-        <version>39</version>
+        <version>44</version>
         <relativePath />
     </parent>
 
@@ -38,8 +38,12 @@
         <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-fsresource.git</connection>
         <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-fsresource.git</developerConnection>
         <url>https://gitbox.apache.org/repos/asf?p=sling-org-apache-sling-fsresource.git</url>
-      <tag>HEAD</tag>
-  </scm>
+        <tag>HEAD</tag>
+    </scm>
+
+    <properties>
+        <project.build.outputTimestamp>2021-08-24T00:00:00Z</project.build.outputTimestamp>
+    </properties>
 
     <build>
         <plugins>
@@ -73,29 +77,29 @@
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
+            <scope>provided</scope>
         </dependency>
         <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>
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.adapter</artifactId>
-            <version>2.0.4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.core</artifactId>
+            <version>2.1.10</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.3.2</version>
+            <version>3.6</version>
             <scope>compile</scope>
         </dependency>
         <dependency>
@@ -106,8 +110,8 @@
         </dependency>
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-json_1.0_spec</artifactId>
-            <version>1.0-alpha-1</version>
+            <artifactId>geronimo-json_1.1_spec</artifactId>
+            <version>1.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -119,7 +123,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.commons.osgi</artifactId>
-            <version>2.2.0</version>
+            <version>2.4.0</version>
             <scope>compile</scope>
         </dependency>
         <dependency>
@@ -131,7 +135,6 @@
         <dependency>
             <groupId>org.jetbrains</groupId>
             <artifactId>annotations</artifactId>
-            <version>16.0.2</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -141,8 +144,15 @@
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.testing.sling-mock</artifactId>
-            <version>2.2.6</version>
+            <artifactId>org.apache.sling.testing.sling-mock.junit4</artifactId>
+            <version>3.0.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-api</artifactId>
+            <!-- Overwrite old version from org.apache.sling.jcr.contentparser -->
+            <version>2.16.0</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -160,7 +170,7 @@
         <dependency>
             <groupId>org.apache.johnzon</groupId>
             <artifactId>johnzon-core</artifactId>
-            <version>1.0.0</version>
+            <version>1.1.1</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/FileMonitor.java b/src/main/java/org/apache/sling/fsprovider/internal/FileMonitor.java
index 21dccc2..261f34e 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FileMonitor.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FileMonitor.java
@@ -299,7 +299,7 @@ public final class FileMonitor extends TimerTask {
         }
     }
     private ResourceChange buildContentResourceChange(final ChangeType changeType, final String path) {
-        return new ResourceChange(changeType, path, false, null, null, null);
+        return new ResourceChange(changeType, path, false);
     }
 
     /**
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/Escape.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/Escape.java
index 9b059a3..fd41e9a 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/Escape.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/Escape.java
@@ -21,10 +21,9 @@ package org.apache.sling.fsprovider.internal.mapper;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.util.BitSet;
 
-import org.apache.commons.lang3.CharEncoding;
-
 /**
  * Manages deescaping for platform file names to resource names.
  */
@@ -88,7 +87,7 @@ public final class Escape {
             for (int i=0; i<path.length(); i++) {
                 char c = path.charAt(i);
                 if (RESERVED_CHARS_SET.get(c)) {
-                    result.append(URLEncoder.encode(String.valueOf(c), CharEncoding.UTF_8));
+                    result.append(URLEncoder.encode(String.valueOf(c), StandardCharsets.UTF_8.name()));
                 }
                 else {
                     result.append(c);
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverter.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverter.java
index da2d86b..9a6fe4a 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverter.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverter.java
@@ -42,7 +42,7 @@ final class ObjectConverter {
      * @param type type
      * @return the converted object
      */
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings({ "unchecked", "null" })
     public static <T> T convert(Object obj, Class<T> type) {
         if (obj == null) {
             return null;
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecorator.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecorator.java
index c5fb347..f6808c2 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecorator.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecorator.java
@@ -48,6 +48,7 @@ public final class ValueMapDecorator implements ValueMap {
     /**
      * {@inheritDoc}
      */
+    @SuppressWarnings("null")
     public <T> T get(@NotNull String name, @NotNull Class<T> type) {
         if (base instanceof ValueMap) {
             // shortcut if decorated map is ValueMap
@@ -59,8 +60,8 @@ public final class ValueMapDecorator implements ValueMap {
     /**
      * {@inheritDoc}
      */
-    @SuppressWarnings("unchecked")
-    public <T> T get(@NotNull String name, T defaultValue) {
+    @SuppressWarnings({ "unchecked", "unused" })
+    public <T> @NotNull T get(@NotNull String name, @NotNull T defaultValue) {
         if (base instanceof ValueMap) {
             // shortcut if decorated map is ValueMap
             return ((ValueMap)base).get(name, defaultValue);
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java b/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java
index 89f8837..d7c4e90 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java
@@ -35,6 +35,7 @@ import org.apache.sling.testing.mock.sling.ResourceResolverType;
 import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.apache.sling.testing.mock.sling.junit.SlingContextBuilder;
 import org.apache.sling.testing.mock.sling.junit.SlingContextCallback;
+import org.jetbrains.annotations.NotNull;
 import org.junit.Rule;
 import org.junit.Test;
 
@@ -57,7 +58,7 @@ public class FileMonitorTest {
     public SlingContext context = new SlingContextBuilder(ResourceResolverType.JCR_MOCK)
         .beforeSetUp(new SlingContextCallback() {
             @Override
-            public void execute(SlingContext context) throws Exception {
+            public void execute(@NotNull SlingContext context) throws Exception {
                 // copy test content to temp. directory
                 tempDir.mkdirs();
                 File sourceDir = new File("src/test/resources/fs-test");
@@ -73,12 +74,13 @@ public class FileMonitorTest {
 
                 // register resource change listener
                 context.registerService(ResourceChangeListener.class, resourceListener,
-                        ResourceChangeListener.PATHS, new String[] { "/fs-test" });
+                        ResourceChangeListener.PATHS, new String[] { "/fs-test" },
+                        ResourceChangeListener.CHANGES, new String[] { ChangeType.CHANGED.toString(), ChangeType.ADDED.toString(), ChangeType.REMOVED.toString() });
             }
         })
         .afterTearDown(new SlingContextCallback() {
             @Override
-            public void execute(SlingContext context) throws Exception {
+            public void execute(@NotNull SlingContext context) throws Exception {
                 // remove temp directory
                 tempDir.delete();
             }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/FileVaultContentTest.java b/src/test/java/org/apache/sling/fsprovider/internal/FileVaultContentTest.java
index 2dcd9c1..18edd2d 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/FileVaultContentTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/FileVaultContentTest.java
@@ -20,11 +20,11 @@ package org.apache.sling.fsprovider.internal;
 
 import static org.apache.sling.fsprovider.internal.TestUtils.assertFile;
 import static org.apache.sling.fsprovider.internal.TestUtils.assertFolder;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 import java.util.HashMap;
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java b/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java
index 763c64a..b143c93 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java
@@ -35,6 +35,7 @@ import org.apache.sling.testing.mock.sling.ResourceResolverType;
 import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.apache.sling.testing.mock.sling.junit.SlingContextBuilder;
 import org.apache.sling.testing.mock.sling.junit.SlingContextCallback;
+import org.jetbrains.annotations.NotNull;
 import org.junit.Rule;
 import org.junit.Test;
 
@@ -57,7 +58,7 @@ public class FileVaultFileMonitorTest {
     public SlingContext context = new SlingContextBuilder(ResourceResolverType.JCR_MOCK)
         .beforeSetUp(new SlingContextCallback() {
             @Override
-            public void execute(SlingContext context) throws Exception {
+            public void execute(@NotNull SlingContext context) throws Exception {
                 // copy test content to temp. directory
                 tempDir.mkdirs();
                 File sourceDir = new File("src/test/resources/vaultfs-test");
@@ -79,12 +80,13 @@ public class FileVaultFileMonitorTest {
 
                 // register resource change listener
                 context.registerService(ResourceChangeListener.class, resourceListener,
-                        ResourceChangeListener.PATHS, new String[] { "/content/dam/talk.png", "/content/samples" });
+                        ResourceChangeListener.PATHS, new String[] { "/content/dam/talk.png", "/content/samples" },
+                        ResourceChangeListener.CHANGES, new String[] { ChangeType.CHANGED.toString(), ChangeType.ADDED.toString(), ChangeType.REMOVED.toString() });
             }
         })
         .afterTearDown(new SlingContextCallback() {
             @Override
-            public void execute(SlingContext context) throws Exception {
+            public void execute(@NotNull SlingContext context) throws Exception {
                 // remove temp directory
                 tempDir.delete();
             }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/FilesFolderTest.java b/src/test/java/org/apache/sling/fsprovider/internal/FilesFolderTest.java
index 18dffdb..17e3a04 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/FilesFolderTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/FilesFolderTest.java
@@ -20,9 +20,9 @@ package org.apache.sling.fsprovider.internal;
 
 import static org.apache.sling.fsprovider.internal.TestUtils.assertFile;
 import static org.apache.sling.fsprovider.internal.TestUtils.assertFolder;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/InvalidRootFolderTest.java b/src/test/java/org/apache/sling/fsprovider/internal/InvalidRootFolderTest.java
index 6d080b1..c9bd6c7 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/InvalidRootFolderTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/InvalidRootFolderTest.java
@@ -29,6 +29,7 @@ import org.apache.sling.testing.mock.sling.ResourceResolverType;
 import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.apache.sling.testing.mock.sling.junit.SlingContextBuilder;
 import org.apache.sling.testing.mock.sling.junit.SlingContextCallback;
+import org.jetbrains.annotations.NotNull;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -45,7 +46,7 @@ public class InvalidRootFolderTest {
         .plugin(new RegisterFsResourcePlugin("provider.file", "target/temp/invalid-folder"))
         .afterTearDown(new SlingContextCallback() {
             @Override
-            public void execute(SlingContext context) throws Exception {
+            public void execute(@NotNull SlingContext context) throws Exception {
                 File file = new File("target/temp/invalid-folder");
                 file.delete();
             }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/JcrMixedTest.java b/src/test/java/org/apache/sling/fsprovider/internal/JcrMixedTest.java
index 3c7be0d..6b0ff82 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/JcrMixedTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/JcrMixedTest.java
@@ -19,8 +19,8 @@
 package org.apache.sling.fsprovider.internal;
 
 import static org.apache.sling.fsprovider.internal.TestUtils.assertFile;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.not;
-import static org.junit.Assert.assertThat;
 
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/JcrXmlContentTest.java b/src/test/java/org/apache/sling/fsprovider/internal/JcrXmlContentTest.java
index c9f8c66..4c96990 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/JcrXmlContentTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/JcrXmlContentTest.java
@@ -20,12 +20,12 @@ package org.apache.sling.fsprovider.internal;
 
 import static org.apache.sling.fsprovider.internal.TestUtils.assertFile;
 import static org.apache.sling.fsprovider.internal.TestUtils.assertFolder;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java b/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
index 84226e3..b5b38c3 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
@@ -20,12 +20,12 @@ package org.apache.sling.fsprovider.internal;
 
 import static org.apache.sling.fsprovider.internal.TestUtils.assertFile;
 import static org.apache.sling.fsprovider.internal.TestUtils.assertFolder;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 import java.io.InputStream;
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java b/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java
index 1211b70..b3acb49 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java
@@ -18,23 +18,23 @@
  */
 package org.apache.sling.fsprovider.internal;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.CharEncoding;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.observation.ResourceChange;
@@ -92,7 +92,7 @@ class TestUtils {
         if (content != null) {
             try {
                 try (InputStream is = file.adaptTo(InputStream.class)) {
-                    String data = IOUtils.toString(is, CharEncoding.UTF_8);
+                    String data = IOUtils.toString(is, StandardCharsets.UTF_8);
                     assertEquals(content, data);
                 }
             }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/Convert.java b/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/Convert.java
index adf49c1..ef48c38 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/Convert.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/Convert.java
@@ -31,6 +31,7 @@ import org.apache.commons.lang3.ClassUtils;
 /**
  * This is copied from org.apache.sling.api.wrappers.impl.Convert
  */
+@SuppressWarnings("null")
 final class Convert {
 
     private Convert() {

[sling-org-apache-sling-fsresource] 02/02: SLING-10751 update to latest Sling Content Parser with split up dependencies

Posted by ss...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sseifert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-fsresource.git

commit d882431e9c47202b3b90bc1f9feafaf0f5e899c9
Author: Stefan Seifert <st...@users.noreply.github.com>
AuthorDate: Tue Aug 24 18:20:04 2021 +0200

    SLING-10751 update to latest Sling Content Parser with split up dependencies
---
 bnd.bnd                                            |  5 +-
 pom.xml                                            | 61 +++++++++++++++++-----
 .../fsprovider/internal/FsResourceProvider.java    |  2 +-
 .../fsprovider/internal/mapper/ContentFile.java    |  2 +-
 .../fsprovider/internal/mapper/FileResource.java   |  2 +-
 .../internal/mapper/FileVaultResourceMapper.java   |  2 +-
 .../internal/parser/ContentElementHandler.java     |  2 +-
 .../internal/parser/ContentFileCache.java          |  1 -
 .../internal/parser/ContentFileParserUtil.java     | 45 +++++++---------
 .../internal/parser/ContentFileTypes.java          |  2 -
 .../{ContentFileTypes.java => ContentType.java}    | 34 +++++++-----
 .../sling/fsprovider/internal/FileMonitorTest.java |  5 +-
 .../internal/FileVaultFileMonitorTest.java         |  5 +-
 .../sling/fsprovider/internal/JsonContentTest.java |  2 +-
 14 files changed, 103 insertions(+), 67 deletions(-)

diff --git a/bnd.bnd b/bnd.bnd
index 5cb1719..b75cf0a 100644
--- a/bnd.bnd
+++ b/bnd.bnd
@@ -1,2 +1,3 @@
-Export-Packages: !org.apache.sling.jcr.contentparser,*
--includeresource: @org.apache.sling.jcr.contentparser-[0-9.]*.jar
+-includeresource: @org.apache.sling.contentparser.(api|json|xml|xml-jcr)-[0-9.]*.jar
+-exportcontents: !org.apache.sling.contentparser.*
+-noimportjava: true
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 3aa7dea..012b128 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,6 +80,12 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.framework</artifactId>
+            <version>1.8.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
             <version>2.16.4</version>
@@ -100,13 +106,13 @@
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
             <version>3.6</version>
-            <scope>compile</scope>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-collections4</artifactId>
             <version>4.1</version>
-            <scope>compile</scope>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
@@ -124,13 +130,43 @@
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.commons.osgi</artifactId>
             <version>2.4.0</version>
-            <scope>compile</scope>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.contentparser.api</artifactId>
+            <version>2.0.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.contentparser.json</artifactId>
+            <version>2.0.0</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.jcr.contentparser</artifactId>
-            <version>1.2.6</version>
-            <scope>compile</scope>
+            <artifactId>org.apache.sling.contentparser.xml</artifactId>
+            <version>2.0.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.contentparser.xml-jcr</artifactId>
+            <version>2.0.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-jcr</artifactId>
+            <version>1.8.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit.vault</groupId>
+            <artifactId>org.apache.jackrabbit.vault</artifactId>
+            <version>3.1.18</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.jetbrains</groupId>
@@ -149,13 +185,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.jackrabbit</groupId>
-            <artifactId>jackrabbit-api</artifactId>
-            <!-- Overwrite old version from org.apache.sling.jcr.contentparser -->
-            <version>2.16.0</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.testing.logging-mock</artifactId>
             <version>2.0.0</version>
@@ -173,5 +202,11 @@
             <version>1.1.1</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.contentparser.testutils</artifactId>
+            <version>2.0.0</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
index e5f898c..5542d22 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
@@ -37,7 +37,7 @@ import org.apache.sling.fsprovider.internal.mapper.FileResourceMapper;
 import org.apache.sling.fsprovider.internal.mapper.FileVaultResourceMapper;
 import org.apache.sling.fsprovider.internal.parser.ContentFileCache;
 import org.apache.sling.fsprovider.internal.parser.ContentFileTypes;
-import org.apache.sling.jcr.contentparser.ContentType;
+import org.apache.sling.fsprovider.internal.parser.ContentType;
 import org.apache.sling.spi.resource.provider.ObservationReporter;
 import org.apache.sling.spi.resource.provider.ProviderContext;
 import org.apache.sling.spi.resource.provider.ResolveContext;
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFile.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFile.java
index 4c75a4d..1867c90 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFile.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFile.java
@@ -26,7 +26,7 @@ import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.fsprovider.internal.mapper.valuemap.ValueMapUtil;
 import org.apache.sling.fsprovider.internal.parser.ContentElement;
 import org.apache.sling.fsprovider.internal.parser.ContentFileCache;
-import org.apache.sling.jcr.contentparser.ContentType;
+import org.apache.sling.fsprovider.internal.parser.ContentType;
 
 /**
  * Reference to a file that contains a content fragment (e.g. JSON, JCR XML).
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java
index 95b6d37..75c98d2 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java
@@ -41,13 +41,13 @@ import org.apache.sling.api.resource.ResourceMetadata;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.api.wrappers.DeepReadValueMapDecorator;
+import org.apache.sling.contentparser.api.ParserOptions;
 import org.apache.sling.fsprovider.internal.ContentFileExtensions;
 import org.apache.sling.fsprovider.internal.FileStatCache;
 import org.apache.sling.fsprovider.internal.FsResourceProvider;
 import org.apache.sling.fsprovider.internal.mapper.jcr.FsNode;
 import org.apache.sling.fsprovider.internal.mapper.valuemap.ValueMapDecorator;
 import org.apache.sling.fsprovider.internal.parser.ContentFileCache;
-import org.apache.sling.jcr.contentparser.ParserOptions;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileVaultResourceMapper.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileVaultResourceMapper.java
index 9aac1fd..3d29c31 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileVaultResourceMapper.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileVaultResourceMapper.java
@@ -43,7 +43,7 @@ import org.apache.sling.fsprovider.internal.FileStatCache;
 import org.apache.sling.fsprovider.internal.FsResourceMapper;
 import org.apache.sling.fsprovider.internal.parser.ContentElement;
 import org.apache.sling.fsprovider.internal.parser.ContentFileCache;
-import org.apache.sling.jcr.contentparser.ContentType;
+import org.apache.sling.fsprovider.internal.parser.ContentType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementHandler.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementHandler.java
index 760aac4..1303b7f 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementHandler.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementHandler.java
@@ -23,7 +23,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.sling.jcr.contentparser.ContentHandler;
+import org.apache.sling.contentparser.api.ContentHandler;
 
 /**
  * {@link ContentHandler} implementation that produces a tree of {@link ContentElement} items.
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileCache.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileCache.java
index 904d6c7..3762bd3 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileCache.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileCache.java
@@ -23,7 +23,6 @@ import java.util.Collections;
 import java.util.Map;
 
 import org.apache.commons.collections4.map.LRUMap;
-import org.apache.sling.jcr.contentparser.ContentType;
 
 /**
  * Cache for parsed content from content files (e.g. JSON, JCR XML).
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileParserUtil.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileParserUtil.java
index 1bdfdf1..0ec28b7 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileParserUtil.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileParserUtil.java
@@ -27,14 +27,15 @@ import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.util.EnumSet;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.sling.jcr.contentparser.ContentParser;
-import org.apache.sling.jcr.contentparser.ContentParserFactory;
-import org.apache.sling.jcr.contentparser.ContentType;
-import org.apache.sling.jcr.contentparser.JsonParserFeature;
-import org.apache.sling.jcr.contentparser.ParserOptions;
+import org.apache.sling.contentparser.api.ContentParser;
+import org.apache.sling.contentparser.api.ParserOptions;
+import org.apache.sling.contentparser.json.JSONParserFeature;
+import org.apache.sling.contentparser.json.JSONParserOptions;
+import org.apache.sling.contentparser.json.internal.JSONContentParser;
+import org.apache.sling.contentparser.xml.internal.XMLContentParser;
+import org.apache.sling.contentparser.xml.jcr.internal.JCRXMLContentParser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -45,22 +46,12 @@ class ContentFileParserUtil {
 
     private static final Logger log = LoggerFactory.getLogger(ContentFileParserUtil.class);
 
-    private static final ContentParser JSON_PARSER;
-    static {
-        // workaround for JsonProvider classloader issue until https://issues.apache.org/jira/browse/GERONIMO-6560 is fixed
-        ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
-        try {
-            Thread.currentThread().setContextClassLoader(ContentFileParserUtil.class.getClassLoader());
-            // support comments and tick quotes for JSON parsing - same as in JCR content loader
-            JSON_PARSER = ContentParserFactory.create(ContentType.JSON, new ParserOptions()
-                    .jsonParserFeatures(EnumSet.of(JsonParserFeature.COMMENTS, JsonParserFeature.QUOTE_TICK)));
-        }
-        finally {
-            Thread.currentThread().setContextClassLoader(oldClassLoader);
-        }
-    }
-    private static final ContentParser JCR_XML_PARSER = ContentParserFactory.create(ContentType.JCR_XML);
-    private static final ContentParser XML_PARSER = ContentParserFactory.create(ContentType.XML);
+    private static final ParserOptions DEFAULT_PARSER_OPTIONS = new ParserOptions();
+    private static final ParserOptions JSON_PARSER_OPTIONS = new JSONParserOptions()
+            .withFeatures(JSONParserFeature.COMMENTS, JSONParserFeature.QUOTE_TICK);
+    private static final ContentParser JSON_PARSER = new JSONContentParser();
+    private static final ContentParser JCR_XML_PARSER = new JCRXMLContentParser();
+    private static final ContentParser XML_PARSER = new XMLContentParser();
 
     private ContentFileParserUtil() {
         // static methods only
@@ -100,11 +91,11 @@ class ContentFileParserUtil {
         try {
             switch (contentType) {
             case JSON:
-                return parse(JSON_PARSER, file);
+                return parse(JSON_PARSER, file, JSON_PARSER_OPTIONS);
             case XML:
-                return parse(XML_PARSER, file);
+                return parse(XML_PARSER, file, DEFAULT_PARSER_OPTIONS);
             case JCR_XML:
-                return parse(JCR_XML_PARSER, file);
+                return parse(JCR_XML_PARSER, file, DEFAULT_PARSER_OPTIONS);
                default:
                     throw new IllegalArgumentException("Unexpected content type: " + contentType);
             }
@@ -115,11 +106,11 @@ class ContentFileParserUtil {
         return null;
     }
 
-    private static ContentElement parse(ContentParser contentParser, File file) throws IOException {
+    private static ContentElement parse(ContentParser contentParser, File file, ParserOptions parserOptions) throws IOException {
         try (FileInputStream fis = new FileInputStream(file);
                 BufferedInputStream bis = new BufferedInputStream(fis)) {
             ContentElementHandler handler = new ContentElementHandler();
-            contentParser.parse(handler, bis);
+            contentParser.parse(handler, bis, parserOptions);
             return handler.getRoot();
         }
     }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java
index 6912c46..87cabac 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java
@@ -18,8 +18,6 @@
  */
 package org.apache.sling.fsprovider.internal.parser;
 
-import org.apache.sling.jcr.contentparser.ContentType;
-
 /**
  * Content file types.
  */
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentType.java
similarity index 59%
copy from src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java
copy to src/main/java/org/apache/sling/fsprovider/internal/parser/ContentType.java
index 6912c46..d21888e 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentType.java
@@ -18,30 +18,40 @@
  */
 package org.apache.sling.fsprovider.internal.parser;
 
-import org.apache.sling.jcr.contentparser.ContentType;
-
 /**
- * Content file types.
+ * Content types.
  */
-public final class ContentFileTypes {
+public enum ContentType {
 
     /**
-     * JSON content files.
+     * JSON content descriptor file.
      */
-    public static final String JSON_SUFFIX = "." + ContentType.JSON.getExtension();
+    JSON("json"),
 
     /**
-     * XML content files.
+     * XML content descriptor file.
      */
-    public static final String XML_SUFFIX = "." + ContentType.XML.getExtension();
+    XML("xml"),
 
     /**
-     * JCR XML content files.
+     * JCR XML content (FileVault XML). Also known as extended document view XML.
+     * Extends the regular document view as specified by JCR 2.0 by specifics like
+     * multivalue and typing information. Is used by Jackrabbit FileVault.
      */
-    public static final String JCR_XML_SUFFIX = "." + ContentType.JCR_XML.getExtension();
+    JCR_XML("jcr.xml");
+
 
-    private ContentFileTypes() {
-        // static methods only
+    private final String extension;
+
+    private ContentType(String extension) {
+        this.extension = extension;
+    }
+
+    /**
+     * @return Extension
+     */
+    public String getExtension() {
+        return extension;
     }
 
 }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java b/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java
index d7c4e90..71dc901 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.util.List;
 
@@ -107,7 +108,7 @@ public class FileMonitorTest {
         assertTrue(changes.isEmpty());
 
         File file1c = new File(tempDir, "folder1/file1c.txt");
-        FileUtils.write(file1c, "newcontent");
+        FileUtils.write(file1c, "newcontent", StandardCharsets.UTF_8);
 
         Thread.sleep(WAIT_INTERVAL);
 
@@ -182,7 +183,7 @@ public class FileMonitorTest {
         assertTrue(changes.isEmpty());
 
         File file1c = new File(tempDir, "folder1/file1c.json");
-        FileUtils.write(file1c, "{\"prop1\":\"value1\",\"child1\":{\"prop2\":\"value1\"}}");
+        FileUtils.write(file1c, "{\"prop1\":\"value1\",\"child1\":{\"prop2\":\"value1\"}}", StandardCharsets.UTF_8);
 
         Thread.sleep(WAIT_INTERVAL);
 
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java b/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java
index b143c93..1e06283 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.util.List;
 
@@ -113,7 +114,7 @@ public class FileVaultFileMonitorTest {
         assertTrue(changes.isEmpty());
 
         File file = new File(tempDir, "jcr_root/content/dam/talk.png/_jcr_content/renditions/text.txt");
-        FileUtils.write(file, "newcontent");
+        FileUtils.write(file, "newcontent", StandardCharsets.UTF_8);
 
         Thread.sleep(WAIT_INTERVAL);
 
@@ -193,7 +194,7 @@ public class FileVaultFileMonitorTest {
                 + "<jcr:root xmlns:jcr=\"http://www.jcp.org/jcr/1.0\" xmlns:app=\"http://sample.com/jcr/app/1.0\" "
                 + "xmlns:sling=\"http://sling.apache.org/jcr/sling/1.0\" jcr:primaryType=\"app:Page\">\n"
                 + "<jcr:content jcr:primaryType=\"app:PageContent\"/>\n"
-                + "</jcr:root>");
+                + "</jcr:root>", StandardCharsets.UTF_8);
 
         Thread.sleep(WAIT_INTERVAL);
 
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java b/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
index b5b38c3..002a542 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
@@ -46,9 +46,9 @@ import javax.jcr.nodetype.NodeType;
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.contentparser.api.ParserOptions;
 import org.apache.sling.fsprovider.internal.TestUtils.RegisterFsResourcePlugin;
 import org.apache.sling.hamcrest.ResourceMatchers;
-import org.apache.sling.jcr.contentparser.ParserOptions;
 import org.apache.sling.testing.mock.sling.ResourceResolverType;
 import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.apache.sling.testing.mock.sling.junit.SlingContextBuilder;