You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2018/04/17 14:56:48 UTC
[sling-whiteboard] branch master updated: Split feature util into
io and assembly parts
This is an automated email from the ASF dual-hosted git repository.
cziegeler 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 4e4185f Split feature util into io and assembly parts
4e4185f is described below
commit 4e4185f3bca01c33ff1d58afc165928c2c65d6c0
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Tue Apr 17 16:56:40 2018 +0200
Split feature util into io and assembly parts
---
.../feature/launcher/impl/FeatureProcessor.java | 2 +-
.../modelconverter/impl/FeatureToProvisioning.java | 2 +-
.../modelconverter/impl/ModelConverterTest.java | 55 +++---
.../apache/sling/feature/support/FeatureUtil.java | 196 +--------------------
.../feature/support/{ => io}/FeatureUtil.java | 114 +-----------
.../feature/support/{ => io}/FeatureUtilTest.java | 6 +-
.../apache/sling/feature/maven/Preprocessor.java | 21 ++-
7 files changed, 55 insertions(+), 341 deletions(-)
diff --git a/featuremodel/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java b/featuremodel/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
index 12c0dbe..6fd5fce 100644
--- a/featuremodel/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
+++ b/featuremodel/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
@@ -65,7 +65,7 @@ public class FeatureProcessor {
} else {
try (FeatureResolver resolver = new FrameworkResolver(artifactManager, Collections.emptyMap())) {
app = FeatureUtil.assembleApplication(null, artifactManager, resolver,
- FeatureUtil.getFeatureFiles(config.getHomeDirectory(), config.getFeatureFiles()).toArray(new String[0]));
+ org.apache.sling.feature.support.io.FeatureUtil.getFeatureFiles(config.getHomeDirectory(), config.getFeatureFiles()).toArray(new String[0]));
} catch (Exception ex) {
Main.LOG().error("Error while assembling application: {}", ex.getMessage(), ex);
System.exit(1);
diff --git a/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/FeatureToProvisioning.java b/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/FeatureToProvisioning.java
index fd1d268..eb83353 100644
--- a/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/FeatureToProvisioning.java
+++ b/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/FeatureToProvisioning.java
@@ -62,7 +62,7 @@ public class FeatureToProvisioning {
static final String PROVISIONING_MODEL_NAME_VARIABLE = "provisioning.model.name";
public static void convert(File file, String output, ArtifactManager am) throws IOException {
- org.apache.sling.feature.Feature feature = FeatureUtil.getFeature(file.getAbsolutePath(), am, SubstituteVariables.NONE);
+ org.apache.sling.feature.Feature feature = org.apache.sling.feature.support.io.FeatureUtil.getFeature(file.getAbsolutePath(), am, SubstituteVariables.NONE);
Object featureNameVar = feature.getVariables().remove(PROVISIONING_MODEL_NAME_VARIABLE);
String featureName;
diff --git a/featuremodel/feature-modelconverter/src/test/java/org/apache/sling/feature/modelconverter/impl/ModelConverterTest.java b/featuremodel/feature-modelconverter/src/test/java/org/apache/sling/feature/modelconverter/impl/ModelConverterTest.java
index dfc85ee..87867fb 100644
--- a/featuremodel/feature-modelconverter/src/test/java/org/apache/sling/feature/modelconverter/impl/ModelConverterTest.java
+++ b/featuremodel/feature-modelconverter/src/test/java/org/apache/sling/feature/modelconverter/impl/ModelConverterTest.java
@@ -16,12 +16,34 @@
*/
package org.apache.sling.feature.modelconverter.impl;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
import org.apache.sling.feature.Bundles;
import org.apache.sling.feature.Configurations;
import org.apache.sling.feature.Extension;
import org.apache.sling.feature.ExtensionType;
import org.apache.sling.feature.Extensions;
-import org.apache.sling.feature.support.FeatureUtil;
import org.apache.sling.feature.support.artifact.ArtifactManager;
import org.apache.sling.feature.support.artifact.ArtifactManagerConfig;
import org.apache.sling.feature.support.json.FeatureJSONReader.SubstituteVariables;
@@ -43,29 +65,6 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
public class ModelConverterTest {
private Path tempDir;
private ArtifactManager artifactManager;
@@ -175,8 +174,8 @@ public class ModelConverterTest {
File outFile = files.get(0);
String expectedFile = new File(getClass().getResource(expectedJSON).toURI()).getAbsolutePath();
- org.apache.sling.feature.Feature expected = FeatureUtil.getFeature(expectedFile, artifactManager, SubstituteVariables.NONE);
- org.apache.sling.feature.Feature actual = FeatureUtil.getFeature(outFile.getAbsolutePath(), artifactManager, SubstituteVariables.NONE);
+ org.apache.sling.feature.Feature expected = org.apache.sling.feature.support.io.FeatureUtil.getFeature(expectedFile, artifactManager, SubstituteVariables.NONE);
+ org.apache.sling.feature.Feature actual = org.apache.sling.feature.support.io.FeatureUtil.getFeature(outFile.getAbsolutePath(), artifactManager, SubstituteVariables.NONE);
assertFeaturesEqual(expected, actual);
}
@@ -206,8 +205,8 @@ public class ModelConverterTest {
File outFile = files.get(0);
String expectedFile = new File(getClass().getResource(expectedJSON).toURI()).getAbsolutePath();
- org.apache.sling.feature.Feature expected = FeatureUtil.getFeature(expectedFile, artifactManager, SubstituteVariables.NONE);
- org.apache.sling.feature.Feature actual = FeatureUtil.getFeature(outFile.getAbsolutePath(), artifactManager, SubstituteVariables.NONE);
+ org.apache.sling.feature.Feature expected = org.apache.sling.feature.support.io.FeatureUtil.getFeature(expectedFile, artifactManager, SubstituteVariables.NONE);
+ org.apache.sling.feature.Feature actual = org.apache.sling.feature.support.io.FeatureUtil.getFeature(outFile.getAbsolutePath(), artifactManager, SubstituteVariables.NONE);
assertFeaturesEqual(expected, actual);
}
diff --git a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/FeatureUtil.java b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/FeatureUtil.java
index d5358fa..2ffb38f 100644
--- a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/FeatureUtil.java
+++ b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/FeatureUtil.java
@@ -19,10 +19,8 @@ package org.apache.sling.feature.support;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
-import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Comparator;
import java.util.List;
import org.apache.sling.feature.Application;
@@ -51,163 +49,6 @@ public class FeatureUtil {
version != null ? version : "5.6.10", null, null);
}
- static final Comparator<String> FEATURE_PATH_COMP = new Comparator<String>() {
-
- @Override
- public int compare(final String o1, final String o2) {
- // windows path conversion
- final String key1 = o1.replace(File.separatorChar, '/');
- final String key2 = o2.replace(File.separatorChar, '/');
-
- final int lastSlash1 = key1.lastIndexOf('/');
- final int lastSlash2 = key2.lastIndexOf('/');
- if ( lastSlash1 == -1 || lastSlash2 == -1 ) {
- return o1.compareTo(o2);
- }
- final String path1 = key1.substring(0, lastSlash1 + 1);
- final String path2 = key2.substring(0, lastSlash2 + 1);
- if ( path1.equals(path2) ) {
- return o1.compareTo(o2);
- }
- if ( path1.startsWith(path2) ) {
- return 1;
- } else if ( path2.startsWith(path1) ) {
- return -1;
- }
- return o1.compareTo(o2);
- }
- };
-
- private static void processDir(final List<String> paths, final File dir)
- throws IOException {
- for(final File f : dir.listFiles()) {
- if ( f.isFile() && !f.getName().startsWith(".")) {
- // check if file is a reference
- if ( f.getName().endsWith(".ref") || f.getName().endsWith(".json") ) {
- processFile(paths, f);
- }
- }
- }
- }
-
- public static List<String> parseFeatureRefFile(final File file)
- throws IOException {
- final List<String> result = new ArrayList<>();
- final List<String> lines = Files.readAllLines(file.toPath());
- for(String line : lines) {
- line = line.trim();
- if ( !line.isEmpty() && !line.startsWith("#") ) {
- if ( line.indexOf(':') == -1 ) {
- result.add(new File(line).getAbsolutePath());
- } else {
- result.add(line);
- }
- }
- }
- return result;
- }
-
- private static void processFile(final List<String> paths, final File f)
- throws IOException {
- if ( f.getName().endsWith(".ref") ) {
- paths.addAll(parseFeatureRefFile(f));
- } else {
- paths.add(f.getAbsolutePath());
- }
- }
-
- /**
- * Get the list of feature files.
- * If the provided list of files is {@code null} or an empty array, the default is used.
- * The default checks for the following places, the first one found is used. If none is
- * found an empty list is returned.
- * <ol>
- * <li>A directory named {@code feature} in the current directory
- * <li>A file named {@code features.json} in the current directory
- * <li>A directory named {@code feature} in the home directory
- * <li>A file named {@code features.json} in the home directory
- * </ol>
- *
- * The list of files is processed one after the other. If it is relative, it is
- * first tried to be resolved against the current directory and then against the
- * home directory.
- * If an entry denotes a directory, all children ending in {@code .json} or {@code .ref} of that directory are read.
- * If a file ends in {@code .ref} the contents is read and every line not starting with the
- * hash sign is considered a reference to a feature artifact.
- *
- * @param homeDirectory If relative files should be resolved, this is the directory to use
- * @param files Optional list of files. If none is provided, a default is used.
- * @return The list of files.
- * @throws IOException If an error occurs.
- */
- public static List<String> getFeatureFiles(final File homeDirectory, final String... files) throws IOException {
- String[] featureFiles = files;
- if ( featureFiles == null || featureFiles.length == 0 ) {
- // Default value - check feature directory otherwise features file
- final File[] candidates = new File[] {
- new File(homeDirectory, "features"),
- new File(homeDirectory, "features.json"),
- new File("features"),
- new File("features.json")
- };
- File f = null;
- for(final File c : candidates) {
- if ( c.exists() ) {
- f = c;
- break;
- }
- }
- // nothing found, we default to the first candidate and fail later
- if ( f == null ) {
- f = candidates[0];
- }
-
- featureFiles = new String[] {f.getAbsolutePath()};
- }
-
- final List<String> paths = new ArrayList<>();
- for(final String name : featureFiles) {
- // check for absolute
- if ( name.indexOf(':') > 1 ) {
- paths.add(name);
- } else {
- // file or relative
- File f = null;
- final File test = new File(name);
- if ( test.isAbsolute() ) {
- f = test;
- } else {
- final File[] candidates = {
- new File(homeDirectory, name),
- new File(homeDirectory, "features" + File.separatorChar + name),
- new File(name),
- new File("features" + File.separatorChar + name),
- };
- for(final File c : candidates) {
- if ( c.exists() && c.isFile() ) {
- f = c;
- break;
- }
- }
- }
-
- if ( f != null && f.exists() ) {
- if ( f.isFile() ) {
- processFile(paths, f);
- } else {
- processDir(paths, f);
- }
- } else {
- // we simply add the path and fail later on
- paths.add(new File(name).getAbsolutePath());
- }
- }
- }
-
- Collections.sort(paths, FEATURE_PATH_COMP);
- return paths;
- }
-
/**
* Assemble an application based on the given files.
*
@@ -222,18 +63,21 @@ public class FeatureUtil {
*/
public static Application assembleApplication(
Application app,
- final ArtifactManager artifactManager, FeatureResolver fr, final String... featureFiles)
+ final ArtifactManager artifactManager,
+ final FeatureResolver fr,
+ final String... featureFiles)
throws IOException {
final List<Feature> features = new ArrayList<>();
for(final String initFile : featureFiles) {
- final Feature f = getFeature(initFile, artifactManager);
+ final Feature f = org.apache.sling.feature.support.io.FeatureUtil.getFeature(initFile, artifactManager, SubstituteVariables.RESOLVE);
features.add(f);
}
return assembleApplication(app, artifactManager, fr, features.toArray(new Feature[0]));
}
- public static Feature[] sortFeatures(final FeatureResolver fr, final Feature... features) {
+ public static Feature[] sortFeatures(final FeatureResolver fr,
+ final Feature... features) {
final List<Feature> featureList = new ArrayList<>();
for(final Feature f : features) {
featureList.add(f);
@@ -260,7 +104,9 @@ public class FeatureUtil {
public static Application assembleApplication(
Application app,
- final ArtifactManager artifactManager, FeatureResolver fr, final Feature... features)
+ final ArtifactManager artifactManager,
+ final FeatureResolver fr,
+ final Feature... features)
throws IOException {
if ( features.length == 0 ) {
throw new IOException("No features found.");
@@ -292,28 +138,4 @@ public class FeatureUtil {
return app;
}
-
- /**
- * Read the feature
- *
- * @param file The feature file
- * @param artifactManager The artifact manager to read the feature
- * @return The read feature
- * @throws IOException If reading fails
- */
- public static Feature getFeature(final String file,
- final ArtifactManager artifactManager) throws IOException {
- return getFeature(file, artifactManager, SubstituteVariables.RESOLVE);
- }
-
- public static Feature getFeature(final String file,
- final ArtifactManager artifactManager, final SubstituteVariables substituteVariables)
- throws IOException {
- final ArtifactHandler featureArtifact = artifactManager.getArtifactHandler(file);
-
- try (final FileReader r = new FileReader(featureArtifact.getFile())) {
- final Feature f = FeatureJSONReader.read(r, featureArtifact.getUrl(), substituteVariables);
- return f;
- }
- }
}
diff --git a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/FeatureUtil.java b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/io/FeatureUtil.java
similarity index 64%
copy from featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/FeatureUtil.java
copy to featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/io/FeatureUtil.java
index d5358fa..d059dda 100644
--- a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/FeatureUtil.java
+++ b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/io/FeatureUtil.java
@@ -14,7 +14,7 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.sling.feature.support;
+package org.apache.sling.feature.support.io;
import java.io.File;
import java.io.FileReader;
@@ -25,31 +25,13 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-import org.apache.sling.feature.Application;
-import org.apache.sling.feature.ArtifactId;
import org.apache.sling.feature.Feature;
import org.apache.sling.feature.support.artifact.ArtifactHandler;
import org.apache.sling.feature.support.artifact.ArtifactManager;
import org.apache.sling.feature.support.json.FeatureJSONReader;
import org.apache.sling.feature.support.json.FeatureJSONReader.SubstituteVariables;
-import org.apache.sling.feature.support.process.ApplicationBuilder;
-import org.apache.sling.feature.support.process.BuilderContext;
-import org.apache.sling.feature.support.process.FeatureProvider;
-import org.apache.sling.feature.support.resolver.FeatureResolver;
-import org.apache.sling.feature.support.resolver.FeatureResource;
public class FeatureUtil {
- /**
- * Get an artifact id for the Apache Felix framework
- * @param version The version to use or {@code null} for the default version
- * @return The artifact id
- * @throws IllegalArgumentException If the provided version is invalid
- */
- public static ArtifactId getFelixFrameworkId(final String version) {
- return new ArtifactId("org.apache.felix",
- "org.apache.felix.framework",
- version != null ? version : "5.6.10", null, null);
- }
static final Comparator<String> FEATURE_PATH_COMP = new Comparator<String>() {
@@ -209,105 +191,17 @@ public class FeatureUtil {
}
/**
- * Assemble an application based on the given files.
- *
- * Read the features and assemble the application
- * @param app The optional application to use as a base.
- * @param featureFiles The feature files.
- * @param artifactManager The artifact manager
- * @param fr
- * @return The assembled application
- * @throws IOException If a feature can't be read or no feature is found.
- * @see #getFeatureFiles(File, String...)
- */
- public static Application assembleApplication(
- Application app,
- final ArtifactManager artifactManager, FeatureResolver fr, final String... featureFiles)
- throws IOException {
- final List<Feature> features = new ArrayList<>();
- for(final String initFile : featureFiles) {
- final Feature f = getFeature(initFile, artifactManager);
- features.add(f);
- }
-
- return assembleApplication(app, artifactManager, fr, features.toArray(new Feature[0]));
- }
-
- public static Feature[] sortFeatures(final FeatureResolver fr, final Feature... features) {
- final List<Feature> featureList = new ArrayList<>();
- for(final Feature f : features) {
- featureList.add(f);
- }
-
- final List<Feature> sortedFeatures;
- if (fr != null) {
- // order by dependency chain
- final List<FeatureResource> sortedResources = fr.orderResources(featureList);
-
- sortedFeatures = new ArrayList<>();
- for (final FeatureResource rsrc : sortedResources) {
- Feature f = rsrc.getFeature();
- if (!sortedFeatures.contains(f)) {
- sortedFeatures.add(rsrc.getFeature());
- }
- }
- } else {
- sortedFeatures = featureList;
- Collections.sort(sortedFeatures);
- }
- return sortedFeatures.toArray(new Feature[sortedFeatures.size()]);
- }
-
- public static Application assembleApplication(
- Application app,
- final ArtifactManager artifactManager, FeatureResolver fr, final Feature... features)
- throws IOException {
- if ( features.length == 0 ) {
- throw new IOException("No features found.");
- }
-
- app = ApplicationBuilder.assemble(app, new BuilderContext(new FeatureProvider() {
-
- @Override
- public Feature provide(final ArtifactId id) {
- try {
- final ArtifactHandler handler = artifactManager.getArtifactHandler("mvn:" + id.toMvnPath());
- try (final FileReader r = new FileReader(handler.getFile())) {
- final Feature f = FeatureJSONReader.read(r, handler.getUrl(), SubstituteVariables.RESOLVE);
- return f;
- }
-
- } catch (final IOException e) {
- // ignore
- }
- return null;
- }
- }), sortFeatures(fr, features));
-
- // check framework
- if ( app.getFramework() == null ) {
- // use hard coded Apache Felix
- app.setFramework(getFelixFrameworkId(null));
- }
-
- return app;
- }
-
- /**
* Read the feature
*
* @param file The feature file
* @param artifactManager The artifact manager to read the feature
+ * @param substituteVariables Variable substitution handling
* @return The read feature
* @throws IOException If reading fails
*/
public static Feature getFeature(final String file,
- final ArtifactManager artifactManager) throws IOException {
- return getFeature(file, artifactManager, SubstituteVariables.RESOLVE);
- }
-
- public static Feature getFeature(final String file,
- final ArtifactManager artifactManager, final SubstituteVariables substituteVariables)
+ final ArtifactManager artifactManager,
+ final SubstituteVariables substituteVariables)
throws IOException {
final ArtifactHandler featureArtifact = artifactManager.getArtifactHandler(file);
diff --git a/featuremodel/feature-support/src/test/java/org/apache/sling/feature/support/FeatureUtilTest.java b/featuremodel/feature-support/src/test/java/org/apache/sling/feature/support/io/FeatureUtilTest.java
similarity index 97%
rename from featuremodel/feature-support/src/test/java/org/apache/sling/feature/support/FeatureUtilTest.java
rename to featuremodel/feature-support/src/test/java/org/apache/sling/feature/support/io/FeatureUtilTest.java
index 1f3ff48..1df7822 100644
--- a/featuremodel/feature-support/src/test/java/org/apache/sling/feature/support/FeatureUtilTest.java
+++ b/featuremodel/feature-support/src/test/java/org/apache/sling/feature/support/io/FeatureUtilTest.java
@@ -14,16 +14,16 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.sling.feature.support;
+package org.apache.sling.feature.support.io;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import static org.junit.Assert.assertEquals;
+import org.junit.Test;
public class FeatureUtilTest {
diff --git a/featuremodel/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/Preprocessor.java b/featuremodel/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
index 65191a2..6c1a3ef 100644
--- a/featuremodel/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
+++ b/featuremodel/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
@@ -16,6 +16,15 @@
*/
package org.apache.sling.feature.maven;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
import org.apache.sling.feature.Artifact;
@@ -23,7 +32,6 @@ import org.apache.sling.feature.ArtifactId;
import org.apache.sling.feature.Extension;
import org.apache.sling.feature.ExtensionType;
import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.support.FeatureUtil;
import org.apache.sling.feature.support.json.FeatureJSONReader;
import org.apache.sling.feature.support.json.FeatureJSONReader.SubstituteVariables;
import org.apache.sling.feature.support.process.BuilderContext;
@@ -31,15 +39,6 @@ import org.apache.sling.feature.support.process.FeatureBuilder;
import org.apache.sling.feature.support.process.FeatureProvider;
import org.codehaus.plexus.logging.Logger;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
/**
* The processor processes all feature projects.
*/
@@ -236,7 +235,7 @@ public class Preprocessor {
for(final File file : files) {
try {
- final List<String> features = FeatureUtil.parseFeatureRefFile(file);
+ final List<String> features = org.apache.sling.feature.support.io.FeatureUtil.parseFeatureRefFile(file);
if ( features.isEmpty() ) {
env.logger.debug("Empty feature ref file at " + file);
} else {
--
To stop receiving notification emails like this one, please contact
cziegeler@apache.org.