Author: cziegeler
Date: Tue Jul 4 14:20:12 2017
New Revision: 1800796
URL: http://svn.apache.org/viewvc?rev=1800796&view=rev
Log:
Continue implementing application handling
Modified:
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/ApplicationProjectInfo.java
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/ProjectHelper.java
Modified:
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/ApplicationProjectInfo.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/ApplicationProjectInfo.java?rev=1800796&r1=1800795&r2=1800796&view=diff
==============================================================================
---
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/ApplicationProjectInfo.java
(original)
+++
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/ApplicationProjectInfo.java
Tue Jul 4 14:20:12 2017
@@ -25,13 +25,7 @@ public class ApplicationProjectInfo exte
public List<Feature> features;
public List<Feature> testFeatures;
- public List<Feature> featureRefs;
- public List<Feature> testFeatureRefs;
-
public List<Feature> assembledFeatures;
- public List<Feature> assembledtestFeatures;
-
- public List<Feature> assembledFeatureRefs;
- public List<Feature> assembledTestFeatureRefs;
+ public List<Feature> assembledTestFeatures;
}
Modified:
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/Preprocessor.java?rev=1800796&r1=1800795&r2=1800796&view=diff
==============================================================================
---
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
(original)
+++
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
Tue Jul 4 14:20:12 2017
@@ -220,7 +220,7 @@ public class Preprocessor {
}
if ( config.isTestConfig() ) {
info.testFeatures = featureList;
- info.assembledtestFeatures = assembledFeatureList;
+ info.assembledTestFeatures = assembledFeatureList;
} else {
info.features = featureList;
info.assembledFeatures = assembledFeatureList;
@@ -267,11 +267,11 @@ public class Preprocessor {
assembledFeatureRefList.add(assembledFeature);
}
if ( config.isTestConfig() ) {
- info.testFeatureRefs = featureRefList;
- info.assembledTestFeatureRefs = assembledFeatureRefList;
+ info.testFeatures.addAll(featureRefList);
+ info.assembledTestFeatures.addAll(assembledFeatureRefList);
} else {
- info.featureRefs = featureRefList;
- info.assembledFeatureRefs = assembledFeatureRefList;
+ info.features.addAll(featureRefList);
+ info.assembledFeatures.addAll(assembledFeatureRefList);
}
if ( config.isSkipAddDependencies() ) {
@@ -280,9 +280,6 @@ public class Preprocessor {
for(final Feature feature : assembledFeatureList) {
addDependenciesFromFeature(env, info, feature,
config.getScope());
}
- for(final Feature feature : assembledFeatureRefList) {
- addDependenciesFromFeature(env, info, feature,
config.getScope());
- }
}
}
Modified:
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/ProjectHelper.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/ProjectHelper.java?rev=1800796&r1=1800795&r2=1800796&view=diff
==============================================================================
---
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/ProjectHelper.java
(original)
+++
sling/whiteboard/cziegeler/osgifeature-maven-plugin/src/main/java/org/apache/sling/feature/maven/ProjectHelper.java
Tue Jul 4 14:20:12 2017
@@ -19,7 +19,9 @@ package org.apache.sling.feature.maven;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
+import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import org.apache.maven.artifact.Artifact;
@@ -64,7 +66,24 @@ public abstract class ProjectHelper {
}
}
- private static Feature get(final MavenProject project, final String key) {
+ private static void store(final MavenProject project, final String key,
final List<Feature> features) {
+ if ( features != null && !features.isEmpty()) {
+ project.setContextValue(key, features.size());
+ // we have to serialize as the dependency lifecycle participant
uses a different class loader (!)
+ int index = 0;
+ for(final Feature f : features) {
+ try ( final StringWriter w1 = new StringWriter() ) {
+ FeatureJSONWriter.write(w1, f);
+ project.setContextValue(key + "_" + String.valueOf(index),
w1.toString());
+ index++;
+ } catch ( final IOException ioe) {
+ throw new RuntimeException(ioe.getMessage(), ioe);
+ }
+ }
+ }
+ }
+
+ private static Feature getFeature(final MavenProject project, final String
key) {
final String cacheKey = key + "-cache";
Feature result = null;
try {
@@ -77,11 +96,9 @@ public abstract class ProjectHelper {
if ( text == null ) {
result = null;
} else {
- try {
- try ( final StringReader r = new StringReader(text) ) {
- result = FeatureJSONReader.read(r, project.getId());
- project.setContextValue(cacheKey, result);
- }
+ try ( final StringReader r = new StringReader(text) ) {
+ result = FeatureJSONReader.read(r, project.getId());
+ project.setContextValue(cacheKey, result);
} catch ( final IOException ioe) {
throw new RuntimeException(ioe.getMessage(), ioe);
}
@@ -90,6 +107,37 @@ public abstract class ProjectHelper {
return result;
}
+ @SuppressWarnings("unchecked")
+ private static List<Feature> getFeatures(final MavenProject project, final
String key) {
+ final String cacheKey = key + "-cache";
+ List<Feature> result = null;
+ try {
+ result = (List<Feature>) project.getContextValue(cacheKey);
+ } catch ( final Exception e) {
+ // if we get a class cast exception, we read again
+ }
+ if ( result == null ) {
+ final Integer size = (Integer)project.getContextValue(key);
+ if ( size != null ) {
+ result = new ArrayList<>();
+ for(int i=0; i<size;i++) {
+ final String text = (String)project.getContextValue(key +
"_" + String.valueOf(i));
+ if ( text == null ) {
+ throw new RuntimeException("Unable to get feature from
internal store.");
+ }
+ try ( final StringReader r = new StringReader(text) ) {
+ final Feature feature = FeatureJSONReader.read(r,
project.getId());
+ result.add(feature);
+ } catch ( final IOException ioe) {
+ throw new RuntimeException(ioe.getMessage(), ioe);
+ }
+ }
+ project.setContextValue(cacheKey, result);
+ }
+ }
+ return result;
+ }
+
/**
* Store all relevant information about the project for plugins to be
* retrieved
@@ -103,21 +151,12 @@ public abstract class ProjectHelper {
}
/**
- * Store all relevant information about the project for plugins to be
- * retrieved
- * @param info The project info
- */
- public static void storeProjectInfo(final ApplicationProjectInfo info) {
- // TODO
- }
-
- /**
* Get the assembled feature from the project
* @param project The maven projet
* @return The assembled feature or {@code null}
*/
public static Feature getAssembledFeature(final MavenProject project) {
- return get(project, ASSEMBLED_FEATURE_JSON);
+ return getFeature(project, ASSEMBLED_FEATURE_JSON);
}
/**
@@ -126,7 +165,7 @@ public abstract class ProjectHelper {
* @return The raw feature or {@code null}
*/
public static Feature getFeature(final MavenProject project) {
- return get(project, RAW_FEATURE_JSON);
+ return getFeature(project, RAW_FEATURE_JSON);
}
/**
@@ -135,7 +174,7 @@ public abstract class ProjectHelper {
* @return The assembled feature or {@code null}
*/
public static Feature getAssembledTestFeature(final MavenProject project) {
- return get(project, ASSEMBLED_TEST_FEATURE_JSON);
+ return getFeature(project, ASSEMBLED_TEST_FEATURE_JSON);
}
/**
@@ -144,7 +183,55 @@ public abstract class ProjectHelper {
* @return The raw feature or {@code null}
*/
public static Feature getTestFeature(final MavenProject project) {
- return get(project, RAW_TEST_FEATURE_JSON);
+ return getFeature(project, RAW_TEST_FEATURE_JSON);
+ }
+
+ /**
+ * Store all relevant information about the project for plugins to be
+ * retrieved
+ * @param info The project info
+ */
+ public static void storeProjectInfo(final ApplicationProjectInfo info) {
+ store(info.project, RAW_FEATURE_JSON, info.features);
+ store(info.project, RAW_TEST_FEATURE_JSON, info.testFeatures);
+ store(info.project, ASSEMBLED_FEATURE_JSON, info.assembledFeatures);
+ store(info.project, ASSEMBLED_TEST_FEATURE_JSON,
info.assembledTestFeatures);
+ }
+
+ /**
+ * Get the assembled features from the project
+ * @param project The maven projet
+ * @return The assembled features or {@code null}
+ */
+ public static List<Feature> getAssembledFeatures(final MavenProject
project) {
+ return getFeatures(project, ASSEMBLED_FEATURE_JSON);
+ }
+
+ /**
+ * Get the raw feature from the project
+ * @param project The maven projet
+ * @return The raw features or {@code null}
+ */
+ public static List<Feature> getFeatures(final MavenProject project) {
+ return getFeatures(project, RAW_FEATURE_JSON);
+ }
+
+ /**
+ * Get the assembled test feature from the project
+ * @param project The maven projet
+ * @return The assembled features or {@code null}
+ */
+ public static List<Feature> getAssembledTestFeatures(final MavenProject
project) {
+ return getFeatures(project, ASSEMBLED_TEST_FEATURE_JSON);
+ }
+
+ /**
+ * Get the raw test feature from the project
+ * @param project The maven projet
+ * @return The raw features or {@code null}
+ */
+ public static List<Feature> getTestFeatures(final MavenProject project) {
+ return getFeatures(project, RAW_TEST_FEATURE_JSON);
}
/**