More work on the generator

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/c94b506b
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/c94b506b
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/c94b506b

Branch: refs/heads/develop
Commit: c94b506bb5dfed45581ab969ddb51bc0317fb312
Parents: 066fc1f
Author: niclas <[email protected]>
Authored: Sun May 28 07:39:53 2017 +0800
Committer: niclas <[email protected]>
Committed: Sun May 28 07:39:53 2017 +0800

----------------------------------------------------------------------
 tools/generator-polygene/app/index.js           | 73 +++++++++++++-------
 .../StorageModule/bootstrap.tmpl                | 20 ++++--
 .../InfrastructureLayer/StorageModule/module.js | 40 ++++++-----
 .../RestAPIApplication/bootstrap-test.tmpl      | 33 ++++++++-
 .../templates/RestAPIApplication/bootstrap.tmpl | 14 +++-
 .../app/templates/buildtool/gradle-app.tmpl     |  1 +
 .../templates/buildtool/gradle-bootstrap.tmpl   |  9 ++-
 7 files changed, 137 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c94b506b/tools/generator-polygene/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/index.js 
b/tools/generator-polygene/app/index.js
index 02429e3..3765bc2 100644
--- a/tools/generator-polygene/app/index.js
+++ b/tools/generator-polygene/app/index.js
@@ -126,6 +126,21 @@ module.exports = generators.Base.extend(
                         },
                         {
                             type: 'list',
+                            name: 'dbpool',
+                            choices: [
+                                'None',
+                                'BoneCP',
+                                'DBCP'
+                                // 'HikariCP'
+                            ],
+                            message: 'Which entity store do you want to use?',
+                            default: polygene.dbpool ? polygene.dbpool : 
"None",
+                            when: function (answers) {
+                                return answers.entitystore.indexOf('SQL') > -1;
+                            }
+                        },
+                        {
+                            type: 'list',
                             name: 'indexing',
                             choices: [
                                 'Rdf',
@@ -174,6 +189,7 @@ module.exports = generators.Base.extend(
                             choices: [
                                 // 'alarms'
                                 // 'circuit breakers'
+                                'envisage',
                                 // 'file transactions'
                                 // 'logging'
                                 'jmx',
@@ -201,32 +217,37 @@ module.exports = generators.Base.extend(
         },
 
         writing: function () {
-            polygene.version = polygeneVersion;
-            polygene.entitystoremodule = polygene.entitystore.toLowerCase();
-            if (polygene.entitystore === "DerbySQL") {
-                polygene.entitystoremodule = "sql";
-            }
-            if (polygene.entitystore === "H2SQL") {
-                polygene.entitystoremodule = "sql";
-            }
-            if (polygene.entitystore === "MySQL") {
-                polygene.entitystoremodule = "sql";
-            }
-            if (polygene.entitystore === "PostgreSQL") {
-                polygene.entitystoremodule = "sql";
-            }
-            if (polygene.entitystore === "SQLite") {
-                polygene.entitystoremodule = "sql";
-            }
-            assignFunctions(polygene);
-            polygene.javaPackageDir = polygene.packageName.replace(/[.]/g, 
'/');
-            polygene.ctx = this;
-            var app = require(__dirname + '/templates/' + 
polygene.applicationtype.replace(/ /g, '') + 'Application/app.js');
-            app.write(polygene);
-            var buildToolChain = require(__dirname + 
'/templates/buildtool/build.js');
-            buildToolChain.write(polygene);
-            if (this.options.export) {
-                exportModel(this.options.export);
+            try {
+                polygene.version = polygeneVersion;
+                polygene.entitystoremodule = 
polygene.entitystore.toLowerCase();
+                if (polygene.entitystore === "DerbySQL") {
+                    polygene.entitystoremodule = "sql";
+                }
+                if (polygene.entitystore === "H2SQL") {
+                    polygene.entitystoremodule = "sql";
+                }
+                if (polygene.entitystore === "MySQL") {
+                    polygene.entitystoremodule = "sql";
+                }
+                if (polygene.entitystore === "PostgreSQL") {
+                    polygene.entitystoremodule = "sql";
+                }
+                if (polygene.entitystore === "SQLite") {
+                    polygene.entitystoremodule = "sql";
+                }
+                assignFunctions(polygene);
+                polygene.javaPackageDir = polygene.packageName.replace(/[.]/g, 
'/');
+                polygene.ctx = this;
+                var app = require(__dirname + '/templates/' + 
polygene.applicationtype.replace(/ /g, '') + 'Application/app.js');
+                app.write(polygene);
+                var buildToolChain = require(__dirname + 
'/templates/buildtool/build.js');
+                buildToolChain.write(polygene);
+                if (this.options.export) {
+                    exportModel(this.options.export);
+                }
+            } catch( exception ) {
+                console.log(exception);
+                throw exception;
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c94b506b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git 
a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
 
b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
index 2df7306..f148113 100644
--- 
a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
+++ 
b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
@@ -25,6 +25,13 @@ import org.apache.polygene.bootstrap.LayerAssembly;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.bootstrap.layered.ModuleAssembler;
 import org.apache.polygene.entitystore.<%- polygene.entitystoremodule 
%>.assembly.<%- polygene.entitystore %>EntityStoreAssembler;
+<% if( polygene.entitystore.indexOf('SQL') >= 0 ) {
+%>import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
+<%     if( polygene.dbpool !== null && polygene.dbpool !== 'None' ) {
+%>import org.apache.polygene.library.sql.<%= polygene.dbpool.toLowerCase() 
%>.<%= polygene.dbpool %>DataSourceAssembler;
+<%
+    }
+} %>
 
 public class <%- polygene.entitystore %>StorageModule
     implements ModuleAssembler
@@ -41,14 +48,18 @@ public class <%- polygene.entitystore %>StorageModule
     public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module 
)
         throws AssemblyException
     {
-<% if( polygene.entitystore.contains( 'SQL' ) ) {
+<%
+if( polygene.entitystore.indexOf( 'SQL' ) >= 0 ) {
+    if( polygene.dbpool !== null && polygene.dbpool !== 'None' ) {
 %>        // DataSourceService
-        new DBCPDataSourceServiceAssembler()
+        new <%= polygene.dbpool %>DataSourceServiceAssembler()
             .identifiedBy( "<%= polygene.entitystore.toLowerCase() 
%>-datasource-service" )
             .visibleIn( Visibility.module )
             .withConfig( config, Visibility.layer )
             .assemble( module );
-
+<%
+    }
+%>
         // DataSource
         new DataSourceAssembler()
             .withDataSourceServiceIdentity( "<%= 
polygene.entitystore.toLowerCase() %>-datasource-service" )
@@ -56,7 +67,8 @@ public class <%- polygene.entitystore %>StorageModule
             .visibleIn( Visibility.module )
             .withCircuitBreaker()
             .assemble( module );
-<% }
+<%
+}
 %>        new <%- polygene.entitystore %>EntityStoreAssembler()
             .visibleIn( Visibility.application  )
             .withConfig( configModule, Visibility.application )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c94b506b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/module.js
----------------------------------------------------------------------
diff --git 
a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/module.js
 
b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/module.js
index 270d464..947ddde 100644
--- 
a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/module.js
+++ 
b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/module.js
@@ -15,6 +15,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
+var fs = require('fs');
 
 module.exports = {
 
@@ -23,23 +24,28 @@ module.exports = {
             'InfrastructureLayer/StorageModule/bootstrap.tmpl',
             'bootstrap/src/main/java/' + p.javaPackageDir + 
'/bootstrap/infrastructure/' + p.entitystore + 'StorageModule.java');
 
-        var configurationFile = 
'InfrastructureLayer/StorageModule/storage/es-' + p.entitystore.toLowerCase() + 
'.properties';
-        var confFile = require(configurationFile);
-        if (confFile.existsSync(path)) {
-            p.copyTemplate(p.ctx,
-                configurationFile,
-                'app/src/main/resources/config/');
-        }
+        var esFileName = 'es-' + p.entitystore.toLowerCase() + '.properties';
+        var configurationPath = 'InfrastructureLayer/StorageModule/storage/' + 
esFileName;
 
-        var datasourceFile = 'InfrastructureLayer/StorageModule/storage/ds-' + 
p.entitystore.toLowerCase() + '.properties';
-        var dsFile = require(datasourceFile);
-        if (dsFile.existsSync(path)) {
-            p.copyTemplate(p.ctx,
-                'InfrastructureLayer/StorageModule/storage/es-sql.properties',
-                'app/src/main/resources/config/es-' + 
p.entitystore.toLowerCase());
-            p.copyTemplate(p.ctx,
-                configurationFile,
-                'app/src/main/resources/config/');
-        }
+        fs.stat(__dirname + "/../../" + configurationPath, function (err, 
stat) {
+            if (err === null) {
+                p.copyTemplate(p.ctx,
+                    configurationPath,
+                    'app/src/main/resources/config/' + esFileName);
+            }
+        });
+
+        var dsFileName = 'ds-' + p.entitystore.toLowerCase() + '.properties';
+        var datasourceFile = 'InfrastructureLayer/StorageModule/storage/' + 
dsFileName;
+        fs.stat(__dirname + "/../../" + configurationPath, function (err, 
stat) {
+            if (err === null) {
+                p.copyTemplate(p.ctx,
+                    
'InfrastructureLayer/StorageModule/storage/es-sql.properties',
+                    'app/src/main/resources/config/' + esFileName);
+                p.copyTemplate(p.ctx,
+                    datasourceFile,
+                    'app/src/main/resources/config/' + dsFileName);
+            }
+        });
     }
 };

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c94b506b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
----------------------------------------------------------------------
diff --git 
a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl 
b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
index 8bbbd75..1130db5 100644
--- 
a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
+++ 
b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
@@ -23,14 +23,31 @@ import <%= polygene.packageName %>.bootstrap.<%= 
polygene.name %>ApplicationAsse
 
 import <%= polygene.packageName %>.bootstrap.config.ConfigModule;
 import <%= polygene.packageName %>.bootstrap.config.ConfigurationLayer;
+import javax.json.Json;
+import javax.json.JsonWriter;
+
 import org.apache.polygene.api.structure.Application;
+import org.apache.polygene.api.structure.ApplicationDescriptor;
 import org.apache.polygene.bootstrap.ApplicationAssembly;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.bootstrap.layered.LayeredApplicationAssembler;
-<% if( polygene.entitystore !== 'Memory' ) {
+import org.apache.polygene.tools.model.descriptor.ApplicationDetailDescriptor;
+import 
org.apache.polygene.tools.model.descriptor.ApplicationDetailDescriptorBuilder;
+<%
+if(  polygene.entitystore === 'MySQL' ) {
+%>import java.util.HashMap;
+<%
+}
+if( polygene.entitystore !== 'Memory' && polygene.entitystore !== 
'Preferences' ) {
+    if( polygene.entitystore.indexOf('SQL') < 0 ) {
 %>import org.apache.polygene.entitystore.<%= 
polygene.entitystore.toLowerCase() %>.<%= polygene.entitystore 
%>EntityStoreConfiguration;
-<% }
+<% } else {
+%>import org.apache.polygene.entitystore.sql.<%= polygene.entitystore 
%>EntityStoreConfiguration;
+}
+<%
+    }
+}
 %>import org.apache.polygene.test.docker.DockerRule;
 import org.junit.ClassRule;
 import org.junit.Test;
@@ -50,7 +67,17 @@ public class BootstrapTest
 <% if( polygene.hasFeature( 'security' ) ) {
 %>                DevelopmentKeyManagement.initializeKeyStore();
 <% }
-%>                return new <%= polygene.name %>ApplicationAssembler( 
"LaunchTest", "0", Application.Mode.development, BootstrapTest.this::setupTest 
);
+%>                return new <%= polygene.name %>ApplicationAssembler( 
"LaunchTest", "0", Application.Mode.development, BootstrapTest.this::setupTest )
+                {
+                    @Override
+                    protected void onModelCreated( ApplicationDescriptor model 
)
+                    {
+                        ApplicationDetailDescriptor modelDescription = 
ApplicationDetailDescriptorBuilder.createApplicationDetailDescriptor( model );
+                        JsonWriter writer = Json.createWriter( System.out );
+                        writer.writeObject( modelDescription.toJson() );
+                        super.onModelCreated( model );
+                    }
+                };
             }
         };
         launcher.initialize();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c94b506b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap.tmpl
----------------------------------------------------------------------
diff --git 
a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap.tmpl 
b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap.tmpl
index 3521cde..dd3f876 100644
--- a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap.tmpl
@@ -26,7 +26,9 @@ import org.apache.polygene.bootstrap.ApplicationAssembly;
 import org.apache.polygene.bootstrap.LayerAssembly;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.bootstrap.layered.LayeredApplicationAssembler;
-
+<% if( polygene.hasFeature('envisage' ) ) {
+%>import org.apache.polygene.envisage.Envisage;
+<% } %>
 import <%= polygene.packageName %>.bootstrap.connectivity.ConnectivityLayer;
 import <%= polygene.packageName %>.bootstrap.config.ConfigurationLayer;
 import <%= polygene.packageName %>.bootstrap.domain.DomainLayer;
@@ -58,4 +60,12 @@ public class <%= polygene.name %>ApplicationAssembler 
extends LayeredApplication
         infra.uses( config );
         customize.accept( assembly );
     }
-}
+<% if( polygene.hasFeature('envisage' ) ) {
+%>
+    @Override
+    protected void onModelCreated( ApplicationDescriptor model )
+    {
+        new Envisage().run( model );
+    }
+<% }
+%>}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c94b506b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl 
b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
index d199285..fe49308 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
@@ -40,5 +40,6 @@ dependencies {
   runtime "ch.qos.logback:logback-classic:1.2.3"
   runtime "ch.qos.logback:logback-core:1.2.3"
 
+  testCompile 
"org.apache.polygene.tools:org.apache.polygene.tool.model-detail:$polygeneVersion"
   testImplementation 
"org.apache.polygene.core:org.apache.polygene.core.testsupport:$polygeneVersion"
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c94b506b/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
----------------------------------------------------------------------
diff --git 
a/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl 
b/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
index 9582076..c744772 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
@@ -32,7 +32,14 @@ dependencies {
 %>  compile 
"org.apache.polygene.libraries:org.apache.polygene.library.restlet:$polygeneVersion"
   compile 
"org.apache.polygene.libraries:org.apache.polygene.library.http:$polygeneVersion"
 <% }
-%>  compile 
"org.apache.polygene.extensions:org.apache.polygene.extension.entitystore-<%= 
polygene.entitystoremodule.toLowerCase() %>:$polygeneVersion"
+if( polygene.entitystore.indexOf('SQL') >= 0 ) {
+  if( polygene.dbpool !== 'None' ) {
+%>  compile "org.apache.polygene.libraries:org.apache.polygene.library.sql-<%= 
polygene.dbpool.toLowerCase() %>:$polygeneVersion"
+<%
+  }
+}
+%>
+  compile 
"org.apache.polygene.extensions:org.apache.polygene.extension.entitystore-<%= 
polygene.entitystoremodule.toLowerCase() %>:$polygeneVersion"
   compile 
"org.apache.polygene.extensions:org.apache.polygene.extension.indexing-<%= 
polygene.indexing.toLowerCase() %>:$polygeneVersion"
   compile 
"org.apache.polygene.extensions:org.apache.polygene.extension.serialization-<%= 
polygene.serialization.toLowerCase() %>:$polygeneVersion"
 <% if( polygene.caching !== "None" ) {

Reply via email to