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/02/18 00:43:39 UTC

[13/15] polygene-java git commit: Yeoman generator improvements

Yeoman generator improvements


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/75b3668c
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/75b3668c
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/75b3668c

Branch: refs/heads/develop
Commit: 75b3668c43a3ae28221f6b06b7e16b6907d24f51
Parents: ea639e8
Author: niclas <ni...@spicter.com>
Authored: Tue Feb 14 12:47:34 2017 +0800
Committer: niclas <ni...@spicter.com>
Committed: Tue Feb 14 12:47:34 2017 +0800

----------------------------------------------------------------------
 .../helpers/MapEntityStoreMixin.java            |   2 +-
 .../spi/value/ValueDeserializerAdapter.java     |  13 +--
 tools/generator-polygene/app/index.js           |   9 +-
 .../app/templates/buildtool/gradle-app.tmpl     |   2 +-
 .../templates/buildtool/gradle-bootstrap.tmpl   |   4 +-
 .../app/templates/buildtool/gradle-rest.tmpl    |   2 +-
 .../buildtool/gradle-wrapper.properties_        |   2 +-
 tools/shell/src/docs/shell.txt                  | 101 -------------------
 tools/src/docs/yeoman_polygene.txt              |  99 ++++++++++++++++++
 9 files changed, 117 insertions(+), 117 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/75b3668c/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
index 40cfa76..dc4db58 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
@@ -405,7 +405,7 @@ public class MapEntityStoreMixin
                 catch( JSONException e )
                 {
                     // Value not found, default it
-                    Object initialValue = propertyDescriptor.initialValue( module );
+                    Object initialValue = propertyDescriptor.resolveInitialValue(module);
                     properties.put( propertyDescriptor.qualifiedName(), initialValue );
                     status[ 0 ] = EntityStatus.UPDATED;
                 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/75b3668c/core/spi/src/main/java/org/apache/polygene/spi/value/ValueDeserializerAdapter.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/value/ValueDeserializerAdapter.java b/core/spi/src/main/java/org/apache/polygene/spi/value/ValueDeserializerAdapter.java
index cac2270..c586498 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/value/ValueDeserializerAdapter.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/value/ValueDeserializerAdapter.java
@@ -48,6 +48,7 @@ import java.util.stream.StreamSupport;
 import org.apache.polygene.api.entity.EntityReference;
 import org.apache.polygene.api.identity.Identity;
 import org.apache.polygene.api.identity.StringIdentity;
+import org.apache.polygene.api.property.Property;
 import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.api.type.CollectionType;
 import org.apache.polygene.api.type.EnumType;
@@ -462,20 +463,20 @@ public abstract class ValueDeserializerAdapter<InputType, InputNodeType>
         final Map<String, Object> stateMap = new HashMap<>();
 
         // Properties
-        valueCompositeType.properties().forEach( property -> {
+        valueCompositeType.properties().forEach( propertyDescriptor -> {
             String propertyName = null;
             Object value;
             try
             {
-                propertyName = property.qualifiedName().name();
+                propertyName = propertyDescriptor.qualifiedName().name();
                 if( objectHasField( module, inputNode, propertyName ) )
                 {
                     value = getObjectFieldValue(
                         module,
                         inputNode,
                         propertyName,
-                        buildDeserializeInputNodeFunction( module, property.valueType() ) );
-                    if( property.isImmutable() )
+                        buildDeserializeInputNodeFunction( module, propertyDescriptor.valueType() ) );
+                    if( propertyDescriptor.isImmutable() )
                     {
                         if( value instanceof Set )
                         {
@@ -494,12 +495,12 @@ public abstract class ValueDeserializerAdapter<InputType, InputNodeType>
                 else
                 {
                     // Serialized object does not contain the field, try to default it
-                    value = property.initialValue( module );
+                    value = propertyDescriptor.resolveInitialValue(module);
                 }
             }
             catch( Exception e )
             {
-                throw new ValueSerializationException( "Unable to deserialize property " + property, e );
+                throw new ValueSerializationException( "Unable to deserialize property " + propertyDescriptor, e );
             }
             stateMap.put( propertyName, value );
         } );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/75b3668c/tools/generator-polygene/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/index.js b/tools/generator-polygene/app/index.js
index 4d57562..cddb34a 100644
--- a/tools/generator-polygene/app/index.js
+++ b/tools/generator-polygene/app/index.js
@@ -61,22 +61,23 @@ module.exports = generators.Base.extend(
                         type: 'list',
                         name: 'entitystore',
                         choices: [
+                            'Cassandra',
                             'File',
+                            'DerbySQL',
                             'Geode',
+                            'H2SQL',
                             'Hazelcast',
                             'JClouds',
                             'Jdbm',
                             'LevelDB',
                             'Memory',
                             'MongoDB',
+                            'MySQL',
                             'Preferences',
                             'Redis',
                             'Riak',
-                            'MySQL',
                             'PostgresSQL',
-                            'SQLite',
-                            'H2SQL',
-                            'DerbySQL'
+                            'SQLite'
                         ],
                         message: 'Which entity store do you want to use?'
                     },

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/75b3668c/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
index f307e8b..880a5e5 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
@@ -30,7 +30,7 @@ dependencies {
 
   compile "org.apache.polygene.core:org.apache.polygene.core.spi:$polygeneVersion"
   compile "org.apache.polygene.core:org.apache.polygene.core.bootstrap:$polygeneVersion"
-  compile "org.apache.polygene.library:org.apache.polygene.library.servlet:$polygeneVersion"
+  compile "org.apache.polygene.libraries:org.apache.polygene.library.servlet:$polygeneVersion"
 
   compile "javax.servlet:servlet-api:2.5"
   compile "org.restlet.jee:org.restlet:2.3.4"

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/75b3668c/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 3261944..d13cb96 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
@@ -25,9 +25,9 @@ dependencies {
   compile "org.apache.polygene.core:org.apache.polygene.core.bootstrap:$polygeneVersion"
 
 
-  compile "org.apache.polygene.library:org.apache.polygene.library.fileconfig:$polygeneVersion"
+  compile "org.apache.polygene.libraries:org.apache.polygene.library.fileconfig:$polygeneVersion"
 <% if( hasFeature( 'rest api' ) ) { %>
-  compile "org.apache.polygene.library:org.apache.polygene.library.restlet:$polygeneVersion"
+  compile "org.apache.polygene.libraries:org.apache.polygene.library.restlet:$polygeneVersion"
 <% } %>
   compile "org.apache.polygene.extension:org.apache.polygene.extension.entitystore-<%= polygene.entitystore.toLowerCase() %>:$polygeneVersion"
   compile "org.apache.polygene.extension:org.apache.polygene.extension.indexing-<%= polygene.indexing.toLowerCase() %>:$polygeneVersion"

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/75b3668c/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 5c389c2..82afa09 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-rest.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-rest.tmpl
@@ -22,6 +22,6 @@ dependencies {
   compile project( ":model" )
 
   compile "org.apache.polygene.core:org.apache.polygene.core.api:$polygeneVersion"
-  compile "org.apache.polygene.library:org.apache.polygene.library.restlet:$polygeneVersion"
+  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/75b3668c/tools/generator-polygene/app/templates/buildtool/gradle-wrapper.properties_
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-wrapper.properties_ b/tools/generator-polygene/app/templates/buildtool/gradle-wrapper.properties_
index 731cb78..c90307d 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-wrapper.properties_
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-wrapper.properties_
@@ -21,4 +21,4 @@ distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/75b3668c/tools/shell/src/docs/shell.txt
----------------------------------------------------------------------
diff --git a/tools/shell/src/docs/shell.txt b/tools/shell/src/docs/shell.txt
deleted file mode 100644
index 9ebc47c..0000000
--- a/tools/shell/src/docs/shell.txt
+++ /dev/null
@@ -1,101 +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.
-///////////////////////////////////////////////////////////////
-
-[[tools-shell,Command Line Shell]]
-= Polygene Shell =
-If you have installed the Polygene SDK, there is a +bin/polygene+ command line script,
-which has sub-functions in it. This list of commands will slowly grow
-for various purposes of doing software development with Apache Polygene.
-
-The current list of commands are;
-
-    * <<tools-shell-create-project>>
-
-[[tools-shell-create-project,Create Project Script]]
-== Create Project ==
-
-This command creates a brand new project, in current directory, with a name
-provided. There are more than one template of the type of project that one
-might want to create. Full list of types to follow below. The command
-takes at least 3 additional arguments;
-
----------------------------
-polygene create-project type name package
----------------------------
-
-A directory called _name_ will be created in the current directory, and all
-the necessary structure for a Polygene project using Gradle will be created.
-
-The exact layout of the project depends on the _type_ argument and currently the
-following types exists;
-
-    * <<tools-shell-create-project-null>> - Creates the build system and directory structure.
-    * <<tools-shell-create-project-singleton>> - Creates a small application around the +SingletonAssembler+
-    * <<tools-shell-create-project-default>> - Creates a 4 layer, Configuration, Infrastructure, Domain and Connectivity, command line application.
-    * <<tools-shell-create-project-restapp>> - Creates the same 4 layer application as _default_, but also sets it up as a Restful application, ready to deploy on a web application container.
-
-The _package_ defines the root package name to be used, e.g. +org.apache.polygene.coolapp+. The +create-project+ program
-will create additional packages under this, according to its template.
-
-[[tools-shell-create-project-null,Create Null Project]]
-=== Create Null Project Template ===
-This templates only creates the build system for a single module application. Neither Java files nor other resources
-are created, and the developer has to set everything up from scratch.
-
-[[tools-shell-create-project-singleton,Create Singleton Project]]
-=== Create Singleton Project Template ===
-This template creates a so called Singleton application. That is an application with a single Layer and a single
-Module in that layer. In Polygene, all applications must have at least one Layer and one Module.
-
-This is useful for really small applications or demos, not expected to become large in the future. It is
-also currently required that the infrastructure is configuration free, otherwise it is not possible to set up.
-
-The template will configure the File EntityStore and RDF Indexing subsystems, hardcoded to the +polygene/store+ and
-+polygene/index+ respectively in the current directory where the application is started. This may not be suitable, in
-which case you should look at the <<tools-shell-create-project-default>> template.
-
-[[tools-shell-create-project-default,Create Default Project]]
-=== Create Default Project Template ===
-This template sets up a 4 layer, Configuration, Infrastructure, Domain, Connectivity, command line application.
-
-The template includes a small sample domain model, +Order+, +OrderItem+, +Customer+, but there is no functionality
-added to it.
-
-A +SecurityRepository+ is also created, with a simple hardcoded implementation (+HardCodedSecurityRepositoryMixin+).
-
-[[tools-shell-create-project-restapp,Create Rest Application Project]]
-=== Create Rest Application Project Template ===
-This template sets up a 4 layer, Configuration, Infrastructure, Domain, Connectivity, restful application. This
-application will use the <<library-restlet>> to create a full web application, ready to deploy on a servlet
-container, such as Tomcat or Jetty.
-
-The template includes a small sample domain model, +Order+, +OrderItem+, +Customer+, and have the CRUD operations
-for these already wired up to the restful +EndPoint+. Full HATEOAS is provided, so clients don't need to construct
-URLs, but simply follow links and use forms.
-
-The template also creates a simple SecurityRepository and attaches the mechanisms in the underlying Restlet
-implementation to do Authentication and Authorization (see SimpleEnroler and SimpleVerifier). There are two
-hardcoded users with two hardcoded roles.
-
------------
-# name     password     roles
-  user       123        user
-  admin     secret      admin
------------
-

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/75b3668c/tools/src/docs/yeoman_polygene.txt
----------------------------------------------------------------------
diff --git a/tools/src/docs/yeoman_polygene.txt b/tools/src/docs/yeoman_polygene.txt
new file mode 100644
index 0000000..38a7e0f
--- /dev/null
+++ b/tools/src/docs/yeoman_polygene.txt
@@ -0,0 +1,99 @@
+///////////////////////////////////////////////////////////////
+ * 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.
+///////////////////////////////////////////////////////////////
+
+[[tools-shell,Command Line Shell]]
+= Polygene Generator =
+Apache Polygene comes with a Yeoman code generator, to quickly set up a development
+environment for Polygene applications.
+
+The current list of commands are;
+
+    * <<tools-yeoman-create-project>>
+
+[[tools-yeoman-create-project,Create Project Script]]
+== Create Project ==
+
+This command creates a brand new project, in current directory. The generator
+will ask a lot of questions. If you are new to Polygene and only want to try
+it out, it is safe to hit ENTER on all questions.
+
+---------------------------
+yo polygene create-project
+---------------------------
+
+A directory called _name_ will be created in the current directory, and all
+the necessary structure for a Polygene project using Gradle will be created.
+
+The exact layout of the project depends on the _type_ argument and currently the
+following types exists;
+
+    * <<tools-shell-create-project-null>> - Creates the build system and directory structure.
+    * <<tools-shell-create-project-singleton>> - Creates a small application around the +SingletonAssembler+
+    * <<tools-shell-create-project-default>> - Creates a 4 layer, Configuration, Infrastructure, Domain and Connectivity, command line application.
+    * <<tools-shell-create-project-restapp>> - Creates the same 4 layer application as _default_, but also sets it up as a Restful application, ready to deploy on a web application container.
+
+The _package_ defines the root package name to be used, e.g. +org.apache.polygene.coolapp+. The +create-project+ program
+will create additional packages under this, according to its template.
+
+[[tools-shell-create-project-null,Create Null Project]]
+=== Create Null Project Template ===
+This templates only creates the build system for a single module application. Neither Java files nor other resources
+are created, and the developer has to set everything up from scratch.
+
+[[tools-shell-create-project-singleton,Create Singleton Project]]
+=== Create Singleton Project Template ===
+This template creates a so called Singleton application. That is an application with a single Layer and a single
+Module in that layer. In Polygene, all applications must have at least one Layer and one Module.
+
+This is useful for really small applications or demos, not expected to become large in the future. It is
+also currently required that the infrastructure is configuration free, otherwise it is not possible to set up.
+
+The template will configure the File EntityStore and RDF Indexing subsystems, hardcoded to the +polygene/store+ and
++polygene/index+ respectively in the current directory where the application is started. This may not be suitable, in
+which case you should look at the <<tools-shell-create-project-default>> template.
+
+[[tools-shell-create-project-default,Create Default Project]]
+=== Create Default Project Template ===
+This template sets up a 4 layer, Configuration, Infrastructure, Domain, Connectivity, command line application.
+
+The template includes a small sample domain model, +Order+, +OrderItem+, +Customer+, but there is no functionality
+added to it.
+
+A +SecurityRepository+ is also created, with a simple hardcoded implementation (+HardCodedSecurityRepositoryMixin+).
+
+[[tools-shell-create-project-restapp,Create Rest Application Project]]
+=== Create Rest Application Project Template ===
+This template sets up a 4 layer, Configuration, Infrastructure, Domain, Connectivity, restful application. This
+application will use the <<library-restlet>> to create a full web application, ready to deploy on a servlet
+container, such as Tomcat or Jetty.
+
+The template includes a small sample domain model, +Order+, +OrderItem+, +Customer+, and have the CRUD operations
+for these already wired up to the restful +EndPoint+. Full HATEOAS is provided, so clients don't need to construct
+URLs, but simply follow links and use forms.
+
+The template also creates a simple SecurityRepository and attaches the mechanisms in the underlying Restlet
+implementation to do Authentication and Authorization (see SimpleEnroler and SimpleVerifier). There are two
+hardcoded users with two hardcoded roles.
+
+-----------
+# name     password     roles
+  user       123        user
+  admin     secret      admin
+-----------
+