You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2016/08/27 09:26:15 UTC

[1/2] zest-java git commit: ZEST-158, ZEST-171 - Fixing for Geode ES generation.

Repository: zest-java
Updated Branches:
  refs/heads/develop bc55a577d -> 6cafbfa36


 ZEST-158, ZEST-171 - Fixing for Geode ES generation.


Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/55ebd81a
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/55ebd81a
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/55ebd81a

Branch: refs/heads/develop
Commit: 55ebd81ae79ce4001e794520c3168b1b29bb35c8
Parents: bc55a57
Author: Niclas Hedhman <ni...@hedhman.org>
Authored: Sat Aug 27 14:31:46 2016 +0800
Committer: Niclas Hedhman <ni...@hedhman.org>
Committed: Sat Aug 27 14:31:46 2016 +0800

----------------------------------------------------------------------
 tools/generator-zest/app/index.js               | 36 ++++++-------
 .../templates/FileStorageModule/bootstrap.tmpl  | 53 --------------------
 .../app/templates/StorageModule/bootstrap.tmpl  | 53 ++++++++++++++++++++
 .../templates/buildtool/gradle-bootstrap.tmpl   |  8 +--
 .../app/templates/buildtool/settings.tmpl       |  2 +-
 5 files changed, 75 insertions(+), 77 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-java/blob/55ebd81a/tools/generator-zest/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/index.js b/tools/generator-zest/app/index.js
index 4935e0e..3a127c9 100644
--- a/tools/generator-zest/app/index.js
+++ b/tools/generator-zest/app/index.js
@@ -155,18 +155,7 @@ module.exports = generators.Base.extend(
 
             copyZestBootstrap( this, "infrastructure", "FileConfigurationModule", true );
 
-            copyZestBootstrap( this, "infrastructure", "FileStorageModule", hasEntityStore( 'File' ) );
-            copyZestBootstrap( this, "infrastructure", "GeodeStorageModule", hasEntityStore( 'Geode' ) );
-            copyZestBootstrap( this, "infrastructure", "HazelcastStorageModule", hasEntityStore( 'Hazelcast' ) );
-            copyZestBootstrap( this, "infrastructure", "JCloudsStorageModule", hasEntityStore( 'Jclouds' ) );
-            copyZestBootstrap( this, "infrastructure", "JdbmStorageModule", hasEntityStore( 'Jdbm' ) );
-            copyZestBootstrap( this, "infrastructure", "LevelDbStorageModule", hasEntityStore( 'Leveldb' ) );
-            copyZestBootstrap( this, "infrastructure", "InMemoryStorageModule", hasEntityStore( 'Memory' ) );
-            copyZestBootstrap( this, "infrastructure", "MongoDbStorageModule", hasEntityStore( 'Mongodb' ) );
-            copyZestBootstrap( this, "infrastructure", "PreferencesStorageModule", hasEntityStore( 'Preferences' ) );
-            copyZestBootstrap( this, "infrastructure", "RedisStorageModule", hasEntityStore( 'Redis' ) );
-            copyZestBootstrap( this, "infrastructure", "RiakStorageModule", hasEntityStore( 'Riak' ) );
-            copyZestBootstrap( this, "infrastructure", "SqlStorageModule", hasEntityStore( 'Sql' ) );
+            copyEntityStore( this, zest.entitystore );
 
             copyZestBootstrap( this, "infrastructure", "RdfIndexingModule", hasIndexing( 'Rdf' ) );
             copyZestBootstrap( this, "infrastructure", "ElasticSearchIndexingModule", hasIndexing( 'Elasticsearch' ) );
@@ -193,14 +182,14 @@ module.exports = generators.Base.extend(
 
             copyRestFeature( this, hasFeature( 'rest api' ) );
 
-            this.fs.copyTpl( this.templatePath( 'buildtool/gradle-app.tmpl' ), this.destinationPath( 'app/build.gradle' ), {} );
-            this.fs.copyTpl( this.templatePath( 'buildtool/gradle-bootstrap.tmpl' ), this.destinationPath( 'bootstrap/build.gradle' ), {} );
-            this.fs.copyTpl( this.templatePath( 'buildtool/gradle-model.tmpl' ), this.destinationPath( 'model/build.gradle' ), {} );
-            this.fs.copyTpl( this.templatePath( 'buildtool/gradle-rest.tmpl' ), this.destinationPath( 'rest/build.gradle' ), {} );
-            this.fs.copyTpl( this.templatePath( 'buildtool/gradle-root.tmpl' ), this.destinationPath( 'build.gradle' ), {} );
-            this.fs.copyTpl( this.templatePath( 'buildtool/settings.tmpl' ), this.destinationPath( 'settings.gradle' ), {projectName: zest.name} );
-            this.fs.copyTpl( this.templatePath( 'buildtool/gradlew.tmpl' ), this.destinationPath( 'gradlew' ), {} );
-            this.fs.copyTpl( this.templatePath( 'buildtool/gradlew-bat.tmpl' ), this.destinationPath( 'gradlew.bat' ), {} );
+            copyTemplate( this, 'buildtool/gradle-app.tmpl', 'app/build.gradle' );
+            copyTemplate( this, 'buildtool/gradle-bootstrap.tmpl', 'bootstrap/build.gradle' );
+            copyTemplate( this, 'buildtool/gradle-model.tmpl', 'model/build.gradle' );
+            copyTemplate( this, 'buildtool/gradle-rest.tmpl', 'rest/build.gradle' );
+            copyTemplate( this, 'buildtool/gradle-root.tmpl', 'build.gradle' );
+            copyTemplate( this, 'buildtool/settings.tmpl', 'settings.gradle' );
+            copyTemplate( this, 'buildtool/gradlew.tmpl', 'gradlew' );
+            copyTemplate( this, 'buildtool/gradlew-bat.tmpl', 'gradlew.bat' );
             this.fs.copy( this.templatePath( 'buildtool/gradle-wrapper.jar_' ), this.destinationPath( 'gradle/wrapper/gradle-wrapper.jar' ) );
             this.fs.copy( this.templatePath( 'buildtool/gradle-wrapper.properties_' ), this.destinationPath( 'gradle/wrapper/gradle-wrapper.properties' ) );
         }
@@ -217,6 +206,13 @@ function copyZestBootstrap( ctx, layer, moduleName, condition )
     }
 }
 
+function copyEntityStore( ctx, entityStoreName )
+{
+    copyTemplate( ctx,
+                  'StorageModule/bootstrap.tmpl',
+                  'bootstrap/src/main/java/' + zest.javaPackageDir + '/bootstrap/infrastructure/' + entityStoreName + 'StorageModule.java' );
+}
+
 function copyZestApp( ctx, name, condition )
 {
     if( condition )

http://git-wip-us.apache.org/repos/asf/zest-java/blob/55ebd81a/tools/generator-zest/app/templates/FileStorageModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/FileStorageModule/bootstrap.tmpl b/tools/generator-zest/app/templates/FileStorageModule/bootstrap.tmpl
deleted file mode 100644
index 0f71243..0000000
--- a/tools/generator-zest/app/templates/FileStorageModule/bootstrap.tmpl
+++ /dev/null
@@ -1,53 +0,0 @@
-<%#
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
--%>
-package <%= packageName %>.bootstrap.infrastructure;
-
-import org.apache.zest.api.common.Visibility;
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.bootstrap.layered.ModuleAssembler;
-import org.apache.zest.entitystore.file.assembly.FileEntityStoreAssembler;
-
-public class FileStorageModule
-    implements ModuleAssembler
-{
-    public static final String NAME = "File Storage Module";
-    private final ModuleAssembly configModule;
-
-    public FileStorageModule( ModuleAssembly configModule )
-    {
-        this.configModule = configModule;
-    }
-
-    @Override
-    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
-        throws AssemblyException
-    {
-        module.withDefaultUnitOfWorkFactory();
-
-        new FileEntityStoreAssembler()
-            .visibleIn( Visibility.application  )
-            .withConfig( configModule, Visibility.application )
-            .identifiedBy( "filestore" )
-            .assemble( module );
-        return module;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/55ebd81a/tools/generator-zest/app/templates/StorageModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/StorageModule/bootstrap.tmpl b/tools/generator-zest/app/templates/StorageModule/bootstrap.tmpl
new file mode 100644
index 0000000..a9a47d2
--- /dev/null
+++ b/tools/generator-zest/app/templates/StorageModule/bootstrap.tmpl
@@ -0,0 +1,53 @@
+<%#
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+-%>
+package <%= packageName %>.bootstrap.infrastructure;
+
+import org.apache.zest.api.common.Visibility;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+import org.apache.zest.entitystore.<%- zest.entitystore.toLowerCase() %>.assembly.<%- zest.entitystore %>EntityStoreAssembler;
+
+public class <%- zest.entitystore %>StorageModule
+    implements ModuleAssembler
+{
+    public static final String NAME = "<%- zest.entitystore %> Storage Module";
+    private final ModuleAssembly configModule;
+
+    public <%- zest.entitystore %>StorageModule( ModuleAssembly configModule )
+    {
+        this.configModule = configModule;
+    }
+
+    @Override
+    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+        throws AssemblyException
+    {
+        module.withDefaultUnitOfWorkFactory();
+
+        new <%- zest.entitystore %>EntityStoreAssembler()
+            .visibleIn( Visibility.application  )
+            .withConfig( configModule, Visibility.application )
+            .identifiedBy( "<%- zest.entitystore %>store" )
+            .assemble( module );
+        return module;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/55ebd81a/tools/generator-zest/app/templates/buildtool/gradle-bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/buildtool/gradle-bootstrap.tmpl b/tools/generator-zest/app/templates/buildtool/gradle-bootstrap.tmpl
index 7fb8ef9..ce9965a 100644
--- a/tools/generator-zest/app/templates/buildtool/gradle-bootstrap.tmpl
+++ b/tools/generator-zest/app/templates/buildtool/gradle-bootstrap.tmpl
@@ -26,9 +26,11 @@ dependencies {
 
 
   compile "org.apache.zest.library:org.apache.zest.library.fileconfig:$zestVersion"
+<% if( hasFeature( 'rest api' ) ) { %>
   compile "org.apache.zest.library:org.apache.zest.library.restlet:$zestVersion"
-  compile "org.apache.zest.extension:org.apache.zest.extension.entitystore-file:$zestVersion"
-  compile "org.apache.zest.extension:org.apache.zest.extension.indexing-rdf:$zestVersion"
-  compile "org.apache.zest.extension:org.apache.zest.extension.valueserialization-jackson:$zestVersion"
+<% } %>
+  compile "org.apache.zest.extension:org.apache.zest.extension.entitystore-<%= zest.entitystore.toLowerCase() %>:$zestVersion"
+  compile "org.apache.zest.extension:org.apache.zest.extension.indexing-<%= zest.indexing.toLowerCase() %>:$zestVersion"
+  compile "org.apache.zest.extension:org.apache.zest.extension.valueserialization-<%= zest.serialization.toLowerCase() %>:$zestVersion"
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/55ebd81a/tools/generator-zest/app/templates/buildtool/settings.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/buildtool/settings.tmpl b/tools/generator-zest/app/templates/buildtool/settings.tmpl
index 467ad09..a5c128d 100644
--- a/tools/generator-zest/app/templates/buildtool/settings.tmpl
+++ b/tools/generator-zest/app/templates/buildtool/settings.tmpl
@@ -22,7 +22,7 @@ include 'app',
         'model',
         'rest'
 
-rootProject.name = '<%= projectName %>'
+rootProject.name = '<%= zest.entitystore %>'
 
 validateProject(rootProject, "")
 


[2/2] zest-java git commit: ZEST-158, ZEST-162 - Fixing for JClouds ES generation, triggering new strategy. Also, noticed that the heroes webapp was missing.

Posted by ni...@apache.org.
 ZEST-158, ZEST-162 - Fixing for JClouds ES generation, triggering new strategy. Also, noticed that the heroes webapp was missing.


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

Branch: refs/heads/develop
Commit: 6cafbfa36cef3966b762663cdc248f800662951c
Parents: 55ebd81
Author: Niclas Hedhman <ni...@hedhman.org>
Authored: Sat Aug 27 17:26:00 2016 +0800
Committer: Niclas Hedhman <ni...@hedhman.org>
Committed: Sat Aug 27 17:26:00 2016 +0800

----------------------------------------------------------------------
 .../jclouds/JCloudsMapEntityStoreAssembler.java | 49 -------------------
 .../assembly/JCloudsEntityStoreAssembler.java   | 51 ++++++++++++++++++++
 .../jclouds/JCloudsFilesystemTest.java          |  3 +-
 .../jclouds/JCloudsTransientTest.java           |  3 +-
 .../jclouds/JCloudsWithCacheTest.java           |  3 +-
 tools/generator-zest/app/index.js               | 42 ++++++++--------
 .../Heroes/webapp/app/app.component.js          | 41 ++++++++++++++++
 .../Heroes/webapp/app/app.component.js.map      |  1 +
 .../Heroes/webapp/app/dashboard.component.js    | 38 +++++++++++++++
 .../webapp/app/dashboard.component.js.map       |  1 +
 .../Heroes/webapp/app/hero-detail.component.js  | 37 ++++++++++++++
 .../webapp/app/hero-detail.component.js.map     |  1 +
 .../app/templates/Heroes/webapp/app/hero.js     | 13 +++++
 .../app/templates/Heroes/webapp/app/hero.js.map |  1 +
 .../templates/Heroes/webapp/app/hero.service.js | 30 ++++++++++++
 .../Heroes/webapp/app/hero.service.js.map       |  1 +
 .../Heroes/webapp/app/heroes.component.js       | 42 ++++++++++++++++
 .../Heroes/webapp/app/heroes.component.js.map   |  1 +
 .../app/templates/Heroes/webapp/app/main.js     | 15 ++++++
 .../app/templates/Heroes/webapp/app/main.js.map |  1 +
 .../templates/Heroes/webapp/app/mock-heroes.js  | 19 ++++++++
 .../Heroes/webapp/app/mock-heroes.js.map        |  1 +
 22 files changed, 319 insertions(+), 75 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/JCloudsMapEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/JCloudsMapEntityStoreAssembler.java b/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/JCloudsMapEntityStoreAssembler.java
deleted file mode 100644
index 7300d32..0000000
--- a/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/JCloudsMapEntityStoreAssembler.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.zest.entitystore.jclouds;
-
-import org.apache.zest.bootstrap.Assemblers;
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.bootstrap.ServiceDeclaration;
-import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
-
-public class JCloudsMapEntityStoreAssembler
-    extends Assemblers.VisibilityIdentityConfig<JCloudsMapEntityStoreAssembler>
-{
-    @Override
-    public void assemble( ModuleAssembly module )
-        throws AssemblyException
-    {
-        module.services( UuidIdentityGeneratorService.class );
-        ServiceDeclaration service = module.services( JCloudsMapEntityStoreService.class ).
-            visibleIn( visibility() ).
-            instantiateOnStartup();
-        if( hasIdentity() )
-        {
-            service.identifiedBy( identity() );
-        }
-        if( hasConfig() )
-        {
-            configModule().entities( JCloudsMapEntityStoreConfiguration.class ).visibleIn( configVisibility() );
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/assembly/JCloudsEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/assembly/JCloudsEntityStoreAssembler.java b/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/assembly/JCloudsEntityStoreAssembler.java
new file mode 100644
index 0000000..4c029d8
--- /dev/null
+++ b/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/assembly/JCloudsEntityStoreAssembler.java
@@ -0,0 +1,51 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+
+package org.apache.zest.entitystore.jclouds.assembly;
+
+import org.apache.zest.bootstrap.Assemblers;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.bootstrap.ServiceDeclaration;
+import org.apache.zest.entitystore.jclouds.JCloudsMapEntityStoreConfiguration;
+import org.apache.zest.entitystore.jclouds.JCloudsMapEntityStoreService;
+import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
+
+public class JCloudsEntityStoreAssembler
+    extends Assemblers.VisibilityIdentityConfig<JCloudsEntityStoreAssembler>
+{
+    @Override
+    public void assemble( ModuleAssembly module )
+        throws AssemblyException
+    {
+        module.services( UuidIdentityGeneratorService.class );
+        ServiceDeclaration service = module.services( JCloudsMapEntityStoreService.class ).
+            visibleIn( visibility() ).
+            instantiateOnStartup();
+        if( hasIdentity() )
+        {
+            service.identifiedBy( identity() );
+        }
+        if( hasConfig() )
+        {
+            configModule().entities( JCloudsMapEntityStoreConfiguration.class ).visibleIn( configVisibility() );
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsFilesystemTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsFilesystemTest.java b/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsFilesystemTest.java
index e5f7a5c..08a1499 100644
--- a/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsFilesystemTest.java
+++ b/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsFilesystemTest.java
@@ -22,6 +22,7 @@ package org.apache.zest.entitystore.jclouds;
 
 import java.util.HashMap;
 import java.util.Map;
+import org.apache.zest.entitystore.jclouds.assembly.JCloudsEntityStoreAssembler;
 import org.jclouds.filesystem.reference.FilesystemConstants;
 import org.junit.AfterClass;
 import org.apache.zest.api.common.Visibility;
@@ -43,7 +44,7 @@ public class JCloudsFilesystemTest
         ModuleAssembly config = module.layer().module( "config" );
         new EntityTestAssembler().assemble( config );
         new OrgJsonValueSerializationAssembler().assemble( module );
-        new JCloudsMapEntityStoreAssembler().withConfig( config, Visibility.layer ).assemble( module );
+        new JCloudsEntityStoreAssembler().withConfig( config, Visibility.layer ).assemble( module );
         JCloudsMapEntityStoreConfiguration defaults = config.forMixin( JCloudsMapEntityStoreConfiguration.class ).declareDefaults();
         defaults.provider().set( "filesystem" );
         Map<String, String> props = new HashMap<String, String>();

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsTransientTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsTransientTest.java b/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsTransientTest.java
index de1f589..5be4317 100644
--- a/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsTransientTest.java
+++ b/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsTransientTest.java
@@ -23,6 +23,7 @@ package org.apache.zest.entitystore.jclouds;
 import org.apache.zest.api.common.Visibility;
 import org.apache.zest.bootstrap.AssemblyException;
 import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.entitystore.jclouds.assembly.JCloudsEntityStoreAssembler;
 import org.apache.zest.test.EntityTestAssembler;
 import org.apache.zest.test.entity.AbstractEntityStoreTest;
 import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationAssembler;
@@ -40,7 +41,7 @@ public class JCloudsTransientTest
         new EntityTestAssembler().assemble( config );
         new OrgJsonValueSerializationAssembler().assemble( module );
         // START SNIPPET: assembly
-        new JCloudsMapEntityStoreAssembler().withConfig( config, Visibility.layer ).assemble( module );
+        new JCloudsEntityStoreAssembler().withConfig( config, Visibility.layer ).assemble( module );
         // END SNIPPET: assembly
     }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsWithCacheTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsWithCacheTest.java b/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsWithCacheTest.java
index df727ff..91ed5f7 100644
--- a/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsWithCacheTest.java
+++ b/extensions/entitystore-jclouds/src/test/java/org/apache/zest/entitystore/jclouds/JCloudsWithCacheTest.java
@@ -22,6 +22,7 @@ package org.apache.zest.entitystore.jclouds;
 import org.apache.zest.api.common.Visibility;
 import org.apache.zest.bootstrap.AssemblyException;
 import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.entitystore.jclouds.assembly.JCloudsEntityStoreAssembler;
 import org.apache.zest.test.EntityTestAssembler;
 import org.apache.zest.test.cache.AbstractEntityStoreWithCacheTest;
 import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationAssembler;
@@ -37,6 +38,6 @@ public class JCloudsWithCacheTest
         ModuleAssembly config = module.layer().module( "config" );
         new EntityTestAssembler().assemble( config );
         new OrgJsonValueSerializationAssembler().assemble( module );
-        new JCloudsMapEntityStoreAssembler().withConfig( config, Visibility.layer ).assemble( module );
+        new JCloudsEntityStoreAssembler().withConfig( config, Visibility.layer ).assemble( module );
     }
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/index.js b/tools/generator-zest/app/index.js
index 3a127c9..8aae5ef 100644
--- a/tools/generator-zest/app/index.js
+++ b/tools/generator-zest/app/index.js
@@ -61,18 +61,18 @@ module.exports = generators.Base.extend(
                         type: 'list',
                         name: 'entitystore',
                         choices: [
-                            'file',
-                            'geode',
-                            'hazelcast',
-                            'jclouds',
-                            'jdbm',
-                            'leveldb',
-                            'in-memory',
-                            'mongodb',
-                            'preferences',
-                            'redis',
-                            'riak',
-                            'sql'
+                            'File',
+                            'Geode',
+                            'Hazelcast',
+                            'JClouds',
+                            'JDBM',
+                            'LevelDB',
+                            'Memory',
+                            'MongoDB',
+                            'Preferences',
+                            'Redis',
+                            'Riak',
+                            'SQL'
                         ],
                         message: 'Which entity store do you want to use?'
                     },
@@ -80,10 +80,10 @@ module.exports = generators.Base.extend(
                         type: 'list',
                         name: 'indexing',
                         choices: [
-                            'rdf',
-                            'elasticsearch',
-                            'solr',
-                            'sql'
+                            'Rdf',
+                            'ElasticSearch',
+                            'Solr',
+                            'SQL'
                         ],
                         message: 'Which caching system do you want to use?'
                     },
@@ -101,9 +101,9 @@ module.exports = generators.Base.extend(
                         type: 'list',
                         name: 'serialization',
                         choices: [
-                            'jackson',
-                            'stax',
-                            'org.json'
+                            'Jackson',
+                            'Stax',
+                            'OrgJson'
                         ],
                         message: 'Which indexing system do you want to use?'
                     },
@@ -132,10 +132,6 @@ module.exports = generators.Base.extend(
                         zest = answers;
                         zest.javaPackageDir = zest.packagename.replace( '.', '/' );
                         zest.singletonApp = false;
-                        zest.entitystore = firstUpper( zest.entitystore );
-                        zest.indexing = firstUpper( zest.indexing );
-                        zest.caching = firstUpper( zest.caching );
-                        zest.serialization = firstUpper( zest.serialization );
                         if( hasFeature( 'sample (heroes) web application' ) )
                         {
                             zest.features.push( 'rest api' );

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/app.component.js
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/app.component.js b/tools/generator-zest/app/templates/Heroes/webapp/app/app.component.js
new file mode 100644
index 0000000..18aeea4
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/app.component.js
@@ -0,0 +1,41 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var core_1 = require('angular2/core');
+var router_1 = require('angular2/router');
+var heroes_component_1 = require('./heroes.component');
+var hero_detail_component_1 = require('./hero-detail.component');
+var dashboard_component_1 = require('./dashboard.component');
+var hero_service_1 = require('./hero.service');
+var AppComponent = (function () {
+    function AppComponent() {
+        this.title = 'Tour of Heroes';
+    }
+    AppComponent = __decorate([
+        core_1.Component({
+            selector: 'my-app',
+            template: "\n    <h1>{{title}}</h1>\n    <nav>\n      <a [routerLink]=\"['Dashboard']\">Dashboard</a>\n      <a [routerLink]=\"['Heroes']\">Heroes</a>\n    </nav>\n    <router-outlet></router-outlet>\n  ",
+            styleUrls: ['app/app.component.css'],
+            directives: [router_1.ROUTER_DIRECTIVES],
+            providers: [hero_service_1.HeroService]
+        }),
+        router_1.RouteConfig([
+            // {path: '/', redirectTo: ['Dashboard'] },
+            { path: '/dashboard', name: 'Dashboard', component: dashboard_component_1.DashboardComponent, useAsDefault: true },
+            { path: '/heroes', name: 'Heroes', component: heroes_component_1.HeroesComponent },
+            { path: '/detail/:id', name: 'HeroDetail', component: hero_detail_component_1.HeroDetailComponent }
+        ])
+    ], AppComponent);
+    return AppComponent;
+}());
+exports.AppComponent = AppComponent;
+/*
+Copyright 2016 Google Inc. All Rights Reserved.
+Use of this source code is governed by an MIT-style license that
+can be found in the LICENSE file at http://angular.io/license
+*/ 
+//# sourceMappingURL=app.component.js.map
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/app.component.js.map
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/app.component.js.map b/tools/generator-zest/app/templates/Heroes/webapp/app/app.component.js.map
new file mode 100644
index 0000000..bade57d
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/app.component.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;AAAA,qBAAwB,eAAe,CAAC,CAAA;AACxC,uBAA6C,iBAAiB,CAAC,CAAA;AAC/D,iCAA8B,oBAAoB,CAAC,CAAA;AACnD,sCAAkC,yBAAyB,CAAC,CAAA;AAC5D,oCAAiC,uBAAuB,CAAC,CAAA;AACzD,6BAA0B,gBAAgB,CAAC,CAAA;AAsB3C;IAAA;QACE,UAAK,GAAG,gBAAgB,CAAC;IAC3B,CAAC;IAtBD;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,kMAOT;YACD,SAAS,EAAE,CAAC,uBAAuB,CAAC;YACpC,UAAU,EAAE,CAAC,0BAAiB,CAAC;YAC/B,SAAS,EAAE,CAAC,0BAAW,CAAC;SACzB,CAAC;QACD,oBAAW,CAAC;YACX,2CAA2C;YAC3C,EAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,wCAAkB,EAAE,YAAY,EAAE,IAAI,EAAC;YAC1F,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kCAAe,EAAC;YAC7D,EAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,2CAAmB,EAAC;SAC1E,CAAC;oBAAA;IAGF,mBAAC;AAAD,CAAC,AAFD,IAEC;AAFY,oBAAY,eAExB,CAAA;AAGD;;;;EAIE"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/dashboard.component.js
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/dashboard.component.js b/tools/generator-zest/app/templates/Heroes/webapp/app/dashboard.component.js
new file mode 100644
index 0000000..9c69780
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/dashboard.component.js
@@ -0,0 +1,38 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var core_1 = require('angular2/core');
+var DashboardComponent = (function () {
+    function DashboardComponent(_heroService, _router) {
+        this._heroService = _heroService;
+        this._router = _router;
+        this.heroes = [];
+    }
+    DashboardComponent.prototype.ngOnInit = function () {
+        var _this = this;
+        this._heroService.getHeroes().then(function (heroes) { return _this.heroes = heroes.slice(1, 5); });
+    };
+    DashboardComponent.prototype.gotoDetail = function (hero) {
+        var link = ['HeroDetail', { id: hero.id }];
+        this._router.navigate(link);
+    };
+    DashboardComponent = __decorate([
+        core_1.Component({
+            selector: 'my-dashboard',
+            templateUrl: 'app/dashboard.component.html',
+            styleUrls: ['app/dashboard.component.css']
+        })
+    ], DashboardComponent);
+    return DashboardComponent;
+}());
+exports.DashboardComponent = DashboardComponent;
+/*
+Copyright 2016 Google Inc. All Rights Reserved.
+Use of this source code is governed by an MIT-style license that
+can be found in the LICENSE file at http://angular.io/license
+*/ 
+//# sourceMappingURL=dashboard.component.js.map
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/dashboard.component.js.map
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/dashboard.component.js.map b/tools/generator-zest/app/templates/Heroes/webapp/app/dashboard.component.js.map
new file mode 100644
index 0000000..5bc16f0
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/dashboard.component.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"dashboard.component.js","sourceRoot":"","sources":["dashboard.component.ts"],"names":[],"mappings":";;;;;;;AAAA,qBAAgC,eAAe,CAAC,CAAA;AAUhD;IAGE,4BAAoB,YAAyB,EAAU,OAAe;QAAlD,iBAAY,GAAZ,YAAY,CAAa;QAAU,YAAO,GAAP,OAAO,CAAQ;QAFtE,WAAM,GAAW,EAAE,CAAC;IAEsD,CAAC;IAE3E,qCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,EAA/B,CAA+B,CAAC,CAAC;IAChF,CAAC;IAED,uCAAU,GAAV,UAAW,IAAU;QACnB,IAAI,IAAI,GAAG,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAjBH;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,cAAc;YACxB,WAAW,EAAE,8BAA8B;YAC3C,SAAS,EAAE,CAAC,6BAA6B,CAAC;SAC3C,CAAC;0BAAA;IAcF,yBAAC;AAAD,CAAC,AAbD,IAaC;AAbY,0BAAkB,qBAa9B,CAAA;AAGD;;;;EAIE"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/hero-detail.component.js
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/hero-detail.component.js b/tools/generator-zest/app/templates/Heroes/webapp/app/hero-detail.component.js
new file mode 100644
index 0000000..56d5fa5
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/hero-detail.component.js
@@ -0,0 +1,37 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var core_1 = require('angular2/core');
+var HeroDetailComponent = (function () {
+    function HeroDetailComponent(_heroService, _routeParams) {
+        this._heroService = _heroService;
+        this._routeParams = _routeParams;
+    }
+    HeroDetailComponent.prototype.ngOnInit = function () {
+        var _this = this;
+        var id = +this._routeParams.get('id');
+        this._heroService.getHero(id).then(function (hero) { return _this.hero = hero; });
+    };
+    HeroDetailComponent.prototype.goBack = function () {
+        window.history.back();
+    };
+    HeroDetailComponent = __decorate([
+        core_1.Component({
+            selector: 'my-hero-detail',
+            templateUrl: 'app/hero-detail.component.html',
+            styleUrls: ['app/hero-detail.component.css']
+        })
+    ], HeroDetailComponent);
+    return HeroDetailComponent;
+}());
+exports.HeroDetailComponent = HeroDetailComponent;
+/*
+Copyright 2016 Google Inc. All Rights Reserved.
+Use of this source code is governed by an MIT-style license that
+can be found in the LICENSE file at http://angular.io/license
+*/ 
+//# sourceMappingURL=hero-detail.component.js.map
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/hero-detail.component.js.map
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/hero-detail.component.js.map b/tools/generator-zest/app/templates/Heroes/webapp/app/hero-detail.component.js.map
new file mode 100644
index 0000000..3928563
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/hero-detail.component.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"hero-detail.component.js","sourceRoot":"","sources":["hero-detail.component.ts"],"names":[],"mappings":";;;;;;;AAAA,qBAAgC,eAAe,CAAC,CAAA;AAWhD;IAGE,6BAAoB,YAAyB,EACnC,YAAyB;QADf,iBAAY,GAAZ,YAAY,CAAa;QACnC,iBAAY,GAAZ,YAAY,CAAa;IACnC,CAAC;IAED,sCAAQ,GAAR;QAAA,iBAGC;QAFC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,IAAI,GAAG,IAAI,EAAhB,CAAgB,CAAC,CAAC;IAC/D,CAAC;IAED,oCAAM,GAAN;QACE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAnBH;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,gBAAgB;YAC1B,WAAW,EAAE,gCAAgC;YAC7C,SAAS,EAAE,CAAC,+BAA+B,CAAC;SAC7C,CAAC;2BAAA;IAgBF,0BAAC;AAAD,CAAC,AAfD,IAeC;AAfY,2BAAmB,sBAe/B,CAAA;AAGD;;;;EAIE"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/hero.js
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/hero.js b/tools/generator-zest/app/templates/Heroes/webapp/app/hero.js
new file mode 100644
index 0000000..0c6fe2e
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/hero.js
@@ -0,0 +1,13 @@
+"use strict";
+var Hero = (function () {
+    function Hero() {
+    }
+    return Hero;
+}());
+exports.Hero = Hero;
+/*
+Copyright 2016 Google Inc. All Rights Reserved.
+Use of this source code is governed by an MIT-style license that
+can be found in the LICENSE file at http://angular.io/license
+*/ 
+//# sourceMappingURL=hero.js.map
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/hero.js.map
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/hero.js.map b/tools/generator-zest/app/templates/Heroes/webapp/app/hero.js.map
new file mode 100644
index 0000000..4a29533
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/hero.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"hero.js","sourceRoot":"","sources":["hero.ts"],"names":[],"mappings":";AAAA;IAAA;IAGA,CAAC;IAAD,WAAC;AAAD,CAAC,AAHD,IAGC;AAHY,YAAI,OAGhB,CAAA;AAGD;;;;EAIE"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/hero.service.js
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/hero.service.js b/tools/generator-zest/app/templates/Heroes/webapp/app/hero.service.js
new file mode 100644
index 0000000..3f92669
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/hero.service.js
@@ -0,0 +1,30 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var core_1 = require('angular2/core');
+var mock_heroes_1 = require('./mock-heroes');
+var HeroService = (function () {
+    function HeroService() {
+    }
+    HeroService.prototype.getHeroes = function () {
+        return Promise.resolve(mock_heroes_1.HEROES);
+    };
+    HeroService.prototype.getHero = function (id) {
+        return Promise.resolve(mock_heroes_1.HEROES).then(function (heroes) { return heroes.filter(function (hero) { return hero.id === id; })[0]; });
+    };
+    HeroService = __decorate([
+        core_1.Injectable()
+    ], HeroService);
+    return HeroService;
+}());
+exports.HeroService = HeroService;
+/*
+Copyright 2016 Google Inc. All Rights Reserved.
+Use of this source code is governed by an MIT-style license that
+can be found in the LICENSE file at http://angular.io/license
+*/ 
+//# sourceMappingURL=hero.service.js.map
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/hero.service.js.map
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/hero.service.js.map b/tools/generator-zest/app/templates/Heroes/webapp/app/hero.service.js.map
new file mode 100644
index 0000000..2485ba7
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/hero.service.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"hero.service.js","sourceRoot":"","sources":["hero.service.ts"],"names":[],"mappings":";;;;;;;AAAA,qBAAyB,eAAe,CAAC,CAAA;AACzC,4BAAyB,eAAe,CAAC,CAAA;AAGzC;IAAA;IAUA,CAAC;IATC,+BAAS,GAAT;QACE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAM,CAAC,CAAC;IACjC,CAAC;IAEF,6BAAO,GAAP,UAAQ,EAAU;QACf,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAM,CAAC,CAAC,IAAI,CACjC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,EAAE,KAAK,EAAE,EAAd,CAAc,CAAC,CAAC,CAAC,CAAC,EAAxC,CAAwC,CACnD,CAAC;IACJ,CAAC;IAVH;QAAC,iBAAU,EAAE;mBAAA;IAWb,kBAAC;AAAD,CAAC,AAVD,IAUC;AAVY,mBAAW,cAUvB,CAAA;AAGD;;;;EAIE"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/heroes.component.js
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/heroes.component.js b/tools/generator-zest/app/templates/Heroes/webapp/app/heroes.component.js
new file mode 100644
index 0000000..a4c1363
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/heroes.component.js
@@ -0,0 +1,42 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var core_1 = require('angular2/core');
+var hero_detail_component_1 = require('./hero-detail.component');
+var HeroesComponent = (function () {
+    function HeroesComponent(_heroService, _router) {
+        this._heroService = _heroService;
+        this._router = _router;
+    }
+    HeroesComponent.prototype.getHeroes = function () {
+        var _this = this;
+        this._heroService.getHeroes().then(function (heroes) { return _this.heroes = heroes; });
+    };
+    HeroesComponent.prototype.gotoDetail = function () {
+        this._router.navigate(['HeroDetail', { id: this.selectedHero.id }]);
+    };
+    HeroesComponent.prototype.ngOnInit = function () {
+        this.getHeroes();
+    };
+    HeroesComponent.prototype.onSelect = function (hero) { this.selectedHero = hero; };
+    HeroesComponent = __decorate([
+        core_1.Component({
+            selector: 'my-heroes',
+            templateUrl: 'app/heroes.component.html',
+            styleUrls: ['app/heroes.component.css'],
+            directives: [hero_detail_component_1.HeroDetailComponent]
+        })
+    ], HeroesComponent);
+    return HeroesComponent;
+}());
+exports.HeroesComponent = HeroesComponent;
+/*
+Copyright 2016 Google Inc. All Rights Reserved.
+Use of this source code is governed by an MIT-style license that
+can be found in the LICENSE file at http://angular.io/license
+*/ 
+//# sourceMappingURL=heroes.component.js.map
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/heroes.component.js.map
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/heroes.component.js.map b/tools/generator-zest/app/templates/Heroes/webapp/app/heroes.component.js.map
new file mode 100644
index 0000000..ca03d9d
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/heroes.component.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"heroes.component.js","sourceRoot":"","sources":["heroes.component.ts"],"names":[],"mappings":";;;;;;;AAAA,qBAAgC,eAAe,CAAC,CAAA;AAGhD,sCAAkC,yBAAyB,CAAC,CAAA;AAS5D;IAIE,yBAAoB,YAAyB,EAAU,OAAe;QAAlD,iBAAY,GAAZ,YAAY,CAAa;QAAU,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAE3E,mCAAS,GAAT;QAAA,iBAEC;QADC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,KAAI,CAAC,MAAM,GAAG,MAAM,EAApB,CAAoB,CAAC,CAAC;IACrE,CAAC;IAED,oCAAU,GAAV;QACE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,kCAAQ,GAAR;QACE,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,kCAAQ,GAAR,UAAS,IAAU,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;IAxBpD;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,WAAW;YACrB,WAAW,EAAE,2BAA2B;YACxC,SAAS,EAAE,CAAC,0BAA0B,CAAC;YACvC,UAAU,EAAE,CAAC,2CAAmB,CAAC;SAClC,CAAC;uBAAA;IAoBF,sBAAC;AAAD,CAAC,AAnBD,IAmBC;AAnBY,uBAAe,kBAmB3B,CAAA;AAGD;;;;EAIE"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/main.js
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/main.js b/tools/generator-zest/app/templates/Heroes/webapp/app/main.js
new file mode 100644
index 0000000..9b4c297
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/main.js
@@ -0,0 +1,15 @@
+"use strict";
+var browser_1 = require('angular2/platform/browser');
+var router_1 = require('angular2/router');
+var hero_service_1 = require('./hero.service');
+var app_component_1 = require('./app.component');
+browser_1.bootstrap(app_component_1.AppComponent, [
+    router_1.ROUTER_PROVIDERS,
+    hero_service_1.HeroService
+]);
+/*
+Copyright 2016 Google Inc. All Rights Reserved.
+Use of this source code is governed by an MIT-style license that
+can be found in the LICENSE file at http://angular.io/license
+*/ 
+//# sourceMappingURL=main.js.map
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/main.js.map
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/main.js.map b/tools/generator-zest/app/templates/Heroes/webapp/app/main.js.map
new file mode 100644
index 0000000..c830f42
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/main.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,wBAAwB,2BAA2B,CAAC,CAAA;AACpD,uBAA+B,iBAAiB,CAAC,CAAA;AACjD,6BAA0B,gBAAgB,CAAC,CAAA;AAC3C,8BAA2B,iBAAiB,CAAC,CAAA;AAE7C,mBAAS,CAAC,4BAAY,EAAE;IACtB,yBAAgB;IAChB,0BAAW;CACZ,CAAC,CAAC;AAGH;;;;EAIE"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/mock-heroes.js
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/mock-heroes.js b/tools/generator-zest/app/templates/Heroes/webapp/app/mock-heroes.js
new file mode 100644
index 0000000..9fe1f8a
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/mock-heroes.js
@@ -0,0 +1,19 @@
+"use strict";
+exports.HEROES = [
+    { "id": 11, "name": "Mr. Nice" },
+    { "id": 12, "name": "Narco" },
+    { "id": 13, "name": "Bombasto" },
+    { "id": 14, "name": "Celeritas" },
+    { "id": 15, "name": "Magneta" },
+    { "id": 16, "name": "RubberMan" },
+    { "id": 17, "name": "Dynama" },
+    { "id": 18, "name": "Dr IQ" },
+    { "id": 19, "name": "Magma" },
+    { "id": 20, "name": "Tornado" }
+];
+/*
+Copyright 2016 Google Inc. All Rights Reserved.
+Use of this source code is governed by an MIT-style license that
+can be found in the LICENSE file at http://angular.io/license
+*/ 
+//# sourceMappingURL=mock-heroes.js.map
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/6cafbfa3/tools/generator-zest/app/templates/Heroes/webapp/app/mock-heroes.js.map
----------------------------------------------------------------------
diff --git a/tools/generator-zest/app/templates/Heroes/webapp/app/mock-heroes.js.map b/tools/generator-zest/app/templates/Heroes/webapp/app/mock-heroes.js.map
new file mode 100644
index 0000000..dc81a97
--- /dev/null
+++ b/tools/generator-zest/app/templates/Heroes/webapp/app/mock-heroes.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"mock-heroes.js","sourceRoot":"","sources":["mock-heroes.ts"],"names":[],"mappings":";AAEW,cAAM,GAAW;IAC3B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAC;IAC9B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAC;IAC3B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAC;IAC9B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAC;IAC/B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC;IAC7B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAC;IAC/B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAC;IAC5B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAC;IAC3B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAC;IAC3B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC;CAC7B,CAAC;AAGF;;;;EAIE"}
\ No newline at end of file