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 2017/03/05 15:45:40 UTC
[10/12] polygene-java git commit: POLYGENE-158 : A bunch of work on
the Yeoman project creator. Still far from complete...
POLYGENE-158 : A bunch of work on the Yeoman project creator. Still far from complete...
Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/46e02826
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/46e02826
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/46e02826
Branch: refs/heads/develop
Commit: 46e02826b54771930a89bfa83a344c1f2f5b926e
Parents: aeff80d
Author: niclas <ni...@spicter.com>
Authored: Sun Mar 5 21:24:15 2017 +0800
Committer: niclas <ni...@spicter.com>
Committed: Sun Mar 5 21:24:15 2017 +0800
----------------------------------------------------------------------
tools/generator-polygene/app/index.js | 566 +++++++++++--------
.../app/templates/CodahaleModule/bootstrap.tmpl | 50 ++
.../app/templates/DomainLayer/bootstrap.tmpl | 2 +
.../app/templates/DomainModule/Crud.tmpl | 41 ++
.../app/templates/DomainModule/Entity.tmpl | 41 ++
.../app/templates/DomainModule/Object.tmpl | 33 ++
.../app/templates/DomainModule/Service.tmpl | 36 ++
.../app/templates/DomainModule/Value.tmpl | 41 ++
.../app/templates/DomainModule/bootstrap.tmpl | 85 +++
.../HardcodedSecurityRepositoryMixin.tmpl | 51 --
.../templates/SolrIndexingModule/bootstrap.tmpl | 49 ++
11 files changed, 709 insertions(+), 286 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/index.js b/tools/generator-polygene/app/index.js
index be71f4f..7ab5505 100644
--- a/tools/generator-polygene/app/index.js
+++ b/tools/generator-polygene/app/index.js
@@ -18,302 +18,398 @@
*
*/
-var generators = require( 'yeoman-generator' );
+var generators = require('yeoman-generator');
+var fs = require('fs');
var polygene = {};
module.exports = generators.Base.extend(
{
// The name `constructor` is important here
- constructor: function ()
- {
+ constructor: function () {
// Calling the super constructor is important so our generator is correctly set up
- generators.Base.apply( this, arguments );
-
- // this.option( 'coffee' ); // This method adds support for a `--coffee` flag
+ generators.Base.apply(this, arguments);
+
+ this.option('import-model'); // --import-model reads model.json in current directory and creates the domain model for it.
+
+ if (this.options.import != null) {
+ polygene = importModel(this, './imported-model.json');
+ polygene.name = polygene.name ? polygene.name : firstUpper(this.appname);
+ polygene.packageName = polygene.packageName ? polygene.packageName : ("com.acme." + this.appname);
+ polygene.singletonApp = false; // not supported yet
+ polygene.features = polygene.features ? polygene.features : ['rest api'];
+ polygene.modules = polygene.modules ? polygene.modules : {};
+ polygene.indexing = polygene.indexing ? polygene.indexing : null;
+ polygene.entitystore = polygene.entitystore ? polygene.entitystore : null;
+ polygene.caching = polygene.caching ? polygene.caching : null;
+ polygene.serialization = polygene.serialization ? polygene.serialization : null;
+ console.log(JSON.stringify(polygene,null,4));
+ }
+ else {
+ polygene = {
+ name: firstUpper(this.appname),
+ packageName: "com.acme." + this.appname,
+ singletonApp: false,
+ entitystore: null,
+ indexing: null,
+ serialization: null,
+ caching: null,
+ features: ['rest api'],
+ modules: {}
+ };
+ }
},
- method1: function ()
- {
- console.log( 'method 1 just ran' );
- },
- method2: function ()
- {
- console.log( 'method 2 just ran' );
- },
- prompting: function ()
- {
- return this.prompt(
- [
- {
- type: 'input',
- name: 'name',
- message: 'Your project name',
- default: firstUpper( this.appname )
- },
- {
- type: 'input',
- name: 'packagename',
- message: 'Java package name',
- default: "com.acme." + this.appname // Default to current folder name
- },
- {
- type: 'list',
- name: 'entitystore',
- choices: [
- 'Cassandra',
- 'File',
- 'DerbySQL',
- 'Geode',
- 'H2SQL',
- 'Hazelcast',
- 'JClouds',
- 'Jdbm',
- 'LevelDB',
- 'Memory',
- 'MongoDB',
- 'MySQL',
- 'Preferences',
- 'Redis',
- 'Riak',
- 'PostgresSQL',
- 'SQLite'
- ],
- message: 'Which entity store do you want to use?'
- },
- {
- type: 'list',
- name: 'indexing',
- choices: [
- 'Rdf',
- 'ElasticSearch',
- 'Solr',
- 'SQL'
- ],
- message: 'Which indexing system do you want to use?'
- },
- {
- type: 'list',
- name: 'caching',
- choices: [
- 'none',
- 'memcache',
- 'ehcache'
- ],
- message: 'Which caching system do you want to use?'
- },
- {
- type: 'list',
- name: 'serialization',
- choices: [
- 'Jackson',
- 'Stax',
- 'OrgJson'
- ],
- message: 'Which serialization system do you want to use?'
- },
- {
- type: 'checkbox',
- name: 'features',
- choices: [
- 'rest api',
- // 'reindexer',
- // 'metrics',
- // 'jmx',
- // 'version migration',
- 'sample (heroes) web application'
- ],
- message: 'Other features?'
- }
- ]
- ).then( function ( answers )
- {
- this.log( 'app name', answers.name );
- this.log( 'Entity Stores:', answers.entitystore );
- this.log( 'Indexing:', answers.indexing );
- this.log( 'Caching:', answers.caching );
- this.log( 'Serialization:', answers.serialization );
- this.log( 'Features:', answers.features );
- polygene = answers;
- polygene.javaPackageDir = polygene.packagename.replace( '.', '/' );
- polygene.singletonApp = false;
- if( hasFeature( 'sample (heroes) web application' ) )
+ prompting: function () {
+ if (this.options.noPrompt != null) {
+ return this.prompt([]);
+ }
+ else {
+ return this.prompt(
+ [
+ {
+ type: 'input',
+ name: 'name',
+ message: 'Your project name',
+ default: polygene.name
+ },
+ {
+ type: 'input',
+ name: 'packageName',
+ message: 'Java package name',
+ default: polygene.packageName
+ },
{
- polygene.features.push( 'rest api' );
+ type: 'list',
+ name: 'entitystore',
+ choices: [
+ 'Cassandra',
+ 'File',
+ 'DerbySQL',
+ 'Geode',
+ 'H2SQL',
+ 'Hazelcast',
+ 'JClouds',
+ 'Jdbm',
+ 'LevelDB',
+ 'Memory',
+ 'MongoDB',
+ 'MySQL',
+ 'Preferences',
+ 'Redis',
+ 'Riak',
+ 'PostgresSQL',
+ 'SQLite'
+ ],
+ message: 'Which entity store do you want to use?',
+ default: polygene.entitystore
+ },
+ {
+ type: 'list',
+ name: 'indexing',
+ choices: [
+ 'Rdf',
+ 'ElasticSearch',
+ 'Solr',
+ 'SQL'
+ ],
+ message: 'Which indexing system do you want to use?'
+ },
+ {
+ type: 'list',
+ name: 'caching',
+ choices: [
+ 'none',
+ 'memcache',
+ 'ehcache'
+ ],
+ message: 'Which caching system do you want to use?'
+ },
+ {
+ type: 'list',
+ name: 'serialization',
+ choices: [
+ 'Jackson',
+ // 'Johnzon',
+ 'Stax'
+ ],
+ message: 'Which serialization system do you want to use?'
+ },
+ {
+ type: 'list',
+ name: 'metrics',
+ choices: [
+ 'none',
+ 'codahale'
+ ],
+ message: 'Which metrics capturing system do you want to use?'
+ },
+ {
+ type: 'checkbox',
+ name: 'features',
+ choices: [
+ 'rest api',
+ // 'jmx',
+ // 'version migration',
+ 'sample (heroes) web application'
+ ],
+ message: 'Other features?'
}
- }.bind( this )
- );
+ ]
+ ).then(function (answers) {
+ this.log('app name', answers.name);
+ this.log('Entity Stores:', answers.entitystore);
+ this.log('Indexing:', answers.indexing);
+ this.log('Caching:', answers.caching);
+ this.log('Serialization:', answers.serialization);
+ this.log('Features:', answers.features);
+ polygene.name = answers.name;
+ polygene.entitystore = answers.entitystore;
+ polygene.indexing = answers.indexing;
+ polygene.caching = answers.caching;
+ polygene.serialization = answers.serialization;
+ polygene.metrics = answers.metrics;
+ polygene.packageName = answers.packageName;
+ answers.features.forEach(function (f) {
+ polygene.features.push(f);
+ });
+ polygene.javaPackageDir = polygene.javaPackageDir ? polygene.javaPackageDir : polygene.packageName.replace(/[.]/g, '/');
+ polygene.singletonApp = false;
+ if (hasFeature('sample (heroes) web application')) {
+ polygene.features.push('rest api');
+ }
+ }.bind(this)
+ );
+ }
},
- writing: function ()
- {
- copyPolygeneBootstrap( this, "config", "ConfigurationLayer", !polygene.singeltonApp );
- copyPolygeneBootstrap( this, "infrastructure", "InfrastructureLayer", !polygene.singeltonApp );
- copyPolygeneBootstrap( this, "domain", "DomainLayer", !polygene.singeltonApp );
- copyPolygeneBootstrap( this, "connectivity", "ConnectivityLayer", !polygene.singeltonApp );
-
- copyPolygeneBootstrap( this, "config", "ConfigModule", true );
-
- copyPolygeneBootstrap( this, "infrastructure", "FileConfigurationModule", true );
-
- copyEntityStore( this, polygene.entitystore );
-
- copyPolygeneBootstrap( this, "infrastructure", "RdfIndexingModule", hasIndexing( 'Rdf' ) );
- copyPolygeneBootstrap( this, "infrastructure", "ElasticSearchIndexingModule", hasIndexing( 'Elasticsearch' ) );
- copyPolygeneBootstrap( this, "infrastructure", "SolrIndexingModule", hasIndexing( 'Solr' ) );
- copyPolygeneBootstrap( this, "infrastructure", "SqlIndexingModule", hasIndexing( 'Sql' ) );
-
- copyPolygeneBootstrap( this, "infrastructure", "NoCachingModule", hasCaching( 'none' ) );
- copyPolygeneBootstrap( this, "infrastructure", "MemcacheCachingModule", hasCaching( 'Memcache' ) );
- copyPolygeneBootstrap( this, "infrastructure", "EhCacheCachingModule", hasCaching( 'Ehcache' ) );
-
- copyPolygeneBootstrap( this, "infrastructure", "JacksonSerializationModule", hasSerialization( 'Jackson' ) );
- copyPolygeneBootstrap( this, "infrastructure", "StaxSerializationModule", hasSerialization( 'Stax' ) );
- copyPolygeneBootstrap( this, "infrastructure", "OrgJsonSerializationModule", hasSerialization( 'Orgjson' ) );
-
- copyPolygeneBootstrap( this, "connectivity", "RestApiModule", hasFeature( 'rest api' ) );
- copyPolygeneBootstrap( this, "infrastructure", "ReindexerModule", hasFeature( 'reindexer' ) );
- copyPolygeneBootstrap( this, "infrastructure", "MetricsModule", hasFeature( 'metrics' ) );
- copyPolygeneBootstrap( this, "infrastructure", "JmxModule", hasFeature( 'jmx' ) );
- copyPolygeneBootstrap( this, "infrastructure", "MigrationModule", hasFeature( 'version migration' ) );
-
- copyPolygeneBootstrap( this, "domain", "CrudModule", true );
- copyPolygeneBootstrap( this, "domain", "SecurityModule", true );
- copyHeroesSampleApp( this );
- copyPolygeneDomain( this, "security", "RestApiModule", "SecurityRepository", hasFeature( 'rest api' ) );
-
- copyRestFeature( this, hasFeature( 'rest api' ) );
-
- 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' ) );
+ writing: function () {
+ copyPolygeneBootstrap(this, "config", "ConfigurationLayer", !polygene.singeltonApp);
+ copyPolygeneBootstrap(this, "infrastructure", "InfrastructureLayer", !polygene.singeltonApp);
+ copyPolygeneBootstrap(this, "domain", "DomainLayer", !polygene.singeltonApp);
+ copyPolygeneBootstrap(this, "connectivity", "ConnectivityLayer", !polygene.singeltonApp);
+
+ copyPolygeneBootstrap(this, "config", "ConfigModule", true);
+
+ copyPolygeneBootstrap(this, "infrastructure", "FileConfigurationModule", true);
+
+ copyEntityStore(this, polygene.entitystore);
+
+ copyPolygeneBootstrap(this, "infrastructure", "RdfIndexingModule", hasIndexing('Rdf'));
+ copyPolygeneBootstrap(this, "infrastructure", "ElasticSearchIndexingModule", hasIndexing('Elasticsearch'));
+ copyPolygeneBootstrap(this, "infrastructure", "SolrIndexingModule", hasIndexing('Solr'));
+ copyPolygeneBootstrap(this, "infrastructure", "SqlIndexingModule", hasIndexing('Sql'));
+
+ copyPolygeneBootstrap(this, "infrastructure", "NoCachingModule", hasCaching('none'));
+ copyPolygeneBootstrap(this, "infrastructure", "MemcacheCachingModule", hasCaching('Memcache'));
+ copyPolygeneBootstrap(this, "infrastructure", "EhCacheCachingModule", hasCaching('Ehcache'));
+
+ copyPolygeneBootstrap(this, "infrastructure", "JacksonSerializationModule", hasSerialization('Jackson'));
+ copyPolygeneBootstrap(this, "infrastructure", "StaxSerializationModule", hasSerialization('Stax'));
+ copyPolygeneBootstrap(this, "infrastructure", "OrgJsonSerializationModule", hasSerialization('Orgjson'));
+
+ copyPolygeneBootstrap(this, "connectivity", "RestApiModule", hasFeature('rest api'));
+ copyPolygeneBootstrap(this, "infrastructure", "ReindexerModule", hasFeature('reindexer'));
+ copyPolygeneBootstrap(this, "infrastructure", "MetricsModule", hasFeature('metrics'));
+ copyPolygeneBootstrap(this, "infrastructure", "JmxModule", hasFeature('jmx'));
+ copyPolygeneBootstrap(this, "infrastructure", "MigrationModule", hasFeature('version migration'));
+
+ copyPolygeneBootstrap(this, "domain", "CrudModule", true);
+ var ctx = this;
+ Object.keys(polygene.modules).forEach(function (moduleName, index) {
+ copyPolygeneDomainModule(ctx, moduleName, polygene.modules[moduleName]);
+ });
+ copyPolygeneBootstrap(this, "domain", "CrudModule", hasFeature('rest api'));
+ // copyPolygeneBootstrap(this, "domain", "SecurityModule", true);
+ copyHeroesSampleApp(this);
+ copyPolygeneDomain(this, "security", "RestApiModule", "SecurityRepository", hasFeature('rest api'));
+
+ copyRestFeature(this, hasFeature('rest api'));
+
+ 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'));
+
+ if (this.options.export != null) {
+ exportModel(this, "exported-model.json");
+ }
}
}
);
-function copyPolygeneBootstrap( ctx, layer, moduleName, condition )
-{
- if( condition )
- {
- copyTemplate( ctx,
- moduleName + '/bootstrap.tmpl',
- 'bootstrap/src/main/java/' + polygene.javaPackageDir + '/bootstrap/' + layer + '/' + moduleName + '.java' );
+function copyPolygeneBootstrap(ctx, layer, moduleName, condition) {
+ if (condition) {
+ copyTemplate(ctx,
+ moduleName + '/bootstrap.tmpl',
+ 'bootstrap/src/main/java/' + polygene.javaPackageDir + '/bootstrap/' + layer + '/' + moduleName + '.java');
}
}
-function copyEntityStore( ctx, entityStoreName )
-{
- copyTemplate( ctx,
- 'StorageModule/bootstrap.tmpl',
- 'bootstrap/src/main/java/' + polygene.javaPackageDir + '/bootstrap/infrastructure/' + entityStoreName + 'StorageModule.java' );
+function copyEntityStore(ctx, entityStoreName) {
+ copyTemplate(ctx,
+ 'StorageModule/bootstrap.tmpl',
+ 'bootstrap/src/main/java/' + polygene.javaPackageDir + '/bootstrap/infrastructure/' + entityStoreName + 'StorageModule.java');
}
-function copyPolygeneApp( ctx, name, condition )
-{
- if( condition )
- {
- copyTemplate( ctx,
- name + '/bootstrap.tmpl',
- 'bootstrap/src/main/java/' + polygene.javaPackageDir + '/bootstrap/' + name + 'ApplicationAssembler.java' );
+function copyPolygeneApp(ctx, name, condition) {
+ if (condition) {
+ copyTemplate(ctx,
+ name + '/bootstrap.tmpl',
+ 'bootstrap/src/main/java/' + polygene.javaPackageDir + '/bootstrap/' + name + 'ApplicationAssembler.java');
- copyTemplate( ctx,
- name + '/app.tmpl',
- 'app/src/main/java/' + polygene.javaPackageDir + '/app/' + name + '.java' );
+ copyTemplate(ctx,
+ name + '/app.tmpl',
+ 'app/src/main/java/' + polygene.javaPackageDir + '/app/' + name + '.java');
- copyTemplate( ctx,
- name + '/webapp/',
- 'app/src/main/webapp/' );
+ copyTemplate(ctx,
+ name + '/webapp/',
+ 'app/src/main/webapp/');
}
}
-function copyPolygeneDomain( ctx, model, module, clazz, condition )
-{
- if( condition )
- {
- copyTemplate( ctx,
- module + '/' + clazz + '.tmpl',
- 'model/src/main/java/' + polygene.javaPackageDir + '/model/' + model + '/' + clazz + '.java' );
+function copyPolygeneDomain(ctx, model, module, clazz, condition) {
+ if (condition) {
+ copyTemplate(ctx,
+ module + '/' + clazz + '.tmpl',
+ 'model/src/main/java/' + polygene.javaPackageDir + '/model/' + model + '/' + clazz + '.java');
}
}
-function copyRestFeature( ctx, condition )
-{
- if( condition )
- {
- copyPolygeneBootstrap( ctx, "domain", "SecurityModule", true );
+function copyPolygeneDomainModule(ctx, moduleName, moduleDef) {
+ var clazz = firstUpper(moduleName) + "Module";
+ polygene.current = moduleDef;
+ polygene.current.name = moduleName;
+ copyTemplate(ctx,
+ 'DomainModule/bootstrap.tmpl',
+ 'bootstrap/src/main/java/' + polygene.javaPackageDir + '/bootstrap/domain/' + clazz + '.java');
+ for (var idx1 in moduleDef.cruds) {
+ if (moduleDef.cruds.hasOwnProperty(idx1)) {
+ polygene.current.clazz = moduleDef.cruds[idx1];
+ copyTemplate(ctx,
+ 'DomainModule/Crud.tmpl',
+ 'model/src/main/java/' + polygene.javaPackageDir + '/model/' + moduleName + '/' + moduleDef.cruds[idx1].name + '.java');
+ }
+ }
+ for (var idx2 in moduleDef.values) {
+ if (moduleDef.values.hasOwnProperty(idx2)) {
+ polygene.current.clazz = moduleDef.values[idx2];
+ copyTemplate(ctx,
+ 'DomainModule/Value.tmpl',
+ 'model/src/main/java/' + polygene.javaPackageDir + '/model/' + moduleName + '/' + moduleDef.values[idx2].name + '.java');
+ }
+ }
+ for (var idx3 in moduleDef.entities) {
+ if (moduleDef.entities.hasOwnProperty(idx3)) {
+ polygene.current.clazz = moduleDef.entities[idx2];
+ copyTemplate(ctx,
+ 'DomainModule/Entity.tmpl',
+ 'model/src/main/java/' + polygene.javaPackageDir + '/model/' + moduleName + '/' + moduleDef.entities[idx3].name + '.java');
+ }
+ }
+ for (var idx4 in moduleDef.transients) {
+ if (moduleDef.transients.hasOwnProperty(idx4)) {
+ polygene.current.clazz = moduleDef.transients[idx3];
+ copyTemplate(ctx,
+ 'DomainModule/Transient.tmpl',
+ 'model/src/main/java/' + polygene.javaPackageDir + '/model/' + moduleName + '/' + moduleDef.transients[idx4].name + '.java');
+ }
+ }
+ for (var idx5 in moduleDef.objects) {
+ if (moduleDef.objects.hasOwnProperty(idx5)) {
+ polygene.current.clazz = moduleDef.objects[idx5];
+ copyTemplate(ctx,
+ 'DomainModule/Object.tmpl',
+ 'model/src/main/java/' + polygene.javaPackageDir + '/model/' + moduleName + '/' + moduleDef.objects[idx5].name + '.java');
+ }
+ }
+ for (var idx6 in moduleDef.services) {
+ if (moduleDef.services.hasOwnProperty(idx6)) {
+ polygene.current.clazz = moduleDef.services[idx6];
+ copyTemplate(ctx,
+ 'DomainModule/Service.tmpl',
+ 'model/src/main/java/' + polygene.javaPackageDir + '/model/' + moduleName + '/' + moduleDef.services[idx6].name + '.java');
+ }
+ }
+}
- copyTemplate( ctx,
- 'RestApiModule/SimpleEnroler.tmpl',
- 'rest/src/main/java/' + polygene.javaPackageDir + '/rest/security/SimpleEnroler.java' );
+function copyRestFeature(ctx, condition) {
+ if (condition) {
+ copyPolygeneBootstrap(ctx, "domain", "SecurityModule", true);
- copyTemplate( ctx,
- 'RestApiModule/SimpleVerifier.tmpl',
- 'rest/src/main/java/' + polygene.javaPackageDir + '/rest/security/SimpleVerifier.java' );
+ copyTemplate(ctx,
+ 'RestApiModule/SimpleEnroler.tmpl',
+ 'rest/src/main/java/' + polygene.javaPackageDir + '/rest/security/SimpleEnroler.java');
- copyTemplate( ctx,
- 'RestApiModule/HardcodedSecurityRepositoryMixin.tmpl',
- 'model/src/main/java/' + polygene.javaPackageDir + '/model/security/HardcodedSecurityRepositoryMixin.java' );
+ copyTemplate(ctx,
+ 'RestApiModule/SimpleVerifier.tmpl',
+ 'rest/src/main/java/' + polygene.javaPackageDir + '/rest/security/SimpleVerifier.java');
+
+ copyTemplate(ctx,
+ 'RestApiModule/HardcodedSecurityRepositoryMixin.tmpl',
+ 'model/src/main/java/' + polygene.javaPackageDir + '/model/security/HardcodedSecurityRepositoryMixin.java');
}
}
-function copyHeroesSampleApp( ctx )
-{
- copyPolygeneDomain( ctx, "heroes", "Heroes", "Hero", hasFeature( 'sample (heroes) web application' ) );
- copyPolygeneApp( ctx, "Heroes", hasFeature( 'sample (heroes) web application' ) );
- copyTemplate( ctx,
- 'Heroes/web.tmpl',
- 'app/src/main/webapp/WEB-INF/web.xml' );
+function copyHeroesSampleApp(ctx) {
+ copyPolygeneDomain(ctx, "heroes", "Heroes", "Hero", hasFeature('sample (heroes) web application'));
+ copyPolygeneApp(ctx, "Heroes", hasFeature('sample (heroes) web application'));
+ copyTemplate(ctx,
+ 'Heroes/web.tmpl',
+ 'app/src/main/webapp/WEB-INF/web.xml');
}
-function copyTemplate( ctx, from, to )
-{
+function copyTemplate(ctx, from, to) {
ctx.fs.copyTpl(
- ctx.templatePath( from ),
- ctx.destinationPath( to ),
+ ctx.templatePath(from),
+ ctx.destinationPath(to),
{
- packageName: polygene.packagename,
+ packageName: polygene.packageName,
hasFeature: hasFeature,
hasEntityStore: hasEntityStore,
hasIndexing: hasIndexing,
hasCaching: hasCaching,
+ firstUpper: firstUpper,
polygene: polygene
}
);
}
-function hasEntityStore( esType )
-{
+function hasEntityStore(esType) {
return polygene.entitystore === esType;
}
-function hasIndexing( indexingType )
-{
+function hasIndexing(indexingType) {
return polygene.indexing === indexingType;
}
-function hasCaching( cachingType )
-{
+function hasCaching(cachingType) {
return polygene.caching === cachingType;
}
-function hasSerialization( serializer )
-{
+function hasSerialization(serializer) {
return polygene.serialization === serializer;
}
-function hasFeature( feature )
-{
- return polygene.features.indexOf( feature ) >= 0;
+function hasFeature(feature) {
+ return polygene.features.indexOf(feature) >= 0;
+}
+
+function firstUpper(text) {
+ return text.charAt(0).toUpperCase() + text.substring(1);
+}
+
+function importModel(ctx, filename) {
+ return JSON.parse(fs.readFileSync(filename, 'utf8'));
}
-function firstUpper( text )
-{
- return text.charAt( 0 ).toUpperCase() + text.substring( 1 );
+function exportModel(ctx, filename) {
+ delete polygene.current;
+ return fs.writeFileSync(filename, JSON.stringify(polygene, null, 4) + "\n", 'utf8');
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/templates/CodahaleModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/CodahaleModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/CodahaleModule/bootstrap.tmpl
new file mode 100644
index 0000000..ec826a2
--- /dev/null
+++ b/tools/generator-polygene/app/templates/CodahaleModule/bootstrap.tmpl
@@ -0,0 +1,50 @@
+<%#
+ * 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.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.metrics.codehale.assembly.CodahaleMetricsAssembler;
+import org.apache.polygene.library.rdf.repository.NativeConfiguration;
+
+public class RdfIndexingModule
+ implements ModuleAssembler
+{
+ public static final String NAME = "Rdf Indexing Module";
+ private final ModuleAssembly configModule;
+
+ public RdfIndexingModule( ModuleAssembly configModule )
+ {
+ this.configModule = configModule;
+ }
+
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+ configModule.entities( NativeConfiguration.class ).visibleIn( Visibility.application );
+ new RdfNativeSesameStoreAssembler(Visibility.application, Visibility.module).assemble( module );
+ return module;
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/templates/DomainLayer/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/bootstrap.tmpl b/tools/generator-polygene/app/templates/DomainLayer/bootstrap.tmpl
index 4e917f0..517942a 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/bootstrap.tmpl
@@ -32,7 +32,9 @@ public class DomainLayer extends LayeredLayerAssembler
throws AssemblyException
{
createModule( layer, CrudModule.class );
+<% if( hasFeature( 'rest api' ) ) { %>
createModule( layer, SecurityModule.class );
+<% } %>
return layer;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/templates/DomainModule/Crud.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainModule/Crud.tmpl b/tools/generator-polygene/app/templates/DomainModule/Crud.tmpl
new file mode 100644
index 0000000..95eed76
--- /dev/null
+++ b/tools/generator-polygene/app/templates/DomainModule/Crud.tmpl
@@ -0,0 +1,41 @@
+<%#
+ * 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 %>.model.<%= polygene.current.name %>;
+
+import org.apache.polygene.api.injection.scope.This;
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.property.Property;
+
+@Mixins( { <%= polygene.current.clazz.name %>.Mixin.class } )
+public interface <%= polygene.current.clazz.name %>
+{
+ interface State
+ {
+ Property<String> name(); // Sample hidden property
+ }
+
+ class Mixin
+ implements <%= polygene.current.clazz.name %>
+ {
+ @This
+ private State state; // Sample reference to hidden property
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/templates/DomainModule/Entity.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainModule/Entity.tmpl b/tools/generator-polygene/app/templates/DomainModule/Entity.tmpl
new file mode 100644
index 0000000..9262cad
--- /dev/null
+++ b/tools/generator-polygene/app/templates/DomainModule/Entity.tmpl
@@ -0,0 +1,41 @@
+<%#
+ * 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 %>.model.<%= polygene.current.name %>;
+
+import org.apache.polygene.api.injection.scope.This
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.property.Property;
+
+@Mixins( { <%= polygene.current.clazz.name %>.Mixin } )
+public interface <%= polygene.current.clazz.name %>
+{
+ interface State
+ {
+ Property<String> name(); // Sample hidden property
+ }
+
+ class Mixin
+ implements <%= polygene.current.clazz.name %>
+ {
+ @This
+ private State state; // Sample reference to hidden property
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/templates/DomainModule/Object.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainModule/Object.tmpl b/tools/generator-polygene/app/templates/DomainModule/Object.tmpl
new file mode 100644
index 0000000..27d6119
--- /dev/null
+++ b/tools/generator-polygene/app/templates/DomainModule/Object.tmpl
@@ -0,0 +1,33 @@
+<%#
+ * 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 %>.model.<%= polygene.current.name %>;
+
+import org.apache.polygene.api.injection.scope.This
+import org.apache.polygene.api.mixin.Mixins;
+
+public class <%= polygene.current.clazz.name %>
+{
+ @Uses
+ private String name; // Sample @Uses injection
+
+ @Structure
+ private ValueBuilderFactory vbf; // Sample @Structure injection
+
+}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/templates/DomainModule/Service.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainModule/Service.tmpl b/tools/generator-polygene/app/templates/DomainModule/Service.tmpl
new file mode 100644
index 0000000..0edefdc
--- /dev/null
+++ b/tools/generator-polygene/app/templates/DomainModule/Service.tmpl
@@ -0,0 +1,36 @@
+<%#
+ * 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 %>.model.<%= polygene.current.name %>;
+
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.value.ValueBuilderFactory;
+
+@Mixins( { <%= polygene.current.clazz.name %>.Mixin.class } )
+public interface <%= polygene.current.clazz.name %>
+{
+ class Mixin
+ implements <%= polygene.current.clazz.name %>
+ {
+ @Structure
+ private ValueBuilderFactory vbf;
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/templates/DomainModule/Value.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainModule/Value.tmpl b/tools/generator-polygene/app/templates/DomainModule/Value.tmpl
new file mode 100644
index 0000000..9262cad
--- /dev/null
+++ b/tools/generator-polygene/app/templates/DomainModule/Value.tmpl
@@ -0,0 +1,41 @@
+<%#
+ * 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 %>.model.<%= polygene.current.name %>;
+
+import org.apache.polygene.api.injection.scope.This
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.property.Property;
+
+@Mixins( { <%= polygene.current.clazz.name %>.Mixin } )
+public interface <%= polygene.current.clazz.name %>
+{
+ interface State
+ {
+ Property<String> name(); // Sample hidden property
+ }
+
+ class Mixin
+ implements <%= polygene.current.clazz.name %>
+ {
+ @This
+ private State state; // Sample reference to hidden property
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/templates/DomainModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/DomainModule/bootstrap.tmpl
new file mode 100644
index 0000000..54bc82d
--- /dev/null
+++ b/tools/generator-polygene/app/templates/DomainModule/bootstrap.tmpl
@@ -0,0 +1,85 @@
+<%#
+ * 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.domain;
+
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+<% for( var idx in polygene.current.cruds) { %><%= "import " + packageName + ".model." + polygene.current.name + "." + polygene.current.cruds[idx].name + ";" %><% } %>
+<% for( var idx in polygene.current.values) { %><%= "import " + packageName + ".model." + polygene.current.name + "." + polygene.current.values[idx].name + ";" %><% } %>
+<% for( var idx in polygene.current.entities) { %><%= "import " + packageName + ".model." + polygene.current.name + "." + polygene.current.entities[idx].name + ";" %><% } %>
+<% for( var idx in polygene.current.transients) { %><%= "import " + packageName + ".model." + polygene.current.name + "." + polygene.current.transients[idx].name + ";" %><% } %>
+<% for( var idx in polygene.current.objects) { %><%= "import " + packageName + ".model." + polygene.current.name + "." + polygene.current.objects[idx].name + ";" %><% } %>
+<% for( var idx in polygene.current.services) { %><%= "import " + packageName + ".model." + polygene.current.name + "." + polygene.current.services[idx].name + ";" %><% } %>
+
+import static org.apache.polygene.api.common.Visibility.layer;
+import static org.apache.polygene.api.common.Visibility.application;
+
+public class <%- firstUpper(polygene.current.name) %>Module
+ implements ModuleAssembler
+{
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+<% if( polygene.current.cruds ) { %>
+ <% for( var value in polygene.current.cruds ) { %>
+ <% var crud1 = polygene.current.cruds[value]; %>
+ module.values(<%- crud1.name + ".class" %>)<% if( crud1.visibility ) {%><%-".visibleIn(" + crud1.visibility +")"%><% } %>;
+ <% } %>
+ <% for( var value in polygene.current.cruds ) { %>
+ <% var crud2 = polygene.current.cruds[value]; %>
+ module.entities(<%= crud2.name + ".class" %>)<% if( crud2.visibility ) {%><%-".visibleIn(" + crud2.visibility +")"%><% } %>;
+ <% } %>
+<% } %>
+<% if( polygene.current.values ) { %>
+ <% for( var value in polygene.current.values ) { %>
+ <% var v = polygene.current.current[value]; %>
+ module.values(<%= v.name + ".class" %>)<% if( v.visibility ) {%><%-".visibleIn(" + v.visibility +")"%><% } %>;
+ <% } %>
+<% } %>
+<% if( polygene.current.entities ) { %>
+ <% for( var value in polygene.current.entities ) { %>
+ <% var entity = polygene.current.entities[value]; %>
+ module.values(<%= entity.name + ".class" %>)<% if( entity.visibility ) {%><%-".visibleIn(" + entity.visibility +")"%><% } %>;
+ <% } %>
+<% } %>
+<% if( polygene.current.transients ) { %>
+ <% for( var value in polygene.current.transients ) { %>
+ <% var trans = polygene.current.transients[value]; %>
+ module.values(<%= trans.name + ".class" %>)<% if( trans.visibility ) {%><%-".visibleIn(" + trans.visibility +")"%><% } %>;
+ <% } %>
+<% } %>
+<% if( polygene.current.objects ) { %>
+ <% for( var value in polygene.current.objects ) { %>
+ <% var obj = polygene.current.objects[value]; %>
+ module.values(<%= obj.name + ".class" %>)<% if( obj.visibility ) {%><%-".visibleIn(" + obj.visibility +")"%><% } %>;
+ <% } %>
+<% } %>
+<% if( polygene.current.services ) { %>
+ <% for( var value in polygene.current.services ) { %>
+ <% var service = polygene.current.services[value]; %>
+ module.values(<%= service.name + ".class" %>)<% if( service.visibility ) {%><%-".visibleIn(" + service.visibility +")"%><% } %>;
+ <% } %>
+<% } %>
+ return module;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/templates/SecurityModule/HardcodedSecurityRepositoryMixin.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/SecurityModule/HardcodedSecurityRepositoryMixin.tmpl b/tools/generator-polygene/app/templates/SecurityModule/HardcodedSecurityRepositoryMixin.tmpl
deleted file mode 100644
index 91c66e6..0000000
--- a/tools/generator-polygene/app/templates/SecurityModule/HardcodedSecurityRepositoryMixin.tmpl
+++ /dev/null
@@ -1,51 +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 %>.model.security;
-
-import java.util.Collections;
-import java.util.List;
-import org.apache.polygene.api.unitofwork.concern.UnitOfWorkPropagation;
-
-public class HardcodedSecurityRepositoryMixin
- implements SecurityRepository
-{
-
- @Override
- public boolean verifyPassword( String userName, String password )
- {
- if( userName.equals("admin") && password.equals("secret") ) {
- return true;
- }
- if( userName.equals("user") && password.equals("123") ) {
- return true;
- }
- return false;
- }
-
- @UnitOfWorkPropagation
- public List<String> findRoleNamesOfUser( String name )
- {
- if( "admin".equals( name ) )
- {
- return Collections.singletonList("admin");
- }
- return Collections.singletonList("user");
- }
-}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/46e02826/tools/generator-polygene/app/templates/SolrIndexingModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/SolrIndexingModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/SolrIndexingModule/bootstrap.tmpl
new file mode 100644
index 0000000..2644f78
--- /dev/null
+++ b/tools/generator-polygene/app/templates/SolrIndexingModule/bootstrap.tmpl
@@ -0,0 +1,49 @@
+<%#
+ * 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.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.index.rdf.assembly.RdfNativeSesameStoreAssembler;
+import org.apache.polygene.library.rdf.repository.NativeConfiguration;
+
+public class SolrIndexingModule
+ implements ModuleAssembler
+{
+ public static final String NAME = "Solr Indexing Module";
+ private final ModuleAssembly configModule;
+
+ public SolrIndexingModule( ModuleAssembly configModule )
+ {
+ this.configModule = configModule;
+ }
+
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+ new SolrAssembler(Visibility.application, Visibility.module).assemble( module );
+ return module;
+ }
+}
+