You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by jc...@apache.org on 2013/03/21 12:19:57 UTC

git commit: ISIS-370: Service for eagerly registering entity types

Updated Branches:
  refs/heads/master 5c27066dd -> e00abc7fd
Updated Tags:  refs/tags/isis-1.1.0-RC1 [created] 4859004d0
  refs/tags/isis-security-shiro-1.1.0-RC1 [created] 340f5709d
  refs/tags/isis-viewer-wicket-1.1.0-RC1 [created] e11c74411
  refs/tags/quickstart_wicket_restful_jdo-archetype-1.0.2-RC1 [created] 87c2b682c
  refs/tags/upstream/isis-0.1.2-RC2-incubating [created] 073e279a0
  refs/tags/upstream/isis-0.1.2-RC3-incubating [created] 0b09a4c2e
  refs/tags/upstream/isis-0.1.2-RC4-incubating [created] 234a55fb5
  refs/tags/upstream/isis-0.1.2-incubating [created] 40c529018
  refs/tags/upstream/isis-0.2.0-incubating [created] 6dce716dd
  refs/tags/upstream/isis-1.0.0 [created] 53dddebcb
  refs/tags/upstream/isis-1.0.0-RC1 [created] 771f7e393
  refs/tags/upstream/isis-1.0.0-RC2 [created] 53dddebcb
  refs/tags/upstream/isis-1.1.0 [created] 4859004d0
  refs/tags/upstream/isis-objectstore-jdo-1.0.0 [created] 423f7a110
  refs/tags/upstream/isis-objectstore-jdo-1.0.0-RC1 [created] 1a2b468b2
  refs/tags/upstream/isis-objectstore-jdo-1.0.0-RC2 [created] 423f7a110
  refs/tags/upstream/isis-security-file-1.0.0 [created] b71ec3d05
  refs/tags/upstream/isis-security-file-1.0.0-RC1 [created] ad852d3ef
  refs/tags/upstream/isis-security-file-1.0.0-RC2 [created] b71ec3d05
  refs/tags/upstream/isis-security-shiro-1.0.0 [created] d7afb7606
  refs/tags/upstream/isis-security-shiro-1.0.0-RC1 [created] d7afb7606
  refs/tags/upstream/isis-security-shiro-1.1.0 [created] 340f5709d
  refs/tags/upstream/isis-viewer-restfulobjects-1.0.0 [created] e21e1f19f
  refs/tags/upstream/isis-viewer-restfulobjects-1.0.0-RC1 [created] 6916f21e3
  refs/tags/upstream/isis-viewer-restfulobjects-1.0.0-RC2 [created] e21e1f19f
  refs/tags/upstream/isis-viewer-wicket-1.0.0 [created] f12423d73
  refs/tags/upstream/isis-viewer-wicket-1.0.0-RC1 [created] 8f8a549a0
  refs/tags/upstream/isis-viewer-wicket-1.0.0-RC2 [created] f12423d73
  refs/tags/upstream/isis-viewer-wicket-1.1.0 [created] e11c74411
  refs/tags/upstream/origin/isis-0.1.2-RC2-incubating [created] 073e279a0
  refs/tags/upstream/origin/isis-0.1.2-RC3-incubating [created] 0b09a4c2e
  refs/tags/upstream/origin/isis-0.1.2-RC4-incubating [created] 234a55fb5
  refs/tags/upstream/origin/isis-0.1.2-incubating [created] 40c529018
  refs/tags/upstream/origin/isis-0.2.0-incubating [created] 6dce716dd
  refs/tags/upstream/origin/isis-1.0.0 [created] 53dddebcb
  refs/tags/upstream/origin/isis-1.0.0-RC1 [created] 771f7e393
  refs/tags/upstream/origin/isis-1.0.0-RC2 [created] 53dddebcb
  refs/tags/upstream/origin/isis-1.1.0 [created] 4859004d0
  refs/tags/upstream/origin/isis-objectstore-jdo-1.0.0 [created] 423f7a110
  refs/tags/upstream/origin/isis-objectstore-jdo-1.0.0-RC1 [created] 1a2b468b2
  refs/tags/upstream/origin/isis-objectstore-jdo-1.0.0-RC2 [created] 423f7a110
  refs/tags/upstream/origin/isis-security-file-1.0.0 [created] b71ec3d05
  refs/tags/upstream/origin/isis-security-file-1.0.0-RC1 [created] ad852d3ef
  refs/tags/upstream/origin/isis-security-file-1.0.0-RC2 [created] b71ec3d05
  refs/tags/upstream/origin/isis-security-shiro-1.0.0 [created] d7afb7606
  refs/tags/upstream/origin/isis-security-shiro-1.0.0-RC1 [created] d7afb7606
  refs/tags/upstream/origin/isis-security-shiro-1.1.0 [created] 340f5709d
  refs/tags/upstream/origin/isis-viewer-restfulobjects-1.0.0 [created] e21e1f19f
  refs/tags/upstream/origin/isis-viewer-restfulobjects-1.0.0-RC1 [created] 6916f21e3
  refs/tags/upstream/origin/isis-viewer-restfulobjects-1.0.0-RC2 [created] e21e1f19f
  refs/tags/upstream/origin/isis-viewer-wicket-1.0.0 [created] f12423d73
  refs/tags/upstream/origin/isis-viewer-wicket-1.0.0-RC1 [created] 8f8a549a0
  refs/tags/upstream/origin/isis-viewer-wicket-1.0.0-RC2 [created] f12423d73
  refs/tags/upstream/origin/isis-viewer-wicket-1.1.0 [created] e11c74411
  refs/tags/upstream/origin/origin/isis-0.1.2-RC2-incubating [created] 073e279a0
  refs/tags/upstream/origin/origin/isis-0.1.2-RC3-incubating [created] 0b09a4c2e
  refs/tags/upstream/origin/origin/isis-0.1.2-RC4-incubating [created] 234a55fb5
  refs/tags/upstream/origin/origin/isis-0.1.2-incubating [created] 40c529018
  refs/tags/upstream/origin/origin/isis-0.2.0-incubating [created] 6dce716dd
  refs/tags/upstream/origin/origin/isis-1.0.0 [created] 53dddebcb
  refs/tags/upstream/origin/origin/isis-1.1.0 [created] 4859004d0
  refs/tags/upstream/origin/origin/isis-objectstore-jdo-1.0.0 [created] 423f7a110
  refs/tags/upstream/origin/origin/isis-security-file-1.0.0 [created] b71ec3d05
  refs/tags/upstream/origin/origin/isis-security-shiro-1.0.0 [created] d7afb7606
  refs/tags/upstream/origin/origin/isis-security-shiro-1.1.0 [created] 340f5709d
  refs/tags/upstream/origin/origin/isis-viewer-restfulobjects-1.0.0 [created] e21e1f19f
  refs/tags/upstream/origin/origin/isis-viewer-wicket-1.0.0 [created] f12423d73
  refs/tags/upstream/origin/origin/isis-viewer-wicket-1.1.0 [created] e11c74411
  refs/tags/upstream/origin/origin/quickstart_wicket_restful_jdo-archetype-1.0.0 [created] cdb171f80
  refs/tags/upstream/origin/origin/quickstart_wicket_restful_jdo-archetype-1.0.1 [created] 86878f4c3
  refs/tags/upstream/origin/origin/quickstart_wicket_restful_jdo-archetype-1.0.2 [created] 87c2b682c
  refs/tags/upstream/origin/quickstart_wicket_restful_jdo-archetype-1.0.0 [created] cdb171f80
  refs/tags/upstream/origin/quickstart_wicket_restful_jdo-archetype-1.0.0-RC1 [created] cdb171f80
  refs/tags/upstream/origin/quickstart_wicket_restful_jdo-archetype-1.0.1 [created] 86878f4c3
  refs/tags/upstream/origin/quickstart_wicket_restful_jdo-archetype-1.0.1-RC1 [created] e1c22b22a
  refs/tags/upstream/origin/quickstart_wicket_restful_jdo-archetype-1.0.1-RC2 [created] 86878f4c3
  refs/tags/upstream/origin/quickstart_wicket_restful_jdo-archetype-1.0.2 [created] 87c2b682c
  refs/tags/upstream/quickstart_wicket_restful_jdo-archetype-1.0.0 [created] cdb171f80
  refs/tags/upstream/quickstart_wicket_restful_jdo-archetype-1.0.0-RC1 [created] cdb171f80
  refs/tags/upstream/quickstart_wicket_restful_jdo-archetype-1.0.1 [created] 86878f4c3
  refs/tags/upstream/quickstart_wicket_restful_jdo-archetype-1.0.1-RC1 [created] e1c22b22a
  refs/tags/upstream/quickstart_wicket_restful_jdo-archetype-1.0.1-RC2 [created] 86878f4c3
  refs/tags/upstream/quickstart_wicket_restful_jdo-archetype-1.0.2 [created] 87c2b682c


ISIS-370: Service for eagerly registering entity types


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e00abc7f
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e00abc7f
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e00abc7f

Branch: refs/heads/master
Commit: e00abc7fd9f352efbfacf7d1c7c5134240fdd260
Parents: 5c27066
Author: Jeroen van der Wal <je...@stromboli.it>
Authored: Thu Mar 21 12:19:04 2013 +0100
Committer: Jeroen van der Wal <je...@stromboli.it>
Committed: Thu Mar 21 12:19:04 2013 +0100

----------------------------------------------------------------------
 component/objectstore/jdo/jdo-datanucleus/pom.xml  |    6 ++
 .../objectstore/jdo/service/RegisterEntities.java  |   58 +++++++++++++++
 core/pom.xml                                       |    9 ++
 3 files changed, 73 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/e00abc7f/component/objectstore/jdo/jdo-datanucleus/pom.xml
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/pom.xml b/component/objectstore/jdo/jdo-datanucleus/pom.xml
index 89979b2..85ed1c2 100644
--- a/component/objectstore/jdo/jdo-datanucleus/pom.xml
+++ b/component/objectstore/jdo/jdo-datanucleus/pom.xml
@@ -58,6 +58,12 @@
 			<artifactId>isis-objectstore-jdo-metamodel</artifactId>
 		</dependency>
 		
+        <!--  for the RegisterEntities service -->
+        <dependency>
+             <groupId>org.reflections</groupId>
+             <artifactId>reflections</artifactId>
+        </dependency>
+
        <dependency>
             <groupId>javax.jdo</groupId>
             <artifactId>jdo-api</artifactId>

http://git-wip-us.apache.org/repos/asf/isis/blob/e00abc7f/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
new file mode 100644
index 0000000..d3d7e9c
--- /dev/null
+++ b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
@@ -0,0 +1,58 @@
+package org.apache.isis.objectstore.jdo.service;
+
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.jdo.annotations.PersistenceCapable;
+
+import com.google.common.base.Splitter;
+
+import org.apache.log4j.Logger;
+import org.reflections.Reflections;
+
+import org.apache.isis.applib.annotation.Hidden;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+
+@Hidden
+public class RegisterEntities {
+
+    private final static Logger LOG = Logger.getLogger(RegisterEntities.class);
+    
+    private final static String PACKAGE_PREFIX_KEY = "isis.persistor.datanucleus.RegisterEntities.packagePrefix";
+
+    private String packagePrefixes;
+
+    @PostConstruct
+    public void init(Map<String,String> props) {
+        packagePrefixes = props.get(PACKAGE_PREFIX_KEY);
+    }
+
+    @PreDestroy
+    public void shutdown() {
+    }
+
+    
+    @PostConstruct
+    public void registerAllPersistenceCapables() {
+
+        if(packagePrefixes == null) {
+            LOG.warn("Did not find key '" + PACKAGE_PREFIX_KEY + "' and so entities will not be eagerly registered in the Isis metamodel");
+            return;
+        }
+        
+        for (String packagePrefix : Splitter.on(",").split(packagePrefixes)) {
+            Reflections reflections = new Reflections(packagePrefix);
+            
+            Set<Class<?>> entityTypes = 
+                    reflections.getTypesAnnotatedWith(PersistenceCapable.class);
+            
+            for (Class<?> entityType : entityTypes) {
+                IsisContext.getSpecificationLoader().loadSpecification(entityType);
+            }
+        }
+    }
+    
+    
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/e00abc7f/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index fb587b3..a5a0a2f 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -1118,6 +1118,15 @@ ${license.additional-notes}
                 <version>1.3</version>
             </dependency>
 
+
+            <!--  Other Common Utils -->
+            <dependency>
+                 <groupId>org.reflections</groupId>
+                 <artifactId>reflections</artifactId>
+                 <version>0.9.8</version>
+            </dependency>
+     
+
             <!-- Google Guava (collections and commons) -->
             <dependency>
                 <groupId>com.google.guava</groupId>