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

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


The following commit(s) were added to refs/heads/master by this push:
     new a327fa8  SLING-8570 - Extract a generic Content Parser API from 
org.apache.sling.jcr.contentparser with pluggable implementations
a327fa8 is described below

commit a327fa8ac627073e30a66bc74223c822e3bc180f
Author: Radu Cotescu <[email protected]>
AuthorDate: Mon Jul 22 09:39:40 2019 +0200

    SLING-8570 - Extract a generic Content Parser API from 
org.apache.sling.jcr.contentparser with pluggable implementations
    
    * completely decoupled the API from implementations - the ContentParser API
    doesn't suggest any content types any more
    * removed JSON specific parser options from the ParserOptions class
    * made the ParserOptions class extendable
    * switched exported API packages to version 2.0.0, to eliminate all possible
    confusion with the older org.apache.sling.jcr.contentparser API
---
 .../org-apache-sling-contentparser-api/README.md   |  3 +-
 .../sling/contentparser/api/ContentParser.java     | 38 ++++-------
 .../sling/contentparser/api/ParserOptions.java     | 31 ++-------
 .../sling/contentparser/api/package-info.java      |  2 +-
 .../org-apache-sling-contentparser-json/README.md  |  2 +-
 .../org-apache-sling-contentparser-json/pom.xml    |  5 ++
 .../contentparser/json/JSONParserFeature.java}     |  4 +-
 .../contentparser/json/JSONParserOptions.java      | 73 ++++++++++++++++++++++
 ...onContentParser.java => JSONContentParser.java} | 22 +++++--
 ...TicksConverter.java => JSONTicksConverter.java} |  4 +-
 .../sling/contentparser/json}/package-info.java    |  4 +-
 ...tParserTest.java => JSONContentParserTest.java} | 26 ++++----
 .../README.md                                      |  4 +-
 ...ContentParser.java => JCRXMLContentParser.java} |  6 +-
 ...arserTest.java => JCRXMLContentParserTest.java} |  8 +--
 .../org-apache-sling-contentparser-xml/README.md   |  2 +-
 ...XmlContentParser.java => XMLContentParser.java} |  6 +-
 ...ntParserTest.java => XMLContentParserTest.java} |  4 +-
 18 files changed, 147 insertions(+), 97 deletions(-)

diff --git a/contentparser/org-apache-sling-contentparser-api/README.md 
b/contentparser/org-apache-sling-contentparser-api/README.md
index ab05675..b8d102b 100644
--- a/contentparser/org-apache-sling-contentparser-api/README.md
+++ b/contentparser/org-apache-sling-contentparser-api/README.md
@@ -8,8 +8,7 @@ continuation of the one provided by the [Apache Sling JCR 
Content Parser](https:
 1. the API is now available in the `org.apache.sling.contentparser.api` 
package;
 2. there is no replacement for the 
`org.apache.sling.jcr.contentparser.ContentParserFactory`; to obtain a 
`ContentParser`, given that 
 they are exposed as OSGi services, one has to filter on the 
`ContentParser.SERVICE_PROPERTY_CONTENT_TYPE` service registration property,
-to select the appropriate file format (see `ContentParser.JSON_CONTENT_TYPE`, 
`ContentParser.XML_CONTENT_TYPE` and
-`ContentParser.JCR_XML_CONTENT_TYPE`);
+to select the appropriate file format;
 3. as a consequence of 2., the `ParserOptions` are now passed directly to the 
`ContentParser#parse` method.
 
 Implementations of the API are made available from separate bundles:
diff --git 
a/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/ContentParser.java
 
b/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/ContentParser.java
index 1a684ca..2738088 100644
--- 
a/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/ContentParser.java
+++ 
b/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/ContentParser.java
@@ -31,37 +31,23 @@ import org.osgi.annotation.versioning.ProviderType;
 @ProviderType
 public interface ContentParser {
 
-    /**
-     * JSON content descriptor file.
-     *
-     * @see <a 
href="https://sling.apache.org/documentation/bundles/content-loading-jcr-contentloader.html#json-descriptor-files";>JCR
-     * ContentLoader JSON descriptor files</a>
-     */
-    String JSON_CONTENT_TYPE = "json";
 
     /**
-     * XML content descriptor file.
+     * OSGi service registration property indicating the content type this 
{@code ContentParser} supports. The simplest way to retrieve a
+     * {@code ContentParser} for a certain content type is to apply a filter 
on the service reference:
      *
-     * @see <a 
href="https://sling.apache.org/documentation/bundles/content-loading-jcr-contentloader.html#xml-descriptor-files";>JCR
-     * ContentLoader XML descriptor files</a>
-     */
-    String XML_CONTENT_TYPE = "xml";
-
-    /**
-     * JCR XML content (FileVault XML),aAlso known as extended document view 
XML. Extends the regular document view as specified by JCR 2.0
-     * with specifics like multi-value and type information.
+     * <pre>
+     *    {@literal @}Reference(target = "(" + 
ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + "=" + _value_ + ")")
+     *     private ContentParser parser;
+     * </pre>
      *
-     * @see <a 
href="https://docs.adobe.com/content/docs/en/spec/jcr/2.0/7_Export.html#7.3%20Document%20View";>JCR
 2.0, 7.3 Document View</a>
-     * @see <a href="http://jackrabbit.apache.org/filevault/";>Jackrabbit 
FileVault</a>
-     */
-    String JCR_XML_CONTENT_TYPE = "jcr.xml";
-
-    /**
-     * OSGi service registration property indicating the content type this 
{@code ContentParser} supports.
+     * If multiple services are registered for the same content type, the 
above code snippet will provide you with the service
+     * implementation with the highest ranking. However, if a certain 
implementation is needed, an additional filter can be added:
      *
-     * @see #JSON_CONTENT_TYPE
-     * @see #XML_CONTENT_TYPE
-     * @see #JCR_XML_CONTENT_TYPE
+     * <pre>
+     *     {@literal @}Reference(target = "(&amp;(" + 
ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + "=" + _value_ + 
")(component.name=" + _class_name_ + "))")
+     *      private ContentParser parser;
+     * </pre>
      */
     String SERVICE_PROPERTY_CONTENT_TYPE = 
"org.apache.sling.contentparser.content_type";
 
diff --git 
a/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/ParserOptions.java
 
b/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/ParserOptions.java
index ebf80f0..c28ffe7 100644
--- 
a/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/ParserOptions.java
+++ 
b/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/ParserOptions.java
@@ -20,17 +20,17 @@ package org.apache.sling.contentparser.api;
 
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.EnumSet;
 import java.util.HashSet;
 import java.util.Set;
 
 import org.osgi.annotation.versioning.ProviderType;
 
 /**
- * Options for content parsers.
+ * Generic options for content parsers. Parser implementations can extend this 
class to provide additional options, valid only in the
+ * context of those implementations.
  */
 @ProviderType
-public final class ParserOptions {
+public class ParserOptions {
 
     /**
      * Default primary type.
@@ -57,18 +57,13 @@ public final class ParserOptions {
             "security:principals"
     )));
 
-    /**
-     * List of JSON parser features activated by default.
-     */
-    public static final EnumSet<JsonParserFeature> DEFAULT_JSON_PARSER_FEATURES
-            = EnumSet.of(JsonParserFeature.COMMENTS);
+
 
     private String defaultPrimaryType = DEFAULT_PRIMARY_TYPE;
     private boolean detectCalendarValues;
     private Set<String> ignorePropertyNames = Collections.emptySet();
     private Set<String> ignoreResourceNames = DEFAULT_IGNORE_RESOURCE_NAMES;
     private Set<String> removePropertyNamePrefixes = 
DEFAULT_REMOVE_PROPERTY_NAME_PREFIXES;
-    private EnumSet<JsonParserFeature> jsonParserFeatures = 
DEFAULT_JSON_PARSER_FEATURES;
 
     /**
      * Default "jcr:primaryType" property for resources that have no explicit 
value for this value.
@@ -148,24 +143,6 @@ public final class ParserOptions {
         return removePropertyNamePrefixes;
     }
 
-    /**
-     * Set set of features the JSON parser should apply when parsing files.
-     *
-     * @param value JSON parser features
-     * @return this
-     */
-    public ParserOptions jsonParserFeatures(EnumSet<JsonParserFeature> value) {
-        this.jsonParserFeatures = value;
-        return this;
-    }
-
-    public ParserOptions jsonParserFeatures(JsonParserFeature... value) {
-        this.jsonParserFeatures = EnumSet.copyOf(Arrays.asList(value));
-        return this;
-    }
 
-    public EnumSet<JsonParserFeature> getJsonParserFeatures() {
-        return jsonParserFeatures;
-    }
 
 }
diff --git 
a/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/package-info.java
 
b/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/package-info.java
index 8997911..9368f3a 100644
--- 
a/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/package-info.java
+++ 
b/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/package-info.java
@@ -16,7 +16,7 @@
  ~ specific language governing permissions and limitations
  ~ under the License.
  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-@Version("1.0.0")
+@Version("2.0.0")
 package org.apache.sling.contentparser.api;
 
 import org.osgi.annotation.versioning.Version;
diff --git a/contentparser/org-apache-sling-contentparser-json/README.md 
b/contentparser/org-apache-sling-contentparser-json/README.md
index 0359394..1b07e37 100644
--- a/contentparser/org-apache-sling-contentparser-json/README.md
+++ b/contentparser/org-apache-sling-contentparser-json/README.md
@@ -9,6 +9,6 @@ To obtain a reference to the JSON content parser just filter on 
the `ContentPars
 property:
 
 ```java
-    @Reference(target = "(" + ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + 
"=" + ContentParser.JSON_CONTENT_TYPE + ")")
+    @Reference(target = "(" + ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + 
"=json)")
     private ContentParser jsonParser;
 ``` 
diff --git a/contentparser/org-apache-sling-contentparser-json/pom.xml 
b/contentparser/org-apache-sling-contentparser-json/pom.xml
index 9099d50..9ae7111 100644
--- a/contentparser/org-apache-sling-contentparser-json/pom.xml
+++ b/contentparser/org-apache-sling-contentparser-json/pom.xml
@@ -79,6 +79,11 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.annotation.versioning</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.contentparser.testutils</artifactId>
             <version>0.9.0-SNAPSHOT</version>
diff --git 
a/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/JsonParserFeature.java
 
b/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/JSONParserFeature.java
similarity index 94%
rename from 
contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/JsonParserFeature.java
rename to 
contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/JSONParserFeature.java
index 58c3e2b..3d2b5f8 100644
--- 
a/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/JsonParserFeature.java
+++ 
b/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/JSONParserFeature.java
@@ -16,12 +16,12 @@
  ~ specific language governing permissions and limitations
  ~ under the License.
  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-package org.apache.sling.contentparser.api;
+package org.apache.sling.contentparser.json;
 
 /**
  * Feature flags for parsing JSON files.
  */
-public enum JsonParserFeature {
+public enum JSONParserFeature {
 
     /**
      * Support comments (&#47;* ... *&#47;) in JSON files.
diff --git 
a/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/JSONParserOptions.java
 
b/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/JSONParserOptions.java
new file mode 100644
index 0000000..0fe1ac0
--- /dev/null
+++ 
b/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/JSONParserOptions.java
@@ -0,0 +1,73 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements.  See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership.  The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License.  You may obtain a copy of the License at
+ ~
+ ~   http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied.  See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+package org.apache.sling.contentparser.json;
+
+import java.util.Arrays;
+import java.util.EnumSet;
+
+import org.apache.sling.contentparser.api.ParserOptions;
+import org.osgi.annotation.versioning.ConsumerType;
+
+/**
+ * Defines specific JSON parser options which can be used with the JSON {@link 
org.apache.sling.contentparser.api.ContentParser}
+ * implementations provided by this bundle.
+ */
+@ConsumerType
+public final class JSONParserOptions extends ParserOptions {
+
+    /**
+     * List of JSON parser features activated by default.
+     */
+    public static final EnumSet<JSONParserFeature> DEFAULT_JSON_PARSER_FEATURES
+            = EnumSet.of(JSONParserFeature.COMMENTS);
+
+    private EnumSet<JSONParserFeature> features = DEFAULT_JSON_PARSER_FEATURES;
+
+    /**
+     * Set the features the JSON parser should apply when parsing files.
+     *
+     * @param value JSON parser features
+     * @return this
+     */
+    public JSONParserOptions withFeatures(EnumSet<JSONParserFeature> value) {
+        this.features = EnumSet.copyOf(value);
+        return this;
+    }
+
+    /**
+     * Set the features the JSON parser should apply when parsing files.
+     *
+     * @param value JSON parser features
+     * @return this
+     */
+    public JSONParserOptions withFeatures(JSONParserFeature... value) {
+        this.features = EnumSet.copyOf(Arrays.asList(value));
+        return this;
+    }
+
+    /**
+     * Returns a copy of the features encapsulated by this instance. For 
modifying the set of features please use the {@code withFeatures}
+     * fluid methods.
+     *
+     * @return the features the JSON parser should apply when parsing files
+     */
+    public EnumSet<JSONParserFeature> getFeatures() {
+        return EnumSet.copyOf(features);
+    }
+}
diff --git 
a/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JsonContentParser.java
 
b/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JSONContentParser.java
similarity index 91%
rename from 
contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JsonContentParser.java
rename to 
contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JSONContentParser.java
index 33f048e..831ee22 100644
--- 
a/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JsonContentParser.java
+++ 
b/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JSONContentParser.java
@@ -42,22 +42,32 @@ import javax.json.stream.JsonParsingException;
 import org.apache.commons.io.IOUtils;
 import org.apache.sling.contentparser.api.ContentHandler;
 import org.apache.sling.contentparser.api.ContentParser;
-import org.apache.sling.contentparser.api.JsonParserFeature;
 import org.apache.sling.contentparser.api.ParseException;
 import org.apache.sling.contentparser.api.ParserHelper;
 import org.apache.sling.contentparser.api.ParserOptions;
+import org.apache.sling.contentparser.json.JSONParserFeature;
+import org.apache.sling.contentparser.json.JSONParserOptions;
 import org.osgi.service.component.annotations.Component;
 
 @Component(
         property = {
-                ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + "=" + 
ContentParser.JSON_CONTENT_TYPE
+                ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + "=json"
         }
 )
-public class JsonContentParser implements ContentParser {
+public class JSONContentParser implements ContentParser {
 
     @Override
     public void parse(ContentHandler handler, InputStream is, ParserOptions 
parserOptions) throws ParseException {
-        final boolean jsonQuoteTicks = 
parserOptions.getJsonParserFeatures().contains(JsonParserFeature.QUOTE_TICK);
+        final boolean jsonQuoteTicks;
+        final boolean supportComments;
+        if (parserOptions instanceof JSONParserOptions) {
+            JSONParserOptions jsonParserOptions = (JSONParserOptions) 
parserOptions;
+            jsonQuoteTicks = 
jsonParserOptions.getFeatures().contains(JSONParserFeature.QUOTE_TICK);
+            supportComments = 
jsonParserOptions.getFeatures().contains(JSONParserFeature.COMMENTS);
+        } else {
+            jsonQuoteTicks = false;
+            supportComments = false;
+        }
 
         /*
          * Implementation note: This parser uses JsonReader instead of the 
(more memory-efficient)
@@ -66,7 +76,7 @@ public class JsonContentParser implements ContentParser {
          */
         final JsonReaderFactory jsonReaderFactory =
                 Json.createReaderFactory(
-                        
parserOptions.getJsonParserFeatures().contains(JsonParserFeature.COMMENTS) ?
+                        supportComments ?
                                 new HashMap<String, Object>() {{
                                     
put("org.apache.johnzon.supports-comments", true);
                                 }} :
@@ -93,7 +103,7 @@ public class JsonContentParser implements ContentParser {
         }
 
         // convert ticks to double quotes
-        jsonString = JsonTicksConverter.tickToDoubleQuote(jsonString);
+        jsonString = JSONTicksConverter.tickToDoubleQuote(jsonString);
 
         try (JsonReader reader = jsonReaderFactory.createReader(new 
StringReader(jsonString))) {
             return reader.readObject();
diff --git 
a/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JsonTicksConverter.java
 
b/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JSONTicksConverter.java
similarity index 98%
rename from 
contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JsonTicksConverter.java
rename to 
contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JSONTicksConverter.java
index 15b6553..83d0c07 100644
--- 
a/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JsonTicksConverter.java
+++ 
b/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/internal/JSONTicksConverter.java
@@ -29,9 +29,9 @@ package org.apache.sling.contentparser.json.internal;
  *     After the conversion they are always escaped.</li>
  * </ul>
  */
-final class JsonTicksConverter {
+final class JSONTicksConverter {
     
-    private JsonTicksConverter() {
+    private JSONTicksConverter() {
         // static methods only
     }
     
diff --git 
a/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/package-info.java
 
b/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/package-info.java
similarity index 94%
copy from 
contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/package-info.java
copy to 
contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/package-info.java
index 8997911..3e86af2 100644
--- 
a/contentparser/org-apache-sling-contentparser-api/src/main/java/org/apache/sling/contentparser/api/package-info.java
+++ 
b/contentparser/org-apache-sling-contentparser-json/src/main/java/org/apache/sling/contentparser/json/package-info.java
@@ -16,7 +16,7 @@
  ~ specific language governing permissions and limitations
  ~ under the License.
  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-@Version("1.0.0")
-package org.apache.sling.contentparser.api;
+@Version("2.0.0")
+package org.apache.sling.contentparser.json;
 
 import org.osgi.annotation.versioning.Version;
diff --git 
a/contentparser/org-apache-sling-contentparser-json/src/test/java/org/apache/sling/contentparser/json/internal/JsonContentParserTest.java
 
b/contentparser/org-apache-sling-contentparser-json/src/test/java/org/apache/sling/contentparser/json/internal/JSONContentParserTest.java
similarity index 92%
rename from 
contentparser/org-apache-sling-contentparser-json/src/test/java/org/apache/sling/contentparser/json/internal/JsonContentParserTest.java
rename to 
contentparser/org-apache-sling-contentparser-json/src/test/java/org/apache/sling/contentparser/json/internal/JSONContentParserTest.java
index f82c8a4..658151d 100644
--- 
a/contentparser/org-apache-sling-contentparser-json/src/test/java/org/apache/sling/contentparser/json/internal/JsonContentParserTest.java
+++ 
b/contentparser/org-apache-sling-contentparser-json/src/test/java/org/apache/sling/contentparser/json/internal/JSONContentParserTest.java
@@ -29,9 +29,9 @@ import java.util.Map;
 import java.util.TimeZone;
 
 import org.apache.sling.contentparser.api.ContentParser;
-import org.apache.sling.contentparser.api.JsonParserFeature;
 import org.apache.sling.contentparser.api.ParseException;
-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.testutils.TestUtils;
 import org.apache.sling.contentparser.testutils.mapsupport.ContentElement;
 import org.junit.Before;
@@ -42,7 +42,7 @@ import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-public class JsonContentParserTest {
+public class JSONContentParserTest {
 
     private File file;
     private ContentParser contentParser;
@@ -50,19 +50,19 @@ public class JsonContentParserTest {
     @Before
     public void setUp() {
         file = new File("src/test/resources/content-test/content.json");
-        contentParser = new JsonContentParser();
+        contentParser = new JSONContentParser();
     }
 
     @Test
     public void testPageJcrPrimaryType() throws Exception {
-        ContentElement content = TestUtils.parse(contentParser, file);
+        ContentElement content = TestUtils.parse(contentParser, new 
JSONParserOptions(), file);
 
         assertEquals("app:Page", 
content.getProperties().get("jcr:primaryType"));
     }
 
     @Test
     public void testDataTypes() throws Exception {
-        ContentElement content = TestUtils.parse(contentParser, file);
+        ContentElement content = TestUtils.parse(contentParser, new 
JSONParserOptions(), file);
         ContentElement child = 
content.getChild("toolbar/profiles/jcr:content");
         assertNotNull("Expected child at toolbar/profiles/jcr:content", child);
         Map<String, Object> props = child.getProperties();
@@ -79,7 +79,7 @@ public class JsonContentParserTest {
 
     @Test
     public void testContentProperties() throws Exception {
-        ContentElement content = TestUtils.parse(contentParser, file);
+        ContentElement content = TestUtils.parse(contentParser, new 
JSONParserOptions(), file);
         ContentElement child = content.getChild("jcr:content/header");
         assertNotNull("Expected child at jcr:content/header", child);
         Map<String, Object> props = child.getProperties();
@@ -88,7 +88,7 @@ public class JsonContentParserTest {
 
     @Test
     public void testCalendar() throws Exception {
-        ContentElement content = TestUtils.parse(contentParser, new 
ParserOptions().detectCalendarValues(true), file);
+        ContentElement content = TestUtils.parse(contentParser, new 
JSONParserOptions().detectCalendarValues(true), file);
         ContentElement child = content.getChild("jcr:content");
         assertNotNull("Expected child at jcr:content", child);
         Map<String, Object> props = child.getProperties();
@@ -109,7 +109,7 @@ public class JsonContentParserTest {
 
     @Test
     public void testIso8601Calendar() throws Exception {
-        ContentElement content = TestUtils.parse(contentParser, new 
ParserOptions().detectCalendarValues(true), file);
+        ContentElement content = TestUtils.parse(contentParser, new 
JSONParserOptions().detectCalendarValues(true), file);
         ContentElement child = content.getChild("jcr:content");
         assertNotNull("Expected child at jcr:content", child);
         Map<String, Object> props = child.getProperties();
@@ -128,7 +128,7 @@ public class JsonContentParserTest {
 
     @Test
     public void testUTF8Chars() throws Exception {
-        ContentElement content = TestUtils.parse(contentParser, file);
+        ContentElement content = TestUtils.parse(contentParser, new 
JSONParserOptions(), file);
         ContentElement child = content.getChild("jcr:content");
         assertNotNull("Expected child at jcr:content", child);
         Map<String, Object> props = child.getProperties();
@@ -154,7 +154,7 @@ public class JsonContentParserTest {
     public void testIgnoreResourcesProperties() throws Exception {
         ContentElement content = TestUtils.parse(
                 contentParser,
-                new ParserOptions().ignoreResourceNames(Collections
+                new JSONParserOptions().ignoreResourceNames(Collections
                         .unmodifiableSet(new HashSet<>(Arrays.asList("header", 
"newslist", "security:acl", "security:principals"))))
                         .ignorePropertyNames(Collections.unmodifiableSet(new 
HashSet<>(Arrays.asList("jcr:title")))), file);
         ContentElement child = content.getChild("jcr:content");
@@ -172,7 +172,7 @@ public class JsonContentParserTest {
 
     @Test
     public void testGetChild() throws Exception {
-        ContentElement content = TestUtils.parse(contentParser, file);
+        ContentElement content = TestUtils.parse(contentParser, new 
JSONParserOptions(), file);
         assertNull(content.getName());
         ContentElement deepChild = 
content.getChild("jcr:content/par/image/file/jcr:content");
         assertNotNull("Expected child at 
jcr:content/par/image/file/jcr:content", deepChild);
@@ -188,7 +188,7 @@ public class JsonContentParserTest {
 
     @Test(expected = ParseException.class)
     public void testFailsWithoutCommentsEnabled() throws Exception {
-        TestUtils.parse(contentParser, new 
ParserOptions().jsonParserFeatures(EnumSet.noneOf(JsonParserFeature.class)), 
file);
+        TestUtils.parse(contentParser, new 
JSONParserOptions().withFeatures(EnumSet.noneOf(JSONParserFeature.class)), 
file);
     }
 
 }
diff --git a/contentparser/org-apache-sling-contentparser-xml-jcr/README.md 
b/contentparser/org-apache-sling-contentparser-xml-jcr/README.md
index 5bc2b92..52b05d0 100644
--- a/contentparser/org-apache-sling-contentparser-xml-jcr/README.md
+++ b/contentparser/org-apache-sling-contentparser-xml-jcr/README.md
@@ -5,10 +5,10 @@ This module is part of the [Apache 
Sling](https://sling.apache.org) project.
 The Apache Sling Content Parser for JackRabbit FileVault XML provides support 
for parsing XML files into Apache Sling resource trees, by implementing the 
 API provided by the 
[`org.apache.sling.contentparser.api`](https://github.com/apache/sling-whiteboard/tree/master/contentparser/org-apache-sling-contentparser-api)
 bundle.
 
-To obtain a reference to the JackRabbit FileVault XMLL content parser just 
filter on the `ContentParser.SERVICE_PROPERTY_CONTENT_TYPE` service 
registration 
+To obtain a reference to the JackRabbit FileVault XML content parser just 
filter on the `ContentParser.SERVICE_PROPERTY_CONTENT_TYPE` service 
registration 
 property:
 
 ```java
-    @Reference(target = "(" + ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + 
"=" + ContentParser.JCR_XML_CONTENT_TYPE + ")")
+    @Reference(target = "(" + ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + 
"=jcr-xml)")
     private ContentParser jcrXmlParser;
 ``` 
diff --git 
a/contentparser/org-apache-sling-contentparser-xml-jcr/src/main/java/org/apache/sling/contentparser/xml/jcr/internal/JcrXmlContentParser.java
 
b/contentparser/org-apache-sling-contentparser-xml-jcr/src/main/java/org/apache/sling/contentparser/xml/jcr/internal/JCRXMLContentParser.java
similarity index 98%
rename from 
contentparser/org-apache-sling-contentparser-xml-jcr/src/main/java/org/apache/sling/contentparser/xml/jcr/internal/JcrXmlContentParser.java
rename to 
contentparser/org-apache-sling-contentparser-xml-jcr/src/main/java/org/apache/sling/contentparser/xml/jcr/internal/JCRXMLContentParser.java
index 1e01575..d402ac6 100644
--- 
a/contentparser/org-apache-sling-contentparser-xml-jcr/src/main/java/org/apache/sling/contentparser/xml/jcr/internal/JcrXmlContentParser.java
+++ 
b/contentparser/org-apache-sling-contentparser-xml-jcr/src/main/java/org/apache/sling/contentparser/xml/jcr/internal/JCRXMLContentParser.java
@@ -46,14 +46,14 @@ import org.xml.sax.helpers.DefaultHandler;
 @Component(
         service = ContentParser.class,
         property = {
-                ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + "=" + 
ContentParser.JCR_XML_CONTENT_TYPE
+                ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + "=jcr-xml"
         }
 )
-public final class JcrXmlContentParser implements ContentParser {
+public final class JCRXMLContentParser implements ContentParser {
 
     private final SAXParserFactory saxParserFactory;
 
-    public JcrXmlContentParser() {
+    public JCRXMLContentParser() {
         saxParserFactory = SAXParserFactory.newInstance();
         saxParserFactory.setNamespaceAware(true);
     }
diff --git 
a/contentparser/org-apache-sling-contentparser-xml-jcr/src/test/java/org/apache/sling/contentparser/xml/jcr/internal/JcrXmlContentParserTest.java
 
b/contentparser/org-apache-sling-contentparser-xml-jcr/src/test/java/org/apache/sling/contentparser/xml/jcr/internal/JCRXMLContentParserTest.java
similarity index 96%
rename from 
contentparser/org-apache-sling-contentparser-xml-jcr/src/test/java/org/apache/sling/contentparser/xml/jcr/internal/JcrXmlContentParserTest.java
rename to 
contentparser/org-apache-sling-contentparser-xml-jcr/src/test/java/org/apache/sling/contentparser/xml/jcr/internal/JCRXMLContentParserTest.java
index 0c2a826..349a991 100644
--- 
a/contentparser/org-apache-sling-contentparser-xml-jcr/src/test/java/org/apache/sling/contentparser/xml/jcr/internal/JcrXmlContentParserTest.java
+++ 
b/contentparser/org-apache-sling-contentparser-xml-jcr/src/test/java/org/apache/sling/contentparser/xml/jcr/internal/JCRXMLContentParserTest.java
@@ -41,7 +41,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
-public class JcrXmlContentParserTest {
+public class JCRXMLContentParserTest {
 
     private File file;
     private ContentParser underTest;
@@ -49,7 +49,7 @@ public class JcrXmlContentParserTest {
     @Before
     public void setUp() {
         file = new File("src/test/resources/content-test/content.jcr.xml");
-        underTest = new JcrXmlContentParser();
+        underTest = new JCRXMLContentParser();
     }
 
     @Test
@@ -96,8 +96,8 @@ public class JcrXmlContentParserTest {
 
     @Test
     public void testDecodeName() {
-        assertEquals("jcr:title", JcrXmlContentParser.decodeName("jcr:" + 
ISO9075.encode("title")));
-        assertEquals("sling:123", JcrXmlContentParser.decodeName("sling:" + 
ISO9075.encode("123")));
+        assertEquals("jcr:title", JCRXMLContentParser.decodeName("jcr:" + 
ISO9075.encode("title")));
+        assertEquals("sling:123", JCRXMLContentParser.decodeName("sling:" + 
ISO9075.encode("123")));
     }
 
     @Test
diff --git a/contentparser/org-apache-sling-contentparser-xml/README.md 
b/contentparser/org-apache-sling-contentparser-xml/README.md
index e320a8c..fa0f697 100644
--- a/contentparser/org-apache-sling-contentparser-xml/README.md
+++ b/contentparser/org-apache-sling-contentparser-xml/README.md
@@ -9,6 +9,6 @@ To obtain a reference to the XML content parser just filter on 
the `ContentParse
 property:
 
 ```java
-    @Reference(target = "(" + ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + 
"=" + ContentParser.XML_CONTENT_TYPE + ")")
+    @Reference(target = "(" + ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + 
"=xml)")
     private ContentParser xmlParser;
 ``` 
diff --git 
a/contentparser/org-apache-sling-contentparser-xml/src/main/java/org/apache/sling/contentparser/xml/internal/XmlContentParser.java
 
b/contentparser/org-apache-sling-contentparser-xml/src/main/java/org/apache/sling/contentparser/xml/internal/XMLContentParser.java
similarity index 98%
rename from 
contentparser/org-apache-sling-contentparser-xml/src/main/java/org/apache/sling/contentparser/xml/internal/XmlContentParser.java
rename to 
contentparser/org-apache-sling-contentparser-xml/src/main/java/org/apache/sling/contentparser/xml/internal/XMLContentParser.java
index 5c18539..f99b4e6 100644
--- 
a/contentparser/org-apache-sling-contentparser-xml/src/main/java/org/apache/sling/contentparser/xml/internal/XmlContentParser.java
+++ 
b/contentparser/org-apache-sling-contentparser-xml/src/main/java/org/apache/sling/contentparser/xml/internal/XMLContentParser.java
@@ -49,15 +49,15 @@ import org.xml.sax.SAXException;
  */
 @Component(
         property = {
-                ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + "=" + 
ContentParser.XML_CONTENT_TYPE
+                ContentParser.SERVICE_PROPERTY_CONTENT_TYPE + "=xml"
         }
 )
-public final class XmlContentParser implements ContentParser {
+public final class XMLContentParser implements ContentParser {
 
     private static final String JCR_PRIMARY_TYPE = "jcr:primaryType";
     private final DocumentBuilderFactory documentBuilderFactory;
 
-    public XmlContentParser() {
+    public XMLContentParser() {
         documentBuilderFactory = DocumentBuilderFactory.newInstance();
     }
 
diff --git 
a/contentparser/org-apache-sling-contentparser-xml/src/test/java/org/apache/sling/contentparser/xml/internal/XmlContentParserTest.java
 
b/contentparser/org-apache-sling-contentparser-xml/src/test/java/org/apache/sling/contentparser/xml/internal/XMLContentParserTest.java
similarity index 98%
rename from 
contentparser/org-apache-sling-contentparser-xml/src/test/java/org/apache/sling/contentparser/xml/internal/XmlContentParserTest.java
rename to 
contentparser/org-apache-sling-contentparser-xml/src/test/java/org/apache/sling/contentparser/xml/internal/XMLContentParserTest.java
index 5da18c3..a533b03 100644
--- 
a/contentparser/org-apache-sling-contentparser-xml/src/test/java/org/apache/sling/contentparser/xml/internal/XmlContentParserTest.java
+++ 
b/contentparser/org-apache-sling-contentparser-xml/src/test/java/org/apache/sling/contentparser/xml/internal/XMLContentParserTest.java
@@ -40,7 +40,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
-public class XmlContentParserTest {
+public class XMLContentParserTest {
 
     private File file;
     private ContentParser underTest;
@@ -48,7 +48,7 @@ public class XmlContentParserTest {
     @Before
     public void setUp() {
         file = new File("src/test/resources/content-test/content.xml");
-        underTest = new XmlContentParser();
+        underTest = new XMLContentParser();
     }
 
     @Test

Reply via email to