You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2017/03/13 10:35:08 UTC
[16/50] [abbrv] polygene-java git commit: Cleaned up the 'security'
feature. Introduced a 'applicationtype' and starting to bind the 'Rest API'
together. Slowly getting there.
Cleaned up the 'security' feature. Introduced a 'applicationtype' and starting to bind the 'Rest API' together. Slowly getting there.
Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/01949a6d
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/01949a6d
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/01949a6d
Branch: refs/heads/serialization-3.0
Commit: 01949a6d6625631f931def905510c0498d0e3bde
Parents: 70eeb7e
Author: niclas <ni...@spicter.com>
Authored: Sun Mar 12 20:07:56 2017 +0800
Committer: niclas <ni...@spicter.com>
Committed: Sun Mar 12 20:07:56 2017 +0800
----------------------------------------------------------------------
.../restlet/PolygeneRestApplication.java | 8 ---
.../library/shiro/domain/permissions/Role.java | 6 +-
tools/generator-polygene/app/index.js | 76 +++++++++-----------
.../ConfigModule/bootstrap.tmpl | 2 +-
.../templates/ConfigurationLayer/bootstrap.tmpl | 2 +-
.../RestApiModule/DefaultEnroler.tmpl | 6 +-
.../RestApiModule/DefaultVerifier.tmpl | 4 +-
.../RestApiModule/NullEnroler.tmpl | 2 +-
.../RestApiModule/NullVerifier.tmpl | 2 +-
.../RestApiModule/bootstrap.tmpl | 10 +--
.../ConnectivityLayer/RestApiModule/module.js | 2 +-
.../RestApiModule/web.xml.tmpl | 46 ++++++++++++
.../templates/ConnectivityLayer/bootstrap.tmpl | 4 +-
.../DomainLayer/CrudModule/bootstrap.tmpl | 2 +-
.../templates/DomainLayer/CrudModule/module.js | 8 ++-
.../DomainLayer/DomainModule/Configuration.tmpl | 2 +-
.../DomainLayer/DomainModule/Crud.tmpl | 2 +-
.../DomainLayer/DomainModule/Entity.tmpl | 2 +-
.../DomainLayer/DomainModule/Object.tmpl | 2 +-
.../DomainLayer/DomainModule/Service.tmpl | 2 +-
.../DomainLayer/DomainModule/Transient.tmpl | 2 +-
.../DomainLayer/DomainModule/Value.tmpl | 2 +-
.../DomainLayer/DomainModule/bootstrap.tmpl | 16 ++---
.../SecurityModule/CryptoConfiguration.tmpl | 7 +-
.../SecurityModule/CryptoException.tmpl | 2 +-
.../SecurityModule/CryptoService.tmpl | 33 +++++----
.../EncryptedStringPropertyConcern.tmpl | 2 +-
...ntityStoreBackedSecurityRepositoryMixin.tmpl | 60 ----------------
.../DomainLayer/SecurityModule/Group.tmpl | 23 ++----
.../SecurityModule/RealmService.tmpl | 27 +++++--
.../SecurityModule/SecurityRepository.tmpl | 24 ++++---
.../DomainLayer/SecurityModule/User.tmpl | 28 ++++----
.../DomainLayer/SecurityModule/UserFactory.tmpl | 55 ++++++++++++++
.../DomainLayer/SecurityModule/bootstrap.tmpl | 32 ++++++---
.../DomainLayer/SecurityModule/module.js | 2 +-
.../app/templates/DomainLayer/bootstrap.tmpl | 4 +-
.../CachingModule/bootstrap.tmpl | 2 +-
.../FileConfigurationModule/bootstrap.tmpl | 2 +-
.../IndexingModule/bootstrap.tmpl | 2 +-
.../MetricsModule/bootstrap.tmpl | 2 +-
.../SerializationModule/bootstrap.tmpl | 2 +-
.../StorageModule/bootstrap.tmpl | 2 +-
.../InfrastructureLayer/bootstrap.tmpl | 2 +-
.../templates/buildtool/gradle-bootstrap.tmpl | 2 +-
.../app/templates/buildtool/gradle-model.tmpl | 12 +++-
.../app/templates/buildtool/gradle-rest.tmpl | 4 +-
tools/generator-polygene/test/generator_test.js | 17 ++---
47 files changed, 305 insertions(+), 253 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
index 291cfba..4df326f 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
@@ -152,14 +152,6 @@ public abstract class PolygeneRestApplication extends org.restlet.Application
{
guard.setEnroler( enroler );
}
-
- // In the future, look into JAAS approach.
-// Configuration jaasConfig = Configuration.getConfiguration();
-// JaasVerifier verifier = new JaasVerifier( "BasicJaasAuthenticationApplication");
-// verifier.setConfiguration( jaasConfig);
-// verifier.setUserPrincipalClassName("com.sun.security.auth.UserPrincipal");
-// guard.setVerifier(verifier);
-
return createInterceptors( guard );
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/domain/permissions/Role.java
----------------------------------------------------------------------
diff --git a/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/domain/permissions/Role.java b/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/domain/permissions/Role.java
index d111795..85c7b02 100644
--- a/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/domain/permissions/Role.java
+++ b/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/domain/permissions/Role.java
@@ -32,7 +32,7 @@ import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
@Mixins( Role.Mixin.class )
public interface Role
- extends EntityComposite
+ extends EntityComposite
{
Property<String> name();
@@ -42,8 +42,8 @@ public interface Role
RoleAssignment assignTo( RoleAssignee assignee );
- public abstract class Mixin
- implements Role
+ abstract class Mixin
+ implements Role
{
@Structure
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/index.js b/tools/generator-polygene/app/index.js
index 583edbf..b1a12c1 100644
--- a/tools/generator-polygene/app/index.js
+++ b/tools/generator-polygene/app/index.js
@@ -59,8 +59,8 @@ module.exports = generators.Base.extend(
polygene = importModel(this.options.import);
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.applicationtype = "Rest API";
+ polygene.features = polygene.features ? polygene.features : [];
polygene.modules = polygene.modules ? polygene.modules : {};
polygene.indexing = polygene.indexing ? polygene.indexing : null;
polygene.entitystore = polygene.entitystore ? polygene.entitystore : null;
@@ -91,6 +91,16 @@ module.exports = generators.Base.extend(
},
{
type: 'list',
+ name: 'applicationtype',
+ choices: [
+ 'Command Line',
+ 'Rest API'
+ ],
+ message: 'what type of application do you want to create?',
+ default: polygene.applicationtype ? polygene.applicationtype : "Rest API"
+ },
+ {
+ type: 'list',
name: 'entitystore',
choices: [
'Cassandra',
@@ -162,7 +172,6 @@ module.exports = generators.Base.extend(
type: 'checkbox',
name: 'features',
choices: [
- 'rest api'
, 'security'
// ,'version migration'
// ,'logging'
@@ -188,22 +197,22 @@ module.exports = generators.Base.extend(
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;
- polygene.features = answers.features;
- polygene.javaPackageDir = polygene.javaPackageDir ? polygene.javaPackageDir : polygene.packageName.replace(/[.]/g, '/');
- polygene.singletonApp = false;
+ polygene = answers;
+ // 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;
+ // polygene.features = answers.features;
}.bind(this)
);
}
},
writing: function () {
+ polygene.javaPackageDir = polygene.packageName.replace(/[.]/g, '/');
polygene.ctx = this;
fs.readdir(__dirname + "/templates", function (err, files) {
files.forEach(function (directory) {
@@ -222,23 +231,6 @@ module.exports = generators.Base.extend(
}
);
-
-function hasEntityStore(esType) {
- return polygene.entitystore === esType;
-}
-
-function hasIndexing(indexingType) {
- return polygene.indexing === indexingType;
-}
-
-function hasCaching(cachingType) {
- return polygene.caching === cachingType;
-}
-
-function hasSerialization(serializer) {
- return polygene.serialization === serializer;
-}
-
function hasFeature(feature) {
return polygene.features.indexOf(feature) >= 0;
}
@@ -248,14 +240,14 @@ function firstUpper(text) {
}
function importModel(filename) {
- if ( typeof filename !== 'string' ) {
+ if (typeof filename !== 'string') {
filename = "./model.json";
}
return JSON.parse(fs.readFileSync(filename, 'utf8'));
}
function exportModel(filename) {
- if ( typeof filename !== 'string' ) {
+ if (typeof filename !== 'string') {
filename = "exported-model.json";
}
delete polygene.current;
@@ -273,11 +265,7 @@ function assignFunctions(polygene) {
ctx.templatePath(from),
ctx.destinationPath(to),
{
- packageName: polygene.packageName,
hasFeature: hasFeature,
- hasEntityStore: hasEntityStore,
- hasIndexing: hasIndexing,
- hasCaching: hasCaching,
firstUpper: firstUpper,
polygene: polygene
}
@@ -380,32 +368,32 @@ function assignFunctions(polygene) {
state.push('Property' + '<' + polygene.typeNameOnly(prop.type) + "> " + prop.name + "();")
imported[prop.type] = imported[prop.type];
var yamlDefault;
- if( prop.type === "java.lang.String" ) {
+ if (prop.type === "java.lang.String") {
yamlDefault = '""';
}
- else if( prop.type === "java.lang.Boolean" ) {
+ else if (prop.type === "java.lang.Boolean") {
yamlDefault = 'false';
}
- else if( prop.type === "java.lang.Long" ) {
+ else if (prop.type === "java.lang.Long") {
yamlDefault = '0';
}
- else if( prop.type === "java.lang.Integer" ) {
+ else if (prop.type === "java.lang.Integer") {
yamlDefault = '0';
}
- else if( prop.type === "java.lang.Double" ) {
+ else if (prop.type === "java.lang.Double") {
yamlDefault = '0.0';
}
- else if( prop.type === "java.lang.Float" ) {
+ else if (prop.type === "java.lang.Float") {
yamlDefault = '0.0';
}
else {
yamlDefault = '\n # TODO: complex configuration type. ';
}
- yaml.push( prop.name + " : " + yamlDefault);
+ yaml.push(prop.name + " : " + yamlDefault);
}
} else {
state.push('Property<String> name(); // TODO: remove sample property')
- yaml.push( 'name : "sample config value"' );
+ yaml.push('name : "sample config value"');
}
current.state = state;
current.yaml = yaml;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/ConfigurationLayer/ConfigModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConfigurationLayer/ConfigModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/ConfigurationLayer/ConfigModule/bootstrap.tmpl
index 0c925da..37eecfa 100644
--- a/tools/generator-polygene/app/templates/ConfigurationLayer/ConfigModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/ConfigurationLayer/ConfigModule/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.config;
+package <%= polygene.packageName %>.bootstrap.config;
import org.apache.polygene.api.common.Visibility;
import org.apache.polygene.bootstrap.AssemblyException;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/ConfigurationLayer/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConfigurationLayer/bootstrap.tmpl b/tools/generator-polygene/app/templates/ConfigurationLayer/bootstrap.tmpl
index bb81a83..d83ae32 100644
--- a/tools/generator-polygene/app/templates/ConfigurationLayer/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/ConfigurationLayer/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.config;
+package <%= polygene.packageName %>.bootstrap.config;
import org.apache.polygene.bootstrap.AssemblyException;
import org.apache.polygene.bootstrap.LayerAssembly;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/DefaultEnroler.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/DefaultEnroler.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/DefaultEnroler.tmpl
index c469137..31d4588 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/DefaultEnroler.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/DefaultEnroler.tmpl
@@ -16,8 +16,8 @@
* limitations under the License.
*
*
--%>
-package <%= packageName %>.rest.security;
+%>
+package <%= polygene.packageName %>.rest.security;
import java.util.ArrayList;
import java.util.List;
@@ -27,7 +27,7 @@ import org.restlet.Application;
import org.restlet.data.ClientInfo;
import org.restlet.security.Enroler;
import org.restlet.security.Role;
-import <%= packageName %>.model.security.SecurityRepository;
+import <%= polygene.packageName %>.model.security.SecurityRepository;
public class DefaultEnroler
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/DefaultVerifier.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/DefaultVerifier.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/DefaultVerifier.tmpl
index 256b39d..e31e240 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/DefaultVerifier.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/DefaultVerifier.tmpl
@@ -17,12 +17,12 @@
*
*
-%>
-package <%= packageName %>.rest.security;
+package <%= polygene.packageName %>.rest.security;
import org.apache.polygene.api.injection.scope.Service;
import org.restlet.security.SecretVerifier;
import org.restlet.security.Verifier;
-import <%= packageName %>.model.security.SecurityRepository;
+import <%= polygene.packageName %>.model.security.SecurityRepository;
public class DefaultVerifier extends SecretVerifier
implements Verifier
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullEnroler.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullEnroler.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullEnroler.tmpl
index 8076289..c24ddce 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullEnroler.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullEnroler.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.rest.security;
+package <%= polygene.packageName %>.rest.security;
import org.restlet.data.ClientInfo;
import org.restlet.security.Enroler;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullVerifier.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullVerifier.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullVerifier.tmpl
index e7af254..5d6b349 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullVerifier.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullVerifier.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.rest.security;
+package <%= polygene.packageName %>.rest.security;
import org.restlet.security.SecretVerifier;
import org.restlet.security.Verifier;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/bootstrap.tmpl
index d2ad313..0594546 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/bootstrap.tmpl
@@ -17,14 +17,14 @@
*
*
-%>
-package <%= packageName %>.bootstrap.connectivity;
+package <%= polygene.packageName %>.bootstrap.connectivity;
<% if( hasFeature('security') ) { %>
-import <%= packageName %>.rest.security.DefaultEnroler;
-import <%= packageName %>.rest.security.DefaultVerifier;
+import <%= polygene.packageName %>.rest.security.DefaultEnroler;
+import <%= polygene.packageName %>.rest.security.DefaultVerifier;
<% } else { %>
-import <%= packageName %>.rest.security.NullEnroler;
-import <%= packageName %>.rest.security.NullVerifier;
+import <%= polygene.packageName %>.rest.security.NullEnroler;
+import <%= polygene.packageName %>.rest.security.NullVerifier;
<% } %>
import org.apache.polygene.bootstrap.AssemblyException;
import org.apache.polygene.bootstrap.LayerAssembly;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/module.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/module.js b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/module.js
index 8524da3..4a2af7d 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/module.js
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/module.js
@@ -2,7 +2,7 @@
module.exports = {
write: function (p) {
- if (p.hasFeature("rest api")) {
+ if (p.applicationtype === 'Rest API') {
p.copyTemplate(p.ctx,
'ConnectivityLayer/RestApiModule/bootstrap.tmpl',
'bootstrap/src/main/java/' + p.javaPackageDir + '/bootstrap/connectivity/RestApiModule.java');
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/web.xml.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/web.xml.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/web.xml.tmpl
new file mode 100644
index 0000000..d650933
--- /dev/null
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/web.xml.tmpl
@@ -0,0 +1,46 @@
+<%#
+ ~ 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.
+ ~
+ ~
+%><?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+ version="2.5">
+
+ <display-name><%= polygene.name %></display-name>
+<% if( polygene.hasFeature( "security" ) { %>
+ <listener>
+ <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
+ </listener>
+<% } %>
+<% if( polygene.hasFeature( "security" ) { %>
+ <filter>
+ <filter-name>ShiroFilter</filter-name>
+ <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
+ </filter>
+<% } %>
+<% if( polygene.hasFeature( "security" ) { %>
+ <-- Filter all web requests. This filter mapping is typically declared
+ before all others to ensure any other filters are secured as well: -->
+ <filter-mapping>
+ <filter-name>ShiroFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+<% } %>
+
+</web-app>
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/ConnectivityLayer/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/bootstrap.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/bootstrap.tmpl
index 941e77e..efe2d4d 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.connectivity;
+package <%= polygene.packageName %>.bootstrap.connectivity;
import org.apache.polygene.bootstrap.AssemblyException;
import org.apache.polygene.bootstrap.LayerAssembly;
@@ -33,7 +33,7 @@ public class ConnectivityLayer extends LayeredLayerAssembler
public LayerAssembly assemble( LayerAssembly layer )
throws AssemblyException
{
-<% if( hasFeature('rest api') ) { %>
+<% if( polygene.applicationtype === 'Rest API' ) { %>
createModule( layer, RestApiModule.class );
<% } -%>
return layer;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/CrudModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/CrudModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/DomainLayer/CrudModule/bootstrap.tmpl
index 0877723..2c50918 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/CrudModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/CrudModule/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.domain;
+package <%= polygene.packageName %>.bootstrap.domain;
import org.apache.polygene.bootstrap.AssemblyException;
import org.apache.polygene.bootstrap.LayerAssembly;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/CrudModule/module.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/CrudModule/module.js b/tools/generator-polygene/app/templates/DomainLayer/CrudModule/module.js
index acc509a..6c930d9 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/CrudModule/module.js
+++ b/tools/generator-polygene/app/templates/DomainLayer/CrudModule/module.js
@@ -2,8 +2,10 @@
module.exports = {
write: function (p) {
- p.copyTemplate(p.ctx,
- 'DomainLayer/CrudModule/bootstrap.tmpl',
- 'bootstrap/src/main/java/' + p.javaPackageDir + '/bootstrap/domain/CrudModule.java');
+ if( p.applicationtype === 'Rest API' ) {
+ p.copyTemplate(p.ctx,
+ 'DomainLayer/CrudModule/bootstrap.tmpl',
+ 'bootstrap/src/main/java/' + p.javaPackageDir + '/bootstrap/domain/CrudModule.java');
+ }
}
};
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Configuration.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Configuration.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Configuration.tmpl
index 071ee7b..b5ab022 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Configuration.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Configuration.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.model.<%= polygene.current.name %>;
+package <%= polygene.packageName %>.model.<%= polygene.current.name %>;
import org.apache.polygene.api.property.Property;
<%
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Crud.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Crud.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Crud.tmpl
index df53506..2abd6b3 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Crud.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Crud.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.model.<%= polygene.current.name %>;
+package <%= polygene.packageName %>.model.<%= polygene.current.name %>;
import org.apache.polygene.api.injection.scope.This;
import org.apache.polygene.api.mixin.Mixins;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Entity.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Entity.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Entity.tmpl
index df53506..2abd6b3 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Entity.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Entity.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.model.<%= polygene.current.name %>;
+package <%= polygene.packageName %>.model.<%= polygene.current.name %>;
import org.apache.polygene.api.injection.scope.This;
import org.apache.polygene.api.mixin.Mixins;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Object.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Object.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Object.tmpl
index 9ff4e00..d51cdf5 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Object.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Object.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.model.<%= polygene.current.name %>;
+package <%= polygene.packageName %>.model.<%= polygene.current.name %>;
import org.apache.polygene.api.injection.scope.Structure;
import org.apache.polygene.api.injection.scope.Uses;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Service.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Service.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Service.tmpl
index 5710441..67c989b 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Service.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Service.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.model.<%= polygene.current.name %>;
+package <%= polygene.packageName %>.model.<%= polygene.current.name %>;
import org.apache.polygene.api.configuration.Configuration;
import org.apache.polygene.api.injection.scope.Structure;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Transient.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Transient.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Transient.tmpl
index 1fae121..ffb1660 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Transient.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Transient.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.model.<%= polygene.current.name %>;
+package <%= polygene.packageName %>.model.<%= polygene.current.name %>;
import org.apache.polygene.api.injection.scope.Uses;
import org.apache.polygene.api.mixin.Mixins;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Value.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Value.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Value.tmpl
index 34a95b0..3d3baea 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Value.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Value.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.model.<%= polygene.current.name %>;
+package <%= polygene.packageName %>.model.<%= polygene.current.name %>;
import org.apache.polygene.api.injection.scope.This;
import org.apache.polygene.api.mixin.Mixins;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/DomainModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/bootstrap.tmpl
index 17b391a..092d683 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.domain;
+package <%= polygene.packageName %>.bootstrap.domain;
import org.apache.polygene.bootstrap.AssemblyException;
import org.apache.polygene.bootstrap.LayerAssembly;
@@ -25,32 +25,32 @@ 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 + ";" %>
+%><%= "import " + polygene.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 + ";" %>
+%><%= "import " + polygene.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 + ";" %>
+%><%= "import " + polygene.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 + ";" %>
+%><%= "import " + polygene.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 + ";" %>
+%><%= "import " + polygene.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 " + packageName + ".model." + polygene.current.name + "." + polygene.configurationClassName(polygene.current.services[idx].name) + ";" %>
+%><%= "import " + polygene.packageName + ".model." + polygene.current.name + "." + polygene.current.services[idx].name + ";" %>
+<%= "import " + polygene.packageName + ".model." + polygene.current.name + "." + polygene.configurationClassName(polygene.current.services[idx].name) + ";" %>
<%
} %>
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoConfiguration.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoConfiguration.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoConfiguration.tmpl
index 89883a2..3262390 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoConfiguration.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoConfiguration.tmpl
@@ -17,18 +17,19 @@
*
*
-%>
-package <%= packageName %>.model.security;
+package <%= polygene.packageName %>.model.security;
+import org.apache.polygene.api.configuration.ConfigurationComposite;
import org.apache.polygene.api.property.Property;
import org.apache.polygene.api.common.Optional;
-public class CryptoConfiguration
+public interface CryptoConfiguration extends ConfigurationComposite
{
@Optional
Property<String> digestAlgorithm();
@Optional
- Property<String> digestAlgorithm();
+ Property<String> encryptionAlgorithm();
Property<String> secret1();
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoException.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoException.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoException.tmpl
index 00ec8f8..d6e8d38 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoException.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoException.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.model.security;
+package <%= polygene.packageName %>.model.security;
public class CryptoException extends RuntimeException
{
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoService.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoService.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoService.tmpl
index 4bc72c2..588e70d 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoService.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/CryptoService.tmpl
@@ -17,13 +17,15 @@
*
*
-%>
-package <%= packageName %>.model.security;
+package <%= polygene.packageName %>.model.security;
import java.security.MessageDigest;
-import java.crypto.Cipher;
-import java.crypto.spec.IvParameterSpec;
-import java.crypto.spec.SecretKeySpec;
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import org.apache.polygene.api.injection.scope.This;
+import org.apache.polygene.api.configuration.Configuration;
import org.apache.polygene.api.mixin.Mixins;
import org.apache.polygene.api.property.Property;
@@ -34,31 +36,35 @@ public interface CryptoService
String decrypt( String encrypted );
- class CryptoMixin
+ class Mixin
implements CryptoService
{
- private byte[] keyBytes;
- private byte[] ivBytes;
+ private SecretKeySpec key;
+ private IvParameterSpec ivSpec;
private Cipher cipher;
private MessageDigest digest;
- public CryptoMixin(Configuration<CryptoConfiguration> configuration)
+ public Mixin( @This Configuration<CryptoConfiguration> configuration)
throws Exception
{
- CryptoConfiguration config = configuration.configuration().get();
+ CryptoConfiguration config = configuration.get();
String digestAlgorithm = config.digestAlgorithm().get();
if( digestAlgorithm == null )
+ {
digestAlgorithm = "SHA-1";
- digest = MessageDigest.getInstance( );
+ }
+ digest = MessageDigest.getInstance( digestAlgorithm );
byte[] keyBytes = hashed( config.secret1().get() );
byte[] ivBytes = hashed( config.secret2().get() );
- SecretKeySpec key = new SecretKeySpec(keyBytes, "DES");
- IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
+ key = new SecretKeySpec(keyBytes, "DES");
+ ivSpec = new IvParameterSpec(ivBytes);
String encryptionAlgorithm = config.encryptionAlgorithm().get();
if( encryptionAlgorithm == null )
+ {
encryptionAlgorithm = "AES";
+ }
cipher = Cipher.getInstance( encryptionAlgorithm );
}
@@ -88,7 +94,8 @@ public interface CryptoService
cipher.init(Cipher.DECRYPT_MODE, key, ivSpec);
byte[] encrypted = encryptedString.getBytes();
- byte[] decrypted = new byte[cipher.getOutputSize(enc_len)];
+ int enc_len = encrypted.length;
+ byte[] decrypted = new byte[cipher.getOutputSize(encrypted.length)];
int dec_len = cipher.update(encrypted, 0, enc_len, decrypted, 0);
dec_len += cipher.doFinal(decrypted, dec_len);
return new String( decrypted, 0, dec_len );
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/EncryptedStringPropertyConcern.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/EncryptedStringPropertyConcern.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/EncryptedStringPropertyConcern.tmpl
index 4083a39..5db973c 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/EncryptedStringPropertyConcern.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/EncryptedStringPropertyConcern.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.model.security;
+package <%= polygene.packageName %>.model.security;
import org.apache.polygene.api.concern.ConcernOf;
import org.apache.polygene.api.property.Property;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/EntityStoreBackedSecurityRepositoryMixin.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/EntityStoreBackedSecurityRepositoryMixin.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/EntityStoreBackedSecurityRepositoryMixin.tmpl
deleted file mode 100644
index 56c4a5c..0000000
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/EntityStoreBackedSecurityRepositoryMixin.tmpl
+++ /dev/null
@@ -1,60 +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 EntityStoreBackedSecurityRepositoryMixin
- implements SecurityRepository
-{
- @Structure
- private UnitOfWorkFactory uowf;
-
- @Override
- @UnitOfWorkPropagation
- public boolean verifyPassword( String userName, String password )
- {
- Identity identity = new StringIdentity("User-" + userName );
- User user = uow.currentUnitOfWork(User.class, identity );
-
- 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/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/Group.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/Group.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/Group.tmpl
index 8e0aba8..ea212d2 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/Group.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/Group.tmpl
@@ -16,26 +16,11 @@
* limitations under the License.
*
*
--%>
-package <%= packageName %>.model.security;
+%>
+package <%= polygene.packageName %>.model.security;
-import org.apache.polygene.api.injection.scope.This;
-import org.apache.polygene.api.mixin.Mixins;
-import org.apache.polygene.api.property.Property;
+import org.apache.polygene.library.shiro.domain.permissions.RoleAssignee;
-@Mixins( { Group.Mixin } )
-public interface Group
+public interface Group extends RoleAssignee
{
- interface State
- {
- Property<String> password();
- }
-
- class Mixin
- implements Group
- {
- @This
- private State state; // Sample reference to hidden property
-
- }
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/RealmService.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/RealmService.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/RealmService.tmpl
index 875f35b..106975f 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/RealmService.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/RealmService.tmpl
@@ -17,15 +17,23 @@
*
*
-%>
-package <%= packageName %>.model.security;
+package <%= polygene.packageName %>.model.security;
-@Mixins( MyRealmMixin.class )
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.service.ServiceActivation;
+
+import org.apache.shiro.authc.credential.DefaultPasswordService;
+import org.apache.shiro.authc.credential.PasswordMatcher;
+import org.apache.shiro.authc.credential.PasswordService;
+import org.apache.shiro.realm.Realm;
+import org.apache.shiro.realm.SimpleAccountRealm;
+
+@Mixins( RealmService.Mixin.class )
public interface RealmService
- extends Realm, ServiceComposite, ServiceActivation
+ extends Realm, ServiceActivation
{
- class Mixin
- extends SimpleAccountRealm
- implements ServiceActivation
+ class Mixin extends SimpleAccountRealm
+ implements ServiceActivation
{
private final PasswordService passwordService;
@@ -42,8 +50,13 @@ public interface RealmService
public void activateService()
throws Exception
{
- // Create a test account
+ // Create a test account
addAccount( "foo", passwordService.encryptPassword( "bar" ) );
}
+
+ public void passivateService()
+ throws Exception
+ {
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/SecurityRepository.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/SecurityRepository.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/SecurityRepository.tmpl
index 5910c7c..06eb69c 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/SecurityRepository.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/SecurityRepository.tmpl
@@ -17,18 +17,24 @@
*
*
-%>
-package <%= packageName %>.model.security;
+package <%= polygene.packageName %>.model.security;
+import java.util.Collections;
import java.util.List;
import org.apache.polygene.api.concern.Concerns;
import org.apache.polygene.api.identity.Identity;
import org.apache.polygene.api.identity.StringIdentity;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.mixin.Mixins;
import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
import org.apache.polygene.api.unitofwork.concern.UnitOfWorkConcern;
import org.apache.polygene.api.unitofwork.concern.UnitOfWorkPropagation;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.apache.shiro.subject.Subject;
@Concerns( UnitOfWorkConcern.class )
-@Mixins( { SecurityRepository.EntiyStoreBackedMixin.class } )
+@Mixins( { SecurityRepository.ShiroBackedSecurityRepositoryMixin.class } )
public interface SecurityRepository
{
@UnitOfWorkPropagation
@@ -38,7 +44,7 @@ public interface SecurityRepository
List<String> findRoleNamesOfUser( String name );
- class EntityStoreBackedSecurityRepositoryMixin
+ class ShiroBackedSecurityRepositoryMixin
implements SecurityRepository
{
@Structure
@@ -48,16 +54,18 @@ public interface SecurityRepository
@UnitOfWorkPropagation
public boolean verifyPassword( String userName, String password )
{
- Identity identity = new StringIdentity("User-" + userName );
- User user = uow.currentUnitOfWork(User.class, identity );
- return user.verify( password );
+ Subject currentUser = SecurityUtils.getSubject();
+ return currentUser.isAuthenticated();
}
@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/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/User.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/User.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/User.tmpl
index 32f2db1..08db130 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/User.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/User.tmpl
@@ -16,36 +16,36 @@
* limitations under the License.
*
*
--%>
-package <%= packageName %>.model.security;
+%>
+package <%= polygene.packageName %>.model.security;
+import org.apache.polygene.api.association.ManyAssociation;
+import org.apache.polygene.api.concern.Concerns;
import org.apache.polygene.api.injection.scope.This;
import org.apache.polygene.api.mixin.Mixins;
import org.apache.polygene.api.property.Property;
+import org.apache.polygene.library.shiro.domain.passwords.PasswordSecurable;
+import org.apache.polygene.library.shiro.domain.permissions.RoleAssignee;
-@Mixins( { User.Mixin } )
-public interface User
+@Mixins( { User.GroupsMixin.class } )
+public interface User extends PasswordSecurable, RoleAssignee
{
+ boolean isMemberOf( Group group );
interface State
{
- @Concerns( EncryptedStringPropertyConcern.class )
- Property<String> password();
-
ManyAssociation<Group> memberOf();
}
- class Mixin
+ abstract class GroupsMixin
implements User
{
- @Service
- private HashingService hashing;
-
@This
private State state;
-
+ public boolean isMemberOf( Group group )
+ {
+ return state.memberOf().contains( group );
+ }
}
-
-
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/UserFactory.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/UserFactory.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/UserFactory.tmpl
new file mode 100644
index 0000000..298950e
--- /dev/null
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/UserFactory.tmpl
@@ -0,0 +1,55 @@
+<%#
+ * 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 <%= polygene.packageName %>.model.security;
+
+import org.apache.polygene.api.entity.EntityBuilder;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.injection.scope.Service;
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+
+import org.apache.shiro.authc.credential.PasswordService;
+
+@Mixins( UserFactory.Mixin.class )
+public interface UserFactory
+{
+
+ User createNewUser( String username, String password );
+
+ class Mixin
+ implements UserFactory
+ {
+ @Structure
+ private UnitOfWorkFactory uowf;
+
+ @Service
+ private PasswordService passwordService;
+
+ @Override
+ public User createNewUser( String username, String password )
+ {
+ EntityBuilder<User> userBuilder = uowf.currentUnitOfWork().newEntityBuilder( User.class );
+ User user = userBuilder.instance();
+ user.subjectIdentifier().set( username );
+ user.password().set( passwordService.encryptPassword( password ) );
+ return userBuilder.newInstance();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/bootstrap.tmpl
index 7513044..e60c563 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/bootstrap.tmpl
@@ -17,17 +17,21 @@
*
*
-%>
-package <%= packageName %>.bootstrap.domain;
+package <%= polygene.packageName %>.bootstrap.domain;
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.library.shiro.assembly.PasswordDomainAssembler;
+import org.apache.polygene.library.shiro.assembly.PermissionsDomainAssembler;
import org.apache.polygene.library.shiro.assembly.StandaloneShiroAssembler;
-
-import <%= packageName %>.model.security.SecurityRepository;
-import <%= packageName %>.model.security.HardcodedSecurityRepositoryMixin;
+import org.apache.polygene.library.shiro.ini.ShiroIniConfiguration;
+import <%= polygene.packageName %>.model.security.RealmService;
+import <%= polygene.packageName %>.model.security.SecurityRepository;
+import <%= polygene.packageName %>.model.security.User;
+import <%= polygene.packageName %>.model.security.UserFactory;
public class SecurityModule
implements ModuleAssembler
@@ -39,15 +43,27 @@ public class SecurityModule
throws AssemblyException
{
module.services( SecurityRepository.class )
- .withMixins( HardcodedSecurityRepositoryMixin.class )
.visibleIn( Visibility.application )
.instantiateOnStartup();
- new StandaloneShiroAssembler().
- withConfig( configModule, Visibility.layer ).
- assemble( module );
+ new StandaloneShiroAssembler()
+ .withConfig( module, Visibility.layer )
+ .assemble( module );
module.services( RealmService.class );
+ module.forMixin( ShiroIniConfiguration.class )
+ .declareDefaults()
+ .iniResourcePath().set( "classpath:standalone-shiro.ini" );
+
+ new PasswordDomainAssembler()
+ .withConfig( module, Visibility.layer )
+ .assemble( module );
+
+ new PermissionsDomainAssembler().assemble( module );
+
+ module.entities( User.class );
+ module.services( UserFactory.class );
+
return module;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/module.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/module.js b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/module.js
index 5d21aaa..1ba7360 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/module.js
+++ b/tools/generator-polygene/app/templates/DomainLayer/SecurityModule/module.js
@@ -11,11 +11,11 @@ module.exports = {
copyFile(p, "CryptoException");
copyFile(p, "CryptoService");
copyFile(p, "EncryptedStringPropertyConcern");
- copyFile(p, "EntityStoreBackedSecurityRepositoryMixin");
copyFile(p, "Group");
copyFile(p, "RealmService");
copyFile(p, "SecurityRepository");
copyFile(p, "User");
+ copyFile(p, "UserFactory");
}
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/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 68be6f3..638941f 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.domain;
+package <%= polygene.packageName %>.bootstrap.domain;
import org.apache.polygene.bootstrap.AssemblyException;
import org.apache.polygene.bootstrap.LayerAssembly;
@@ -31,7 +31,7 @@ public class DomainLayer extends LayeredLayerAssembler
public LayerAssembly assemble( LayerAssembly layer )
throws AssemblyException
{
-<% if( hasFeature( 'rest api' ) ) {
+<% if( polygene.applicationtype === 'Rest API' ) {
%> createModule( layer, CrudModule.class );<%
}
for( var mod in polygene.modules ) {%>
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/InfrastructureLayer/CachingModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/CachingModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/InfrastructureLayer/CachingModule/bootstrap.tmpl
index 4945277..d9d86a9 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/CachingModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/CachingModule/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.infrastructure;
+package <%= polygene.packageName %>.bootstrap.infrastructure;
import org.apache.polygene.api.common.Visibility;
import org.apache.polygene.bootstrap.AssemblyException;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/InfrastructureLayer/FileConfigurationModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/FileConfigurationModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/InfrastructureLayer/FileConfigurationModule/bootstrap.tmpl
index ab2ad2c..380cc19 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/FileConfigurationModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/FileConfigurationModule/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.infrastructure;
+package <%= polygene.packageName %>.bootstrap.infrastructure;
import org.apache.polygene.api.common.Visibility;
import org.apache.polygene.bootstrap.AssemblyException;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/bootstrap.tmpl
index c7e1975..6648c9f 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.infrastructure;
+package <%= polygene.packageName %>.bootstrap.infrastructure;
import org.apache.polygene.api.common.Visibility;
import org.apache.polygene.bootstrap.AssemblyException;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/InfrastructureLayer/MetricsModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/MetricsModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/InfrastructureLayer/MetricsModule/bootstrap.tmpl
index a4d3919..d06c9cc 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/MetricsModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/MetricsModule/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.infrastructure;
+package <%= polygene.packageName %>.bootstrap.infrastructure;
import org.apache.polygene.api.common.Visibility;
import org.apache.polygene.bootstrap.AssemblyException;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/InfrastructureLayer/SerializationModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/SerializationModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/InfrastructureLayer/SerializationModule/bootstrap.tmpl
index 62b3586..f75dc3a 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/SerializationModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/SerializationModule/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.infrastructure;
+package <%= polygene.packageName %>.bootstrap.infrastructure;
import org.apache.polygene.api.common.Visibility;
import org.apache.polygene.bootstrap.AssemblyException;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/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 997fe3b..5cde992 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.infrastructure;
+package <%= polygene.packageName %>.bootstrap.infrastructure;
import org.apache.polygene.api.common.Visibility;
import org.apache.polygene.bootstrap.AssemblyException;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/InfrastructureLayer/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/bootstrap.tmpl b/tools/generator-polygene/app/templates/InfrastructureLayer/bootstrap.tmpl
index d02d6a9..cead6b3 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/bootstrap.tmpl
@@ -17,7 +17,7 @@
*
*
-%>
-package <%= packageName %>.bootstrap.infrastructure;
+package <%= polygene.packageName %>.bootstrap.infrastructure;
import org.apache.polygene.bootstrap.AssemblyException;
import org.apache.polygene.bootstrap.LayerAssembly;
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/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 bc0a651..fa3630a 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
@@ -26,7 +26,7 @@ dependencies {
compile "org.apache.polygene.libraries:org.apache.polygene.library.fileconfig:$polygeneVersion"
-<% if( hasFeature( 'rest api' ) ) { %>
+<% if( polygene.applicationtype === 'Rest API' ) { %>
compile "org.apache.polygene.libraries:org.apache.polygene.library.restlet:$polygeneVersion"
<% } %>
compile "org.apache.polygene.extensions:org.apache.polygene.extension.entitystore-<%= polygene.entitystore.toLowerCase() %>:$polygeneVersion"
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/buildtool/gradle-model.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-model.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-model.tmpl
index 7f75b20..7b7243a 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-model.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-model.tmpl
@@ -18,6 +18,12 @@
*
-%>
-// dependencies {
-// compile "org.restlet.jee:org.restlet:2.3.4"
-// }
+dependencies {
+
+<% if( hasFeature( 'security' ) ) {
+%> compile "org.apache.polygene.libraries:org.apache.polygene.library.shiro-core:$polygeneVersion"
+<% } %>
+<% if( polygene.applicationtype === 'Rest API' ) {
+%> compile "org.apache.polygene.libraries:org.apache.polygene.library.restlet:$polygeneVersion"
+<% } %>
+}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/app/templates/buildtool/gradle-rest.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-rest.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-rest.tmpl
index 82afa09..d07ac02 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-rest.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-rest.tmpl
@@ -22,6 +22,8 @@ dependencies {
compile project( ":model" )
compile "org.apache.polygene.core:org.apache.polygene.core.api:$polygeneVersion"
- compile "org.apache.polygene.libraries:org.apache.polygene.library.restlet:$polygeneVersion"
+<% if( polygene.applicationtype === 'Rest API' ) {
+%> compile "org.apache.polygene.libraries:org.apache.polygene.library.restlet:$polygeneVersion"
+<% } %>
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/01949a6d/tools/generator-polygene/test/generator_test.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/test/generator_test.js b/tools/generator-polygene/test/generator_test.js
index 07b9c84..d5f2b58 100644
--- a/tools/generator-polygene/test/generator_test.js
+++ b/tools/generator-polygene/test/generator_test.js
@@ -5,17 +5,8 @@ var shell = require('shelljs');
//See http://yeoman.io/authoring/testing.html
-describe('polygene-generator-defaults', function () {
- this.timeout(10000);
- it('generates a Gradle buildable Apache Polygene project', function () {
- return helpers.run(path.join(__dirname, '../app'))
- .withPrompts({
- name: 'test-project',
- packageName: 'org.apache.polygene.generator.test'
- })
- .then(buildAndVerify);
- });
-});
+// test with all defaults first.
+test();
var entityStores = [
'Cassandra',
@@ -104,7 +95,7 @@ entityStores.forEach(function (entitystore) {
});
function test(entityStore, indexing, serialization, caching, metrics, features) {
- describe('polygene-generator-default-and-' + entityStore.toLowerCase() + "-entitystore", function () {
+ describe('polygene-generator', function () {
this.timeout(10000);
it('generates a Gradle buildable Apache Polygene project with '
+ entityStore + 'EntityStore, '
@@ -115,10 +106,10 @@ function test(entityStore, indexing, serialization, caching, metrics, features)
+ ' and ' + features + '.',
function () {
return helpers.run(path.join(__dirname, '../app'))
+ .inDir(path.join(__dirname, '../build/test-project'))
.withPrompts({
name: 'test-project',
packageName: 'org.apache.polygene.generator.test',
-
entitystore: entityStore,
serialization: serialization,
indexing: indexing,