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/29 14:00:20 UTC

svn commit: r1796630 - /sling/whiteboard/cziegeler/provisioning-model/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java

Author: cziegeler
Date: Mon May 29 14:00:20 2017
New Revision: 1796630

URL: http://svn.apache.org/viewvc?rev=1796630&view=rev
Log:
Implement writer

Modified:
    sling/whiteboard/cziegeler/provisioning-model/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java

Modified: sling/whiteboard/cziegeler/provisioning-model/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/provisioning-model/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java?rev=1796630&r1=1796629&r2=1796630&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/provisioning-model/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java (original)
+++ sling/whiteboard/cziegeler/provisioning-model/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java Mon May 29 14:00:20 2017
@@ -27,8 +27,11 @@ import javax.json.Json;
 import javax.json.stream.JsonGenerator;
 
 import org.apache.sling.feature.Artifact;
+import org.apache.sling.feature.Capability;
 import org.apache.sling.feature.Configuration;
 import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.Include;
+import org.apache.sling.feature.Requirement;
 
 
 /**
@@ -50,6 +53,100 @@ public class FeatureJSONWriter {
 
         w.write(JSONConstants.FEATURE_ID, feature.getId().toMvnId());
 
+        // includes
+        if ( !feature.getIncludes().isEmpty() ) {
+            w.write(JSONConstants.FEATURE_INCLUDES);
+            w.writeStartArray();
+
+            for(final Include inc : feature.getIncludes()) {
+                if ( inc.getArtifactExtensionRemovals().isEmpty()
+                     && inc.getBundleRemovals().isEmpty()
+                     && inc.getConfigurationRemovals().isEmpty()
+                     && inc.getFrameworkPropertiesRemovals().isEmpty() ) {
+                    w.write(inc.getId().toMvnId());
+                } else {
+                    w.writeStartObject();
+                    w.write(JSONConstants.ARTIFACT_ID, inc.getId().toMvnId());
+                    w.write(JSONConstants.INCLUDE_REMOVALS);
+                    w.writeStartObject();
+                    if ( !inc.getArtifactExtensionRemovals().isEmpty() ) {
+                        // TODO
+                    }
+                    if ( !inc.getConfigurationRemovals().isEmpty() ) {
+                        // TODO
+                    }
+                    if ( !inc.getBundleRemovals().isEmpty() ) {
+                        // TODO
+                    }
+                    if ( !inc.getFrameworkPropertiesRemovals().isEmpty() ) {
+                        // TODO
+                    }
+                    w.writeEnd();
+                    w.writeEnd();
+                }
+            }
+            w.writeEnd();
+        }
+
+        // requirements
+        if ( !feature.getRequirements().isEmpty() ) {
+            w.write(JSONConstants.FEATURE_REQUIREMENTS);
+            w.writeStartArray();
+
+            for(final Requirement req : feature.getRequirements()) {
+                w.writeStartObject();
+                w.write(JSONConstants.REQCAP_NAMESPACE, req.getNamespace());
+                if ( !req.getAttributes().isEmpty() ) {
+                    w.write(JSONConstants.REQCAP_ATTRIBUTES);
+                    w.writeStartObject();
+                    for(final Map.Entry<String, String> entry : req.getAttributes()) {
+                        w.write(entry.getKey(), entry.getValue());
+                    }
+                    w.writeEnd();
+                }
+                if ( !req.getDirectives().isEmpty() ) {
+                    w.write(JSONConstants.REQCAP_DIRECTIVES);
+                    w.writeStartObject();
+                    for(final Map.Entry<String, String> entry : req.getDirectives()) {
+                        w.write(entry.getKey(), entry.getValue());
+                    }
+                    w.writeEnd();
+                }
+                w.writeEnd();
+            }
+            w.writeEnd();
+        }
+
+        // capabilities
+        if ( !feature.getCapabilities().isEmpty() ) {
+            w.write(JSONConstants.FEATURE_CAPABILITIES);
+            w.writeStartArray();
+
+            for(final Capability cap : feature.getCapabilities()) {
+                w.writeStartObject();
+                w.write(JSONConstants.REQCAP_NAMESPACE, cap.getNamespace());
+                if ( !cap.getAttributes().isEmpty() ) {
+                    w.write(JSONConstants.REQCAP_ATTRIBUTES);
+                    w.writeStartObject();
+                    for(final Map.Entry<String, String> entry : cap.getAttributes()) {
+                        w.write(entry.getKey(), entry.getValue());
+                    }
+                    w.writeEnd();
+                }
+                if ( !cap.getDirectives().isEmpty() ) {
+                    w.write(JSONConstants.REQCAP_DIRECTIVES);
+                    w.writeStartObject();
+                    for(final Map.Entry<String, String> entry : cap.getDirectives()) {
+                        w.write(entry.getKey(), entry.getValue());
+                    }
+                    w.writeEnd();
+                }
+                w.writeEnd();
+            }
+            w.writeEnd();
+        }
+
+        // bundles
         if ( !feature.getBundles().getBundlesByStartLevel().isEmpty() ) {
             w.write(JSONConstants.FEATURE_BUNDLES);
             w.writeStartObject();
@@ -106,7 +203,7 @@ public class FeatureJSONWriter {
             w.writeEnd();
         }
 
-        // TODO includes, requirements, capabilities, extensions
+        // TODO extensions
         w.writeEnd();
         w.flush();
     }