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();
}