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 2017/05/30 08:23:51 UTC
svn commit: r1796785 - in /sling/whiteboard/cziegeler: feature-analyser/
feature/ feature/src/main/java/org/apache/sling/feature/
feature/src/main/java/org/apache/sling/feature/analyser/
feature/src/main/java/org/apache/sling/feature/json/
Author: cziegeler
Date: Tue May 30 08:23:51 2017
New Revision: 1796785
URL: http://svn.apache.org/viewvc?rev=1796785&view=rev
Log:
Move analyser into separate module
Removed:
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/analyser/
Modified:
sling/whiteboard/cziegeler/feature-analyser/pom.xml
sling/whiteboard/cziegeler/feature/pom.xml
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/Extension.java
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/json/FeatureJSONReader.java
Modified: sling/whiteboard/cziegeler/feature-analyser/pom.xml
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature-analyser/pom.xml?rev=1796785&r1=1796784&r2=1796785&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature-analyser/pom.xml (original)
+++ sling/whiteboard/cziegeler/feature-analyser/pom.xml Tue May 30 08:23:51 2017
@@ -48,6 +48,10 @@
<extensions>true</extensions>
<configuration>
<instructions>
+ <Import-Package>
+ !org.osgi.service.event,
+ *
+ </Import-Package>
<Conditional-Package>
org.apache.sling.commons.osgi
</Conditional-Package>
Modified: sling/whiteboard/cziegeler/feature/pom.xml
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature/pom.xml?rev=1796785&r1=1796784&r2=1796785&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature/pom.xml (original)
+++ sling/whiteboard/cziegeler/feature/pom.xml Tue May 30 08:23:51 2017
@@ -81,12 +81,6 @@
<version>0.0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.osgi</artifactId>
- <version>2.4.0</version>
- <scope>provided</scope>
- </dependency>
<!-- Testing -->
<dependency>
<groupId>junit</groupId>
Modified: sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/Extension.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/Extension.java?rev=1796785&r1=1796784&r2=1796785&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/Extension.java (original)
+++ sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/Extension.java Tue May 30 08:23:51 2017
@@ -22,7 +22,7 @@ import java.util.List;
/**
* Extension
*/
-public abstract class Extension {
+public class Extension {
private final ExtensionType type;
Modified: sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/json/FeatureJSONReader.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/json/FeatureJSONReader.java?rev=1796785&r1=1796784&r2=1796785&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/json/FeatureJSONReader.java (original)
+++ sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/json/FeatureJSONReader.java Tue May 30 08:23:51 2017
@@ -39,6 +39,8 @@ import org.apache.sling.feature.Artifact
import org.apache.sling.feature.ArtifactId;
import org.apache.sling.feature.Capability;
import org.apache.sling.feature.Configuration;
+import org.apache.sling.feature.Extension;
+import org.apache.sling.feature.ExtensionType;
import org.apache.sling.feature.Feature;
import org.apache.sling.feature.Include;
import org.apache.sling.feature.Requirement;
@@ -110,8 +112,6 @@ public class FeatureJSONReader {
@SuppressWarnings("unchecked")
final Map<String, Object> map = (Map<String, Object>) JSONUtil.getValue(json);
- final Set<String> keySet = new HashSet<>(map.keySet());
- keySet.removeAll(JSONConstants.FEATURE_KNOWN_PROPERTIES);
if ( !map.containsKey(JSONConstants.FEATURE_ID) ) {
throw new IOException(this.exceptionPrefix + "Feature id is missing");
}
@@ -129,13 +129,63 @@ public class FeatureJSONReader {
this.readRequirements(map);
this.readIncludes(map);
- // TODO - extensions
+ this.readExtensions(map);
- // check duplicates in configurations, includes, extensions
+ // check duplicates in configurations, includes
return feature;
}
- private void readIncludes(Map<String, Object> map) throws IOException {
+ private void readExtensions(final Map<String, Object> map) throws IOException {
+ final Set<String> keySet = new HashSet<>(map.keySet());
+ keySet.removeAll(JSONConstants.FEATURE_KNOWN_PROPERTIES);
+ // the remaining keys are considered extensions!
+ for(final String key : keySet) {
+ final int pos = key.indexOf(':');
+ final String postfix = pos == -1 ? null : key.substring(pos + 1);
+ final int sep = (postfix == null ? key.indexOf('|') : postfix.indexOf('|'));
+ final String name;
+ final String type;
+ final String optional;
+ if ( pos == -1 ) {
+ type = ExtensionType.ARTIFACTS.name();
+ if ( sep == -1 ) {
+ name = key;
+ optional = Boolean.FALSE.toString();
+ } else {
+ name = key.substring(0, sep);
+ optional = key.substring(sep + 1);
+ }
+ } else {
+ name = key.substring(0, pos);
+ if ( sep == -1 ) {
+ type = postfix;
+ optional = Boolean.FALSE.toString();
+ } else {
+ type = postfix.substring(0, sep);
+ optional = postfix.substring(sep + 1);
+ }
+ }
+ for(final Extension e : this.feature.getExtensions()) {
+ if ( e.getName().equals(name) ) {
+ throw new IOException(exceptionPrefix + "Duplicate extension with name " + name);
+ }
+ }
+
+ final ExtensionType extType = ExtensionType.valueOf(type);
+ final boolean opt = Boolean.valueOf(optional).booleanValue();
+
+ final Extension ext = new Extension(extType, name, opt);
+ switch ( extType ) {
+ case ARTIFACTS : // TODO
+ case JSON : // TODO
+ case TEXT : // TODO
+ }
+
+ this.feature.getExtensions().add(ext);
+ }
+ }
+
+ private void readIncludes(final Map<String, Object> map) throws IOException {
if ( map.containsKey(JSONConstants.FEATURE_INCLUDES)) {
final Object includesObj = map.get(JSONConstants.FEATURE_INCLUDES);
checkType(JSONConstants.FEATURE_INCLUDES, includesObj, List.class);