Adding version() and mode() to ApplicationDescriptor

Signed-off-by: niclas <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/6fa99a1d
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/6fa99a1d
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/6fa99a1d

Branch: refs/heads/develop
Commit: 6fa99a1df2b7315f6718daef7e2c31968a1ae7d5
Parents: 5820223
Author: niclas <[email protected]>
Authored: Sun May 28 07:38:19 2017 +0800
Committer: niclas <[email protected]>
Committed: Sun May 28 07:38:19 2017 +0800

----------------------------------------------------------------------
 .../api/structure/ApplicationDescriptor.java    | 10 ++++++
 .../library/rest/admin/EntitiesResource.java    |  1 -
 .../polygene/library/scripting/Scripting.java   |  2 +-
 .../DataSourceConfigurationState.java           |  3 +-
 tools/model-detail/dev-status.xml               |  2 +-
 .../descriptor/ActivatorDetailDescriptor.java   | 29 ++++++++++++++++
 .../descriptor/ApplicationDetailDescriptor.java | 26 ++++++++++++++
 .../descriptor/CompositeDetailDescriptor.java   | 27 +++++++++++----
 .../CompositeMethodDetailDescriptor.java        | 36 +++++++++++++++-----
 .../descriptor/ConstructorDetailDescriptor.java |  8 +++++
 .../descriptor/EntityDetailDescriptor.java      | 10 ++++--
 .../ImportedServiceCompositeDescriptor.java     | 17 +++++++++
 .../ImportedServiceDetailDescriptor.java        | 14 ++++++++
 .../InjectedFieldDetailDescriptor.java          |  9 +++++
 .../InjectedMethodDetailDescriptor.java         |  8 +++++
 .../InjectedParametersDetailDescriptor.java     | 29 ++++++++++++----
 .../model/descriptor/LayerDetailDescriptor.java | 29 ++++++++++++++++
 .../MethodConcernDetailDescriptor.java          | 28 +++++++++++++++
 .../MethodConcernsDetailDescriptor.java         | 14 ++++++++
 .../MethodConstraintDetailDescriptor.java       |  9 +++++
 .../MethodConstraintsDetailDescriptor.java      |  6 ++++
 .../MethodSideEffectDetailDescriptor.java       | 27 +++++++++++++++
 .../MethodSideEffectsDetailDescriptor.java      |  9 +++++
 .../model/descriptor/MixinDetailDescriptor.java | 28 +++++++++++++++
 .../descriptor/ModuleDetailDescriptor.java      | 21 ++++++++++++
 .../descriptor/ObjectDetailDescriptor.java      | 28 +++++++++++++++
 .../descriptor/ServiceDetailDescriptor.java     |  7 ++++
 .../tools/model/descriptor/ServiceUsage.java    | 17 +++++++++
 .../descriptor/TransientDetailDescriptor.java   |  7 ++++
 .../model/descriptor/ValueDetailDescriptor.java | 10 +++++-
 .../tools/model/descriptor/package.html         |  2 +-
 .../polygene/tools/model/util/APIFinder.java    |  4 +--
 .../polygene/tools/model/util/package.html      |  2 +-
 33 files changed, 447 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/core/api/src/main/java/org/apache/polygene/api/structure/ApplicationDescriptor.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/structure/ApplicationDescriptor.java
 
b/core/api/src/main/java/org/apache/polygene/api/structure/ApplicationDescriptor.java
index 82d01e0..2defddf 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/structure/ApplicationDescriptor.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/structure/ApplicationDescriptor.java
@@ -40,4 +40,14 @@ public interface ApplicationDescriptor
      * @return the Application's name
      */
     String name();
+
+    /**
+     * @return the Application's version
+     */
+    String version();
+
+    /**
+     * @return the Application's runtime mode
+     */
+    Application.Mode mode();
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntitiesResource.java
----------------------------------------------------------------------
diff --git 
a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntitiesResource.java
 
b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntitiesResource.java
index 0b07b3e..4bce3cd 100644
--- 
a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntitiesResource.java
+++ 
b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntitiesResource.java
@@ -83,7 +83,6 @@ public class EntitiesResource
     protected Representation get( Variant variant )
         throws ResourceException
     {
-        System.out.println( "VARIANT: " + variant.getMediaType() );
         // Generate the right representation according to its media type.
         if( MediaType.APPLICATION_JSON.equals( variant.getMediaType() ) )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
----------------------------------------------------------------------
diff --git 
a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
 
b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
index ad97b42..4b6487b 100644
--- 
a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
+++ 
b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
@@ -69,6 +69,6 @@ public class Scripting
 
     public static void main( String[] args )
     {
-        new ScriptEngineManager().getEngineFactories().forEach( factory -> 
System.out.println(factory));
+        new ScriptEngineManager().getEngineFactories().forEach( 
System.out::println );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/libraries/sql/src/main/java/org/apache/polygene/library/sql/datasource/DataSourceConfigurationState.java
----------------------------------------------------------------------
diff --git 
a/libraries/sql/src/main/java/org/apache/polygene/library/sql/datasource/DataSourceConfigurationState.java
 
b/libraries/sql/src/main/java/org/apache/polygene/library/sql/datasource/DataSourceConfigurationState.java
index 20274c4..9243fa5 100644
--- 
a/libraries/sql/src/main/java/org/apache/polygene/library/sql/datasource/DataSourceConfigurationState.java
+++ 
b/libraries/sql/src/main/java/org/apache/polygene/library/sql/datasource/DataSourceConfigurationState.java
@@ -28,8 +28,7 @@ import org.apache.polygene.api.property.Property;
  * Describe DataSourceConfiguration properties.
  */
 // START SNIPPET: config
-public interface DataSourceConfigurationState
-        extends Enabled
+public interface DataSourceConfigurationState extends Enabled
 {
     Property<String> driver();
     Property<String> url();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/dev-status.xml
----------------------------------------------------------------------
diff --git a/tools/model-detail/dev-status.xml 
b/tools/model-detail/dev-status.xml
index e124151..c65f229 100644
--- a/tools/model-detail/dev-status.xml
+++ b/tools/model-detail/dev-status.xml
@@ -30,7 +30,7 @@
     <documentation>brief</documentation>
 
     <!-- none, some, good, complete -->
-    <unittests>none</unittests>
+    <unittests>some</unittests>
 
   </status>
   <licenses>

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ActivatorDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ActivatorDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ActivatorDetailDescriptor.java
index 0b331e2..552e114 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ActivatorDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ActivatorDetailDescriptor.java
@@ -22,6 +22,9 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.activation.ActivatorDescriptor;
 import org.apache.polygene.api.util.Visitable;
 import org.apache.polygene.api.util.Visitor;
@@ -174,4 +177,30 @@ public class ActivatorDetailDescriptor
     {
         return descriptor.toString();
     }
+
+    public JsonObject toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        if( service() != null )
+        {
+            builder.add( "service", service().toString() );
+        }
+        if( importedService() != null )
+        {
+            builder.add( "importedService", importedService().toString() );
+        }
+        if( module() != null )
+        {
+            builder.add( "module", module().toString() );
+        }
+        if( layer() != null )
+        {
+            builder.add( "layer", layer().toString() );
+        }
+        if( application() != null )
+        {
+            builder.add( "application", application().toString() );
+        }
+        return builder.build();
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ApplicationDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ApplicationDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ApplicationDetailDescriptor.java
index fd3abc3..e23247f 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ApplicationDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ApplicationDetailDescriptor.java
@@ -22,6 +22,11 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+import org.apache.polygene.api.structure.Application;
 import org.apache.polygene.api.structure.ApplicationDescriptor;
 import org.apache.polygene.api.util.HierarchicalVisitor;
 import org.apache.polygene.api.util.VisitableHierarchy;
@@ -110,4 +115,25 @@ public final class ApplicationDetailDescriptor
         }
         return visitor.visitLeave( this );
     }
+
+    public JsonObject toJson()
+    {
+        JsonObjectBuilder appBuilder = Json.createObjectBuilder();
+        String appName = descriptor().name();
+        String version = descriptor().version();
+        Application.Mode mode = descriptor().mode();
+        appBuilder.add( "name", appName );
+        appBuilder.add( "version", version );
+        appBuilder.add( "mode", mode.toString() );
+
+        JsonArrayBuilder layersBuilder = Json.createArrayBuilder();
+        layers().forEach( layer -> layersBuilder.add( layer.toJson() ) );
+        appBuilder.add( "layers", layersBuilder.build() );
+
+        JsonArrayBuilder activatorsBuilder = Json.createArrayBuilder();
+        activators().forEach( activator -> activatorsBuilder.add( 
activator.toJson() ) );
+        appBuilder.add( "activators", activatorsBuilder.build() );
+
+        return appBuilder.build();
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/CompositeDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/CompositeDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/CompositeDetailDescriptor.java
index 3b5e0e3..f62a4ff 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/CompositeDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/CompositeDetailDescriptor.java
@@ -23,6 +23,9 @@ import java.lang.reflect.Method;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.composite.CompositeDescriptor;
 import org.apache.polygene.api.composite.MethodDescriptor;
 
@@ -49,7 +52,6 @@ public abstract class CompositeDetailDescriptor<T extends 
CompositeDescriptor>
 
     /**
      * @return Descriptor of this {@code CompositeDetailDescriptor}. Never 
return {@code null}.
-     *
      * @since 0.5
      */
     public final T descriptor()
@@ -59,7 +61,6 @@ public abstract class CompositeDetailDescriptor<T extends 
CompositeDescriptor>
 
     /**
      * @return Methods of this {@code CompositeDetailDescriptor}. Never return 
{@code null}.
-     *
      * @since 0.5
      */
     public final Iterable<CompositeMethodDetailDescriptor> methods()
@@ -69,7 +70,6 @@ public abstract class CompositeDetailDescriptor<T extends 
CompositeDescriptor>
 
     /**
      * @return Mixins of this {@code CompositeDetailDescriptor}. Never return 
{@code null}.
-     *
      * @since 0.5
      */
     public final Iterable<MixinDetailDescriptor> mixins()
@@ -81,9 +81,7 @@ public abstract class CompositeDetailDescriptor<T extends 
CompositeDescriptor>
      * Return method detail descriptor of the requested method. Returns {@code 
null} if not found.
      *
      * @param aMethod Method to look up. This argument must not be {@code 
null}.
-     *
      * @return method detail descriptor of the requested method.
-     *
      * @since 0.5
      */
     public final CompositeMethodDetailDescriptor getMethodDescriptor( Method 
aMethod )
@@ -103,7 +101,6 @@ public abstract class CompositeDetailDescriptor<T extends 
CompositeDescriptor>
 
     /**
      * @return Module that own this {@code CompositeDetailDescriptor}.
-     *
      * @since 0.5
      */
     public final ModuleDetailDescriptor module()
@@ -141,4 +138,22 @@ public abstract class CompositeDetailDescriptor<T extends 
CompositeDescriptor>
     {
         return descriptor.toString();
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "type", descriptor().primaryType().getName() );
+        builder.add( "visibility", descriptor().visibility().name() );
+        {
+            JsonArrayBuilder typesBuilder = Json.createArrayBuilder();
+            descriptor().types().forEach( type -> typesBuilder.add( 
type.getName() ) );
+            builder.add( "types", typesBuilder );
+        }
+        {
+            JsonArrayBuilder mixinsBuilder = Json.createArrayBuilder();
+            mixins().forEach( mixin -> mixinsBuilder.add( mixin.toJson() ) );
+            builder.add( "mixins", mixinsBuilder );
+        }
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/CompositeMethodDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/CompositeMethodDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/CompositeMethodDetailDescriptor.java
index 7a2bda4..84e3215 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/CompositeMethodDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/CompositeMethodDetailDescriptor.java
@@ -19,7 +19,12 @@
  */
 package org.apache.polygene.tools.model.descriptor;
 
+import java.lang.reflect.Parameter;
+import java.util.Arrays;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.composite.MethodDescriptor;
 
 public final class CompositeMethodDetailDescriptor
@@ -44,7 +49,6 @@ public final class CompositeMethodDetailDescriptor
 
     /**
      * @return Descriptor of this {@code CompositeMethodDetailDescriptor}. 
Never return {@code null}.
-     *
      * @since 0.5
      */
     public final MethodDescriptor descriptor()
@@ -54,8 +58,7 @@ public final class CompositeMethodDetailDescriptor
 
     /**
      * @return Constraints of this {@code CompositeMethodDetailDescriptor}.
-     *         Returns {@code null} if this method does not have any 
constraints.
-     *
+     * Returns {@code null} if this method does not have any constraints.
      * @since 0.5
      */
     public final MethodConstraintsDetailDescriptor constraints()
@@ -65,8 +68,7 @@ public final class CompositeMethodDetailDescriptor
 
     /**
      * @return Concerns of this {@code CompositeMethodDetailDescriptor}. 
Returns {@code null} if this method does not
-     *         have any concerns.
-     *
+     * have any concerns.
      * @since 0.5
      */
     public final MethodConcernsDetailDescriptor concerns()
@@ -76,8 +78,7 @@ public final class CompositeMethodDetailDescriptor
 
     /**
      * @return Side-effects of this {@code CompositeMethodDetailDescriptor}. 
Returns {@code null}
-     *         if this method does not have any side effects.
-     *
+     * if this method does not have any side effects.
      * @since 0.5
      */
     public final MethodSideEffectsDetailDescriptor sideEffects()
@@ -87,7 +88,6 @@ public final class CompositeMethodDetailDescriptor
 
     /**
      * @return Composite that owns this {@code 
CompositeMethodDetailDescriptor}.
-     *
      * @since 0.5
      */
     public final CompositeDetailDescriptor composite()
@@ -132,4 +132,24 @@ public final class CompositeMethodDetailDescriptor
     {
         return descriptor.method().getName();
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "name", descriptor().method().getName() );
+        builder.add( "type", descriptor().method().getReturnType().getName() );
+        {
+            JsonArrayBuilder paramsBuilder = Json.createArrayBuilder();
+            Arrays.stream( descriptor().method().getParameters() )
+                  .map( Parameter::toString )
+                  .forEach( paramsBuilder::add );
+//                  .forEach( param -> paramsBuilder.add( param.getName() + " 
: " + param.getType() ) );
+            builder.add( "parameters", paramsBuilder );
+        }
+        builder.add( "constraints", constraints().toJson() );
+        builder.add( "concerns", concerns().toJson() );
+        builder.add( "sideeffects", sideEffects().toJson() );
+
+        return builder;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ConstructorDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ConstructorDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ConstructorDetailDescriptor.java
index 152fdaa..6700b5b 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ConstructorDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ConstructorDetailDescriptor.java
@@ -20,6 +20,8 @@
 package org.apache.polygene.tools.model.descriptor;
 
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.composite.ConstructorDescriptor;
 
 /**
@@ -142,4 +144,10 @@ public final class ConstructorDetailDescriptor
         return descriptor.constructor().getDeclaringClass().getSimpleName();
     }
 
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "name", descriptor().constructor().getName() );
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/EntityDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/EntityDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/EntityDetailDescriptor.java
index a08f6a2..1db78b7 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/EntityDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/EntityDetailDescriptor.java
@@ -19,6 +19,7 @@
  */
 package org.apache.polygene.tools.model.descriptor;
 
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.entity.EntityDescriptor;
 import org.apache.polygene.api.util.Visitable;
 import org.apache.polygene.api.util.Visitor;
@@ -26,8 +27,7 @@ import org.apache.polygene.api.util.Visitor;
 /**
  * Entity Detail Descriptor.
  */
-public final class EntityDetailDescriptor
-    extends CompositeDetailDescriptor<EntityDescriptor>
+public final class EntityDetailDescriptor extends 
CompositeDetailDescriptor<EntityDescriptor>
     implements Visitable<EntityDetailDescriptor>
 {
     EntityDetailDescriptor( EntityDescriptor aDescriptor )
@@ -41,4 +41,10 @@ public final class EntityDetailDescriptor
     {
         return visitor.visit( this );
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = super.toJson();
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ImportedServiceCompositeDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ImportedServiceCompositeDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ImportedServiceCompositeDescriptor.java
index 629a6fd..a87cd08 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ImportedServiceCompositeDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ImportedServiceCompositeDescriptor.java
@@ -22,6 +22,9 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.stream.Stream;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.composite.CompositeDescriptor;
 import org.apache.polygene.api.service.ImportedServiceDescriptor;
@@ -100,4 +103,18 @@ public class ImportedServiceCompositeDescriptor
     {
         return Classes.toURI( primaryType() );
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "name", importedService().type().getName() );
+        builder.add( "visibility", importedService().visibility().name() );
+        builder.add( "importer", importedService().serviceImporter().getName() 
);
+        {
+            JsonArrayBuilder typesBuilder = Json.createArrayBuilder();
+            importedService().types().forEach( type -> typesBuilder.add( 
type.getName() ) );
+            builder.add( "types", typesBuilder );
+        }
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ImportedServiceDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ImportedServiceDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ImportedServiceDetailDescriptor.java
index 7f64a79..67ae962 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ImportedServiceDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ImportedServiceDetailDescriptor.java
@@ -22,6 +22,9 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.util.HierarchicalVisitor;
 import org.apache.polygene.api.util.VisitableHierarchy;
 
@@ -71,4 +74,15 @@ public class ImportedServiceDetailDescriptor
         }
         return visitor.visitLeave( this );
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = super.toJson();
+        {
+            JsonArrayBuilder activatorsBuilder = Json.createArrayBuilder();
+            activators().forEach( activator -> activatorsBuilder.add( 
activator.toJson() ) );
+            builder.add( "activators", activatorsBuilder.build() );
+        }
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedFieldDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedFieldDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedFieldDetailDescriptor.java
index b1a635c..4645e45 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedFieldDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedFieldDetailDescriptor.java
@@ -20,6 +20,8 @@
 package org.apache.polygene.tools.model.descriptor;
 
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.composite.InjectedFieldDescriptor;
 
 public final class InjectedFieldDetailDescriptor
@@ -126,4 +128,11 @@ public final class InjectedFieldDetailDescriptor
         return descriptor.field().getName();
     }
 
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "name", descriptor().field().getName() );
+        builder.add( "type", descriptor().field().getType().getName() );
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedMethodDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedMethodDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedMethodDetailDescriptor.java
index a7e6fe7..29ad80e 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedMethodDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedMethodDetailDescriptor.java
@@ -20,6 +20,8 @@
 package org.apache.polygene.tools.model.descriptor;
 
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.composite.InjectedMethodDescriptor;
 
 
@@ -140,4 +142,10 @@ public final class InjectedMethodDetailDescriptor
         methodConcern = descriptor;
     }
 
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "name", descriptor().method().getName() );
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedParametersDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedParametersDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedParametersDetailDescriptor.java
index 33d4b45..beef9fb 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedParametersDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/InjectedParametersDetailDescriptor.java
@@ -20,6 +20,8 @@
 package org.apache.polygene.tools.model.descriptor;
 
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.composite.InjectedParametersDescriptor;
 
 public class InjectedParametersDetailDescriptor
@@ -69,17 +71,32 @@ public class InjectedParametersDetailDescriptor
         return method;
     }
 
-    final void setConstructor( ConstructorDetailDescriptor aDescriptor )
+    final void setConstructor( ConstructorDetailDescriptor 
constructorDescriptor )
         throws IllegalArgumentException
     {
-        Objects.requireNonNull( aDescriptor, "aDescriptor" );
-        constructor = aDescriptor;
+        Objects.requireNonNull( constructorDescriptor, "constructorDescriptor" 
);
+        constructor = constructorDescriptor;
     }
 
-    final void setMethod( InjectedMethodDetailDescriptor aDescriptor )
+    final void setMethod( InjectedMethodDetailDescriptor methodDescriptor )
         throws IllegalArgumentException
     {
-        Objects.requireNonNull( aDescriptor, "aDescriptor" );
-        method = aDescriptor;
+        Objects.requireNonNull( methodDescriptor, "methodDescriptor" );
+        method = methodDescriptor;
+    }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        if( method != null )
+        {
+            builder.add( "method", method().toJson() );
+        }
+        if( constructor != null )
+        {
+            builder.add( "constructor", constructor().toJson() );
+        }
+        return builder;
     }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/LayerDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/LayerDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/LayerDetailDescriptor.java
index e312701..d96f12d 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/LayerDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/LayerDetailDescriptor.java
@@ -22,6 +22,10 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.structure.LayerDescriptor;
 import org.apache.polygene.api.util.HierarchicalVisitor;
 import org.apache.polygene.api.util.VisitableHierarchy;
@@ -160,4 +164,29 @@ public final class LayerDetailDescriptor
     {
         return descriptor.name();
     }
+
+    public JsonObject toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "name", descriptor().name() );
+        {
+            JsonArrayBuilder modulesBuilder = Json.createArrayBuilder();
+            modules().forEach( module -> modulesBuilder.add( module.toJson() ) 
);
+            builder.add( "modules", modulesBuilder.build() );
+        }
+
+        {
+            JsonArrayBuilder usedLayersBuilder = Json.createArrayBuilder();
+            usedLayers().forEach( layer -> usedLayersBuilder.add( 
layer.descriptor().name() ) );
+            builder.add( "usedLayers", usedLayersBuilder.build() );
+        }
+
+        {
+            JsonArrayBuilder activatorsBuilder = Json.createArrayBuilder();
+            activators().forEach( activator -> activatorsBuilder.add( 
activator.toJson() ) );
+            builder.add( "activators", activatorsBuilder.build() );
+        }
+
+        return builder.build();
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConcernDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConcernDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConcernDetailDescriptor.java
index 82a6264..62a332d 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConcernDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConcernDetailDescriptor.java
@@ -22,6 +22,9 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.concern.ConcernDescriptor;
 
 public final class MethodConcernDetailDescriptor
@@ -138,4 +141,29 @@ public final class MethodConcernDetailDescriptor
         aDescriptor.setMethodConcern( this );
         injectedFields.add( aDescriptor );
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "fragment", descriptor().modifierClass().getName() );
+        JsonObjectBuilder injectionBuilder = Json.createObjectBuilder();
+        {
+            JsonArrayBuilder constructorsBuilder = Json.createArrayBuilder();
+            constructors().forEach( constructor -> constructorsBuilder.add( 
constructor.toJson() ) );
+            builder.add( "constructors", constructorsBuilder );
+        }
+        builder.add( "injection", injectionBuilder );
+        {
+            JsonArrayBuilder injectedFieldsBuilder = Json.createArrayBuilder();
+            injectedFields().forEach( field -> injectedFieldsBuilder.add( 
field.toJson() ) );
+            injectionBuilder.add( "fields", injectedFieldsBuilder );
+        }
+        {
+            JsonArrayBuilder injectedMethodsBuilder = 
Json.createArrayBuilder();
+            injectedMethods().forEach( method -> injectedMethodsBuilder.add( 
method.toJson() ) );
+            injectionBuilder.add( "methods", injectedMethodsBuilder );
+        }
+
+        return builder;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConcernsDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConcernsDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConcernsDetailDescriptor.java
index 0d644b5..f10972d 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConcernsDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConcernsDetailDescriptor.java
@@ -22,6 +22,9 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.concern.ConcernsDescriptor;
 
 public final class MethodConcernsDetailDescriptor
@@ -82,4 +85,15 @@ public final class MethodConcernsDetailDescriptor
         aDescriptor.setConcerns( this );
         concerns.add( aDescriptor );
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        {
+            JsonArrayBuilder concernsBuilder = Json.createArrayBuilder();
+            concerns().forEach( concern -> concernsBuilder.add( 
concern.toJson() ) );
+            builder.add( "concerns", concernsBuilder );
+        }
+        return builder;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConstraintDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConstraintDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConstraintDetailDescriptor.java
index 7dc3102..6550b82 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConstraintDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConstraintDetailDescriptor.java
@@ -20,6 +20,8 @@
 package org.apache.polygene.tools.model.descriptor;
 
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.constraint.ConstraintDescriptor;
 
 public final class MethodConstraintDetailDescriptor
@@ -67,4 +69,11 @@ public final class MethodConstraintDetailDescriptor
         Objects.requireNonNull( aDescriptor, "aDescriptor" );
         constraints = aDescriptor;
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+
+        return builder;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConstraintsDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConstraintsDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConstraintsDetailDescriptor.java
index 8b0f6cd..d8eadd3 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConstraintsDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodConstraintsDetailDescriptor.java
@@ -22,6 +22,7 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.constraint.ConstraintsDescriptor;
 
 public final class MethodConstraintsDetailDescriptor
@@ -83,4 +84,9 @@ public final class MethodConstraintsDetailDescriptor
         aDescriptor.setConstraints( this );
         constraints.add( aDescriptor );
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        return null;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodSideEffectDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodSideEffectDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodSideEffectDetailDescriptor.java
index 484e031..b727a2e 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodSideEffectDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodSideEffectDetailDescriptor.java
@@ -22,6 +22,9 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.sideeffect.SideEffectDescriptor;
 
 public final class MethodSideEffectDetailDescriptor
@@ -135,4 +138,28 @@ public final class MethodSideEffectDetailDescriptor
         aDescriptor.setMethodSideEffect( this );
         injectedFields.add( aDescriptor );
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "fragment", descriptor().modifierClass().getName() );
+        JsonObjectBuilder injectionBuilder = Json.createObjectBuilder();
+        {
+            JsonArrayBuilder constructorsBuilder = Json.createArrayBuilder();
+            constructors().forEach( constructor -> constructorsBuilder.add( 
constructor.toJson() ) );
+            builder.add( "constructors", constructorsBuilder );
+        }
+        builder.add( "injection", injectionBuilder );
+        {
+            JsonArrayBuilder injectedFieldsBuilder = Json.createArrayBuilder();
+            injectedFields().forEach( field -> injectedFieldsBuilder.add( 
field.toJson() ) );
+            injectionBuilder.add( "fields", injectedFieldsBuilder );
+        }
+        {
+            JsonArrayBuilder injectedMethodsBuilder = 
Json.createArrayBuilder();
+            injectedMethods().forEach( method -> injectedMethodsBuilder.add( 
method.toJson() ) );
+            injectionBuilder.add( "methods", injectedMethodsBuilder );
+        }
+        return builder;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodSideEffectsDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodSideEffectsDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodSideEffectsDetailDescriptor.java
index 9be166b..4648f03 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodSideEffectsDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MethodSideEffectsDetailDescriptor.java
@@ -22,6 +22,8 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
 import org.apache.polygene.api.sideeffect.SideEffectsDescriptor;
 
 public final class MethodSideEffectsDetailDescriptor
@@ -84,4 +86,11 @@ public final class MethodSideEffectsDetailDescriptor
         aDescriptor.setSideEffects( aDescriptor );
         sideEffects.add( aDescriptor );
     }
+
+    public JsonArrayBuilder toJson()
+    {
+        JsonArrayBuilder builder = Json.createArrayBuilder();
+        sideEffects().forEach( sideeffect -> sideeffect.toJson() );
+        return builder;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MixinDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MixinDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MixinDetailDescriptor.java
index 544efdb..7f4e6d5 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MixinDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/MixinDetailDescriptor.java
@@ -22,6 +22,9 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.mixin.MixinDescriptor;
 
 public final class MixinDetailDescriptor
@@ -133,4 +136,29 @@ public final class MixinDetailDescriptor
     {
         return descriptor.mixinClass().getSimpleName();
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "mixin", descriptor().mixinClass().getName() );
+        JsonObjectBuilder injectionBuilder = Json.createObjectBuilder();
+        {
+            JsonArrayBuilder constructorsBuilder = Json.createArrayBuilder();
+            constructors().forEach( constructor -> constructorsBuilder.add( 
constructor.toJson() ) );
+            builder.add( "constructors", constructorsBuilder );
+        }
+        builder.add( "injection", injectionBuilder );
+        {
+            JsonArrayBuilder injectedFieldsBuilder = Json.createArrayBuilder();
+            injectedFields().forEach( field -> injectedFieldsBuilder.add( 
field.toJson() ) );
+            injectionBuilder.add( "fields", injectedFieldsBuilder );
+        }
+        {
+            JsonArrayBuilder injectedMethodsBuilder = 
Json.createArrayBuilder();
+            injectedMethods().forEach( method -> injectedMethodsBuilder.add( 
method.toJson() ) );
+            injectionBuilder.add( "methods", injectedMethodsBuilder );
+        }
+
+        return builder;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ModuleDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ModuleDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ModuleDetailDescriptor.java
index d956b13..cf6a65d 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ModuleDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ModuleDetailDescriptor.java
@@ -22,6 +22,10 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.api.util.HierarchicalVisitor;
 import org.apache.polygene.api.util.VisitableHierarchy;
@@ -241,4 +245,21 @@ public final class ModuleDetailDescriptor
     {
         return descriptor.name();
     }
+
+    public JsonObject toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "name", descriptor.name() );
+        {
+            JsonArrayBuilder servicesBuilder = Json.createArrayBuilder();
+            services().forEach( service -> servicesBuilder.add( 
service.toJson() ) );
+            builder.add( "services", servicesBuilder.build() );
+        }
+        {
+            JsonArrayBuilder activatorsBuilder = Json.createArrayBuilder();
+            activators().forEach( activator -> activatorsBuilder.add( 
activator.toJson() ) );
+            builder.add( "activators", activatorsBuilder.build() );
+        }
+        return builder.build();
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ObjectDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ObjectDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ObjectDetailDescriptor.java
index 7c90e58..cd380ca 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ObjectDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ObjectDetailDescriptor.java
@@ -22,6 +22,9 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.object.ObjectDescriptor;
 import org.apache.polygene.api.util.Visitable;
 import org.apache.polygene.api.util.Visitor;
@@ -126,4 +129,29 @@ public final class ObjectDetailDescriptor
     {
         return descriptor.toString();
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "visibility", descriptor().visibility().name() );
+        JsonObjectBuilder injectionBuilder = Json.createObjectBuilder();
+        {
+            JsonArrayBuilder constructorsBuilder = Json.createArrayBuilder();
+            constructors().forEach( constructor -> constructorsBuilder.add( 
constructor.toJson() ) );
+            builder.add( "constructors", constructorsBuilder );
+        }
+        builder.add( "injection", injectionBuilder );
+        {
+            JsonArrayBuilder injectedFieldsBuilder = Json.createArrayBuilder();
+            injectedFields().forEach( field -> injectedFieldsBuilder.add( 
field.toJson() ) );
+            injectionBuilder.add( "fields", injectedFieldsBuilder );
+        }
+        {
+            JsonArrayBuilder injectedMethodsBuilder = 
Json.createArrayBuilder();
+            injectedMethods().forEach( method -> injectedMethodsBuilder.add( 
method.toJson() ) );
+            injectionBuilder.add( "methods", injectedMethodsBuilder );
+        }
+
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ServiceDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ServiceDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ServiceDetailDescriptor.java
index c2ab9f3..0e3c1da 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ServiceDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ServiceDetailDescriptor.java
@@ -22,6 +22,7 @@ package org.apache.polygene.tools.model.descriptor;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.service.ServiceDescriptor;
 import org.apache.polygene.api.util.HierarchicalVisitor;
@@ -96,4 +97,10 @@ public final class ServiceDetailDescriptor
         }
         return visitor.visitLeave( this );
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = super.toJson();
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ServiceUsage.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ServiceUsage.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ServiceUsage.java
index 2504138..69644f5 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ServiceUsage.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ServiceUsage.java
@@ -19,6 +19,9 @@
  */
 package org.apache.polygene.tools.model.descriptor;
 
+import javax.json.Json;
+import javax.json.JsonObjectBuilder;
+
 public final class ServiceUsage
 {
 
@@ -58,4 +61,18 @@ public final class ServiceUsage
         return layer;
     }
 
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add( "layer", layer().toString() );
+        if( ownerDescriptor() instanceof CompositeDetailDescriptor )
+        {
+            builder.add( "composite", ( (CompositeDetailDescriptor) 
ownerDescriptor() ).toJson() );
+        }
+        if( ownerDescriptor() instanceof ObjectDetailDescriptor )
+        {
+            builder.add( "object", ( (ObjectDetailDescriptor) 
ownerDescriptor() ).toJson() );
+        }
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/TransientDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/TransientDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/TransientDetailDescriptor.java
index e66087a..bf1c4d2 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/TransientDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/TransientDetailDescriptor.java
@@ -19,6 +19,7 @@
  */
 package org.apache.polygene.tools.model.descriptor;
 
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.composite.TransientDescriptor;
 import org.apache.polygene.api.util.Visitable;
 import org.apache.polygene.api.util.Visitor;
@@ -41,4 +42,10 @@ public class TransientDetailDescriptor
     {
         return visitor.visit( this );
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = super.toJson();
+        return builder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ValueDetailDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ValueDetailDescriptor.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ValueDetailDescriptor.java
index 3e2dbe5..06919e9 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ValueDetailDescriptor.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/ValueDetailDescriptor.java
@@ -19,9 +19,10 @@
  */
 package org.apache.polygene.tools.model.descriptor;
 
-import org.apache.polygene.api.value.ValueDescriptor;
+import javax.json.JsonObjectBuilder;
 import org.apache.polygene.api.util.Visitable;
 import org.apache.polygene.api.util.Visitor;
+import org.apache.polygene.api.value.ValueDescriptor;
 
 /**
  * Value Detail Descriptor.
@@ -41,4 +42,11 @@ public class ValueDetailDescriptor
     {
         return visitor.visit( this );
     }
+
+    public JsonObjectBuilder toJson()
+    {
+        JsonObjectBuilder builder = super.toJson();
+        return builder;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/package.html
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/package.html
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/package.html
index 29e572d..3b9d45c 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/package.html
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/descriptor/package.html
@@ -19,6 +19,6 @@
   -->
 <html>
     <body>
-        <h2>Detailled Application Model Descriptors.</h2>
+    <h2>Detailed Application Model Descriptors.</h2>
     </body>
 </html>

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/util/APIFinder.java
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/util/APIFinder.java
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/util/APIFinder.java
index 6035836..75e312f 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/util/APIFinder.java
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/util/APIFinder.java
@@ -34,7 +34,7 @@ class APIFinder
 
     public List<ServiceDetailDescriptor> findModuleAPI( ModuleDetailDescriptor 
descriptor )
     {
-        ArrayList<ServiceDetailDescriptor> list = new 
ArrayList<ServiceDetailDescriptor>();
+        ArrayList<ServiceDetailDescriptor> list = new ArrayList<>();
 
         for( ServiceDetailDescriptor serviceDetailDescriptor : 
descriptor.services() )
         {
@@ -46,7 +46,7 @@ class APIFinder
 
     public List<ServiceDetailDescriptor> findLayerAPI( LayerDetailDescriptor 
descriptor )
     {
-        ArrayList<ServiceDetailDescriptor> list = new 
ArrayList<ServiceDetailDescriptor>();
+        ArrayList<ServiceDetailDescriptor> list = new ArrayList<>();
 
         for( ModuleDetailDescriptor moduleDetailDescriptor : 
descriptor.modules() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/6fa99a1d/tools/model-detail/src/main/java/org/apache/polygene/tools/model/util/package.html
----------------------------------------------------------------------
diff --git 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/util/package.html
 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/util/package.html
index da040d9..1f7164f 100644
--- 
a/tools/model-detail/src/main/java/org/apache/polygene/tools/model/util/package.html
+++ 
b/tools/model-detail/src/main/java/org/apache/polygene/tools/model/util/package.html
@@ -19,6 +19,6 @@
   -->
 <html>
     <body>
-        <h2>Detailled Application Model Utilities.</h2>
+    <h2>Detailed Application Model Utilities.</h2>
     </body>
 </html>

Reply via email to