Author: sseifert Date: Wed Mar 8 16:36:17 2017 New Revision: 1786016 URL: http://svn.apache.org/viewvc?rev=1786016&view=rev Log: SLING-6440 use ManifestHeader to parse directives
Modified: sling/trunk/bundles/extensions/fsresource/pom.xml sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/InitialContentImportOptions.java sling/trunk/bundles/extensions/fsresource/src/test/java/org/apache/sling/fsprovider/internal/InitialContentImportOptionsTest.java Modified: sling/trunk/bundles/extensions/fsresource/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/fsresource/pom.xml?rev=1786016&r1=1786015&r2=1786016&view=diff ============================================================================== --- sling/trunk/bundles/extensions/fsresource/pom.xml (original) +++ sling/trunk/bundles/extensions/fsresource/pom.xml Wed Mar 8 16:36:17 2017 @@ -139,6 +139,12 @@ </dependency> <dependency> <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.commons.osgi</artifactId> + <version>2.2.0</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.commons.fscontentparser</artifactId> <version>1.0.0-SNAPSHOT</version> <scope>compile</scope> Modified: sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/InitialContentImportOptions.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/InitialContentImportOptions.java?rev=1786016&r1=1786015&r2=1786016&view=diff ============================================================================== --- sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/InitialContentImportOptions.java (original) +++ sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/InitialContentImportOptions.java Wed Mar 8 16:36:17 2017 @@ -19,13 +19,14 @@ package org.apache.sling.fsprovider.internal; import java.util.Arrays; -import java.util.HashMap; +import java.util.Collections; import java.util.HashSet; -import java.util.Map; import java.util.Set; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.sling.commons.osgi.ManifestHeader; +import org.apache.sling.commons.osgi.ManifestHeader.Entry; class InitialContentImportOptions { @@ -46,25 +47,19 @@ class InitialContentImportOptions { private final Set<String> ignoreImportProviders; public InitialContentImportOptions(String optionsString) { - Map<String,String> options = parseOptions(optionsString); - overwrite = BooleanUtils.toBoolean(options.get(OVERWRITE_DIRECTIVE)); - ignoreImportProviders = new HashSet<>(Arrays.asList(StringUtils.split(StringUtils.defaultString(options.get(IGNORE_CONTENT_READERS_DIRECTIVE))))); - } - - private static Map<String,String> parseOptions(String optionsString) { - Map<String,String> options = new HashMap<>(); - String[] optionsList = StringUtils.split(optionsString, ";"); - if (optionsList != null) { - for (String keyValueString : optionsList) { - String[] keyValue = StringUtils.splitByWholeSeparator(keyValueString, ":="); - if (keyValue.length == 2) { - options.put(StringUtils.trim(keyValue[0]), StringUtils.trim(keyValue[1])); - } - } + ManifestHeader header = ManifestHeader.parse("/dummy/path;" + optionsString); + Entry[] entries = header.getEntries(); + if (entries.length > 0) { + overwrite = BooleanUtils.toBoolean(entries[0].getDirectiveValue(OVERWRITE_DIRECTIVE)); + String ignoreImportProvidersString = StringUtils.defaultString(entries[0].getDirectiveValue(IGNORE_CONTENT_READERS_DIRECTIVE)); + ignoreImportProviders = new HashSet<>(Arrays.asList(StringUtils.split(ignoreImportProvidersString, ","))); + } + else { + overwrite = false; + ignoreImportProviders = Collections.emptySet(); } - return options; } - + public boolean isOverwrite() { return overwrite; } Modified: sling/trunk/bundles/extensions/fsresource/src/test/java/org/apache/sling/fsprovider/internal/InitialContentImportOptionsTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/fsresource/src/test/java/org/apache/sling/fsprovider/internal/InitialContentImportOptionsTest.java?rev=1786016&r1=1786015&r2=1786016&view=diff ============================================================================== --- sling/trunk/bundles/extensions/fsresource/src/test/java/org/apache/sling/fsprovider/internal/InitialContentImportOptionsTest.java (original) +++ sling/trunk/bundles/extensions/fsresource/src/test/java/org/apache/sling/fsprovider/internal/InitialContentImportOptionsTest.java Wed Mar 8 16:36:17 2017 @@ -44,9 +44,9 @@ public class InitialContentImportOptions @Test public void testOptions1() { - InitialContentImportOptions underTest = new InitialContentImportOptions("overwrite:=true;ignoreImportProviders:=xml,json"); + InitialContentImportOptions underTest = new InitialContentImportOptions("overwrite:=true;ignoreImportProviders:=\"xml,json\""); assertTrue(underTest.isOverwrite()); - assertEquals(ImmutableSet.of("xml,json"), underTest.getIgnoreImportProviders()); + assertEquals(ImmutableSet.of("xml","json"), underTest.getIgnoreImportProviders()); } @Test