Move file based artifact management into separate package
diff --git a/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java b/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
index 0ff568e..24fc3b7 100644
--- a/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
+++ b/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
@@ -16,30 +16,9 @@
*/
package org.apache.sling.feature.modelconverter;
-import org.apache.sling.feature.ArtifactId;
-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.FeatureConstants;
-import org.apache.sling.feature.KeyValueMap;
-import org.apache.sling.feature.builder.BuilderContext;
-import org.apache.sling.feature.builder.FeatureBuilder;
-import org.apache.sling.feature.builder.FeatureProvider;
-import org.apache.sling.feature.io.ArtifactHandler;
-import org.apache.sling.feature.io.ArtifactManager;
-import org.apache.sling.feature.io.IOUtils;
-import org.apache.sling.provisioning.model.Artifact;
-import org.apache.sling.provisioning.model.Configuration;
-import org.apache.sling.provisioning.model.Feature;
-import org.apache.sling.provisioning.model.Model;
-import org.apache.sling.provisioning.model.Section;
-import org.apache.sling.provisioning.model.io.ModelWriter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;
@@ -56,6 +35,29 @@
import javax.json.JsonString;
import javax.json.JsonValue;
+import org.apache.sling.feature.ArtifactId;
+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.FeatureConstants;
+import org.apache.sling.feature.KeyValueMap;
+import org.apache.sling.feature.builder.BuilderContext;
+import org.apache.sling.feature.builder.FeatureBuilder;
+import org.apache.sling.feature.builder.FeatureProvider;
+import org.apache.sling.feature.io.file.ArtifactHandler;
+import org.apache.sling.feature.io.file.ArtifactManager;
+import org.apache.sling.feature.io.json.FeatureJSONReader;
+import org.apache.sling.provisioning.model.Artifact;
+import org.apache.sling.provisioning.model.Configuration;
+import org.apache.sling.provisioning.model.Feature;
+import org.apache.sling.provisioning.model.Model;
+import org.apache.sling.provisioning.model.Section;
+import org.apache.sling.provisioning.model.io.ModelWriter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/** Converter that converts the feature model to the provisioning model.
*/
public class FeatureToProvisioning {
@@ -71,7 +73,7 @@
}
}
- org.apache.sling.feature.Feature feature = IOUtils.getFeature(inputFile.getAbsolutePath(), am);
+ org.apache.sling.feature.Feature feature = getFeature(inputFile.getAbsolutePath(), am);
if (feature.getInclude() != null) {
feature = handleIncludes(feature, additionalInputFiles, am);
}
@@ -95,11 +97,20 @@
feature.getFrameworkProperties(), feature.getExtensions(), outputFile.getAbsolutePath(), runModes);
}
+ static org.apache.sling.feature.Feature getFeature(final String url, final ArtifactManager am) throws FileNotFoundException, IOException {
+ final ArtifactHandler featureArtifact = am.getArtifactHandler(url);
+ try (final FileReader r = new FileReader(featureArtifact.getFile())) {
+ final org.apache.sling.feature.Feature f = FeatureJSONReader.read(r, featureArtifact.getUrl());
+ return f;
+ }
+
+ }
+
private static org.apache.sling.feature.Feature handleIncludes(org.apache.sling.feature.Feature feature, File[] additionalFiles, ArtifactManager am) throws IOException {
Map<ArtifactId, org.apache.sling.feature.Feature> features = new HashMap<>();
for (File f : additionalFiles) {
- org.apache.sling.feature.Feature af = IOUtils.getFeature(f.getAbsolutePath(), am);
+ org.apache.sling.feature.Feature af = getFeature(f.getAbsolutePath(), am);
features.put(af.getId(), af);
}
@@ -116,7 +127,7 @@
try {
ArtifactHandler ah = am.getArtifactHandler(id.toMvnUrl());
if (ah != null) {
- org.apache.sling.feature.Feature feat = IOUtils.getFeature(ah.getUrl(), am);
+ org.apache.sling.feature.Feature feat = getFeature(ah.getUrl(), am);
if (feat != null) {
// Cache it
features.put(feat.getId(), feat);
diff --git a/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java b/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
index 5ec0e3d..0c94ea1 100644
--- a/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
+++ b/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
@@ -16,6 +16,21 @@
*/
package org.apache.sling.feature.modelconverter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
import org.apache.sling.feature.ArtifactId;
import org.apache.sling.feature.Bundles;
import org.apache.sling.feature.Configurations;
@@ -24,9 +39,9 @@
import org.apache.sling.feature.Extensions;
import org.apache.sling.feature.FeatureConstants;
import org.apache.sling.feature.KeyValueMap;
-import org.apache.sling.feature.io.ArtifactHandler;
-import org.apache.sling.feature.io.ArtifactManager;
-import org.apache.sling.feature.io.ArtifactManagerConfig;
+import org.apache.sling.feature.io.file.ArtifactHandler;
+import org.apache.sling.feature.io.file.ArtifactManager;
+import org.apache.sling.feature.io.file.ArtifactManagerConfig;
import org.apache.sling.feature.io.json.FeatureJSONWriter;
import org.apache.sling.provisioning.model.Artifact;
import org.apache.sling.provisioning.model.ArtifactGroup;
@@ -45,21 +60,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
/** Converter that converts the provisioning model to the feature model.
*/
public class ProvisioningToFeature {
diff --git a/src/main/java/org/apache/sling/feature/modelconverter/impl/Main.java b/src/main/java/org/apache/sling/feature/modelconverter/impl/Main.java
index d494018..69651db 100644
--- a/src/main/java/org/apache/sling/feature/modelconverter/impl/Main.java
+++ b/src/main/java/org/apache/sling/feature/modelconverter/impl/Main.java
@@ -29,9 +29,8 @@
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
-import org.apache.sling.feature.io.ArtifactManager;
-import org.apache.sling.feature.io.DefaultArtifactManager;
-import org.apache.sling.feature.io.DefaultArtifactManagerConfig;
+import org.apache.sling.feature.io.file.ArtifactManager;
+import org.apache.sling.feature.io.file.ArtifactManagerConfig;
import org.apache.sling.feature.modelconverter.ProvisioningToFeature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -126,12 +125,12 @@
}
private static ArtifactManager getArtifactManager() {
- final DefaultArtifactManagerConfig amConfig = new DefaultArtifactManagerConfig();
+ final ArtifactManagerConfig amConfig = new ArtifactManagerConfig();
if ( repoUrls != null ) {
amConfig.setRepositoryUrls(repoUrls.split(","));
}
try {
- return DefaultArtifactManager.getArtifactManager(amConfig);
+ return ArtifactManager.getArtifactManager(amConfig);
} catch ( IOException ioe) {
LOGGER.error("Unable to create artifact manager " + ioe.getMessage(), ioe);
System.exit(1);
diff --git a/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java b/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
index 30cb7b1..27e9262 100644
--- a/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
@@ -16,35 +16,11 @@
*/
package org.apache.sling.feature.modelconverter;
-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.io.ArtifactHandler;
-import org.apache.sling.feature.io.ArtifactManager;
-import org.apache.sling.feature.io.ArtifactManagerConfig;
-import org.apache.sling.feature.io.IOUtils;
-import org.apache.sling.provisioning.model.Artifact;
-import org.apache.sling.provisioning.model.ArtifactGroup;
-import org.apache.sling.provisioning.model.Configuration;
-import org.apache.sling.provisioning.model.Feature;
-import org.apache.sling.provisioning.model.KeyValueMap;
-import org.apache.sling.provisioning.model.MergeUtility;
-import org.apache.sling.provisioning.model.Model;
-import org.apache.sling.provisioning.model.ModelConstants;
-import org.apache.sling.provisioning.model.ModelUtility;
-import org.apache.sling.provisioning.model.ModelUtility.ResolverOptions;
-import org.apache.sling.provisioning.model.ModelUtility.VariableResolver;
-import org.apache.sling.provisioning.model.RunMode;
-import org.apache.sling.provisioning.model.Section;
-import org.apache.sling.provisioning.model.io.ModelReader;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.File;
import java.io.FileReader;
@@ -66,11 +42,34 @@
import java.util.List;
import java.util.Map;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+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.io.file.ArtifactHandler;
+import org.apache.sling.feature.io.file.ArtifactManager;
+import org.apache.sling.feature.io.file.ArtifactManagerConfig;
+import org.apache.sling.provisioning.model.Artifact;
+import org.apache.sling.provisioning.model.ArtifactGroup;
+import org.apache.sling.provisioning.model.Configuration;
+import org.apache.sling.provisioning.model.Feature;
+import org.apache.sling.provisioning.model.KeyValueMap;
+import org.apache.sling.provisioning.model.MergeUtility;
+import org.apache.sling.provisioning.model.Model;
+import org.apache.sling.provisioning.model.ModelConstants;
+import org.apache.sling.provisioning.model.ModelUtility;
+import org.apache.sling.provisioning.model.ModelUtility.ResolverOptions;
+import org.apache.sling.provisioning.model.ModelUtility.VariableResolver;
+import org.apache.sling.provisioning.model.RunMode;
+import org.apache.sling.provisioning.model.Section;
+import org.apache.sling.provisioning.model.io.ModelReader;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
public class ModelConverterTest {
private Path tempDir;
@@ -252,8 +251,8 @@
File outFile = files.get(0);
String expectedFile = new File(getClass().getResource(expectedJSON).toURI()).getAbsolutePath();
- org.apache.sling.feature.Feature expected = IOUtils.getFeature(expectedFile, artifactManager);
- org.apache.sling.feature.Feature actual = IOUtils.getFeature(outFile.getAbsolutePath(), artifactManager);
+ org.apache.sling.feature.Feature expected = FeatureToProvisioning.getFeature(expectedFile, artifactManager);
+ org.apache.sling.feature.Feature actual = FeatureToProvisioning.getFeature(outFile.getAbsolutePath(), artifactManager);
assertFeaturesEqual(expected, actual);
}
@@ -350,8 +349,8 @@
File outFile = files.get(0);
String expectedFile = new File(getClass().getResource(expectedJSON).toURI()).getAbsolutePath();
- org.apache.sling.feature.Feature expected = IOUtils.getFeature(expectedFile, artifactManager);
- org.apache.sling.feature.Feature actual = IOUtils.getFeature(outFile.getAbsolutePath(), artifactManager);
+ org.apache.sling.feature.Feature expected = FeatureToProvisioning.getFeature(expectedFile, artifactManager);
+ org.apache.sling.feature.Feature actual = FeatureToProvisioning.getFeature(outFile.getAbsolutePath(), artifactManager);
assertFeaturesEqual(expected, actual);
}