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" ) {
