You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/03/13 00:32:22 UTC

[8/38] git commit: ISIS-326: fixes for Tomcat lookup from JNDI

ISIS-326: fixes for Tomcat lookup from JNDI

* MessageBroker must be serializable, suspicion is that it without it being serializable tomcat throws exception causing transactions to abort
* DataNucleusPersistenceMechanism looks first for 'datanucleus.ConnectionFactoryName' (JNDI), else falls back to the JNDI.


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

Branch: refs/heads/dan/ISIS-233-ro
Commit: 23c80d31dce1c62940beca049f84ca3b8fb324a5
Parents: afd39be
Author: Dan Haywood <da...@apache.org>
Authored: Mon Mar 11 19:21:00 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Mon Mar 11 20:48:25 2013 +0000

----------------------------------------------------------------------
 .../DataNucleusPersistenceMechanismInstaller.java  |   27 +++++++-----
 .../wicket/ui/components/about/AboutPanel.java     |    2 -
 .../core/commons/authentication/MessageBroker.java |    3 +-
 .../system/transaction/MessageBrokerDefault.java   |    7 ++-
 .../viewer-webapp/pom.xml                          |   34 ++++++++-------
 .../WEB-INF/persistor_datanucleus.properties       |   11 +++-
 .../viewer-webapp/src/main/webapp/WEB-INF/web.xml  |   12 +++++
 7 files changed, 60 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/23c80d31/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
index 96982f3..f8053ed 100644
--- a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
+++ b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
@@ -70,8 +70,8 @@ import org.apache.isis.objectstore.jdo.metamodel.specloader.validator.JdoMetaMod
  */
 public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechanismInstallerAbstract {
 
-
     public static final String NAME = "datanucleus";
+    
     private static final String ISIS_CONFIG_PREFIX = "isis.persistor.datanucleus.impl";
 
     private DataNucleusApplicationComponents applicationComponents = null;
@@ -108,22 +108,27 @@ public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechani
     private static void addDataNucleusPropertiesIfRequired(
             final Map<String, String> props) {
         putIfNotPresent(props, "javax.jdo.PersistenceManagerFactoryClass", "org.datanucleus.api.jdo.JDOPersistenceManagerFactory");
-        
-        putIfNotPresent(props, "javax.jdo.option.ConnectionDriverName", "org.hsqldb.jdbcDriver");
-        putIfNotPresent(props, "javax.jdo.option.ConnectionURL", "jdbc:hsqldb:mem:test;hsqldb.sqllog=3");
-        putIfNotPresent(props, "javax.jdo.option.ConnectionUserName", "sa");
-        putIfNotPresent(props, "javax.jdo.option.ConnectionPassword", "");
-        
+
         putIfNotPresent(props, "datanucleus.autoCreateSchema", "true");
         putIfNotPresent(props, "datanucleus.validateSchema", "true");
         putIfNotPresent(props, "datanucleus.cache.level2.type", "none");
-    }
 
+        if(props.containsKey("datanucleus.ConnectionFactoryName")) {
+            // JNDI connection properties present; do nothing
+            return;
+        } else {
+            // use JDBC connection properties; put if not present
+            putIfNotPresent(props, "javax.jdo.option.ConnectionDriverName", "org.hsqldb.jdbcDriver");
+            putIfNotPresent(props, "javax.jdo.option.ConnectionURL", "jdbc:hsqldb:mem:test;hsqldb.sqllog=3");
+            putIfNotPresent(props, "javax.jdo.option.ConnectionUserName", "sa");
+            putIfNotPresent(props, "javax.jdo.option.ConnectionPassword", "");
+        }
+    }
 
     private static void putIfNotPresent(
-        final Map<String, String> props,
-        String key,
-        String value) {
+            final Map<String, String> props,
+            String key,
+            String value) {
         if(!props.containsKey(key)) {
             props.put(key, value);
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/23c80d31/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/AboutPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/AboutPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/AboutPanel.java
index 8522849..0700bdb 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/AboutPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/AboutPanel.java
@@ -53,13 +53,11 @@ public class AboutPanel extends PanelAbstract<AboutModel> {
     
     public AboutPanel(final String id) {
         super(id);
-        //getModel().setObject(aboutMessage);
         
         if(jarManifestModel == null) {
             jarManifestModel = new JarManifestModel(aboutMessage, metaInfManifestIs);
         }
         
-        //add(new MultiLineLabel(ID_MESSAGE, jarManifestModel.getAboutMessage()).setEscapeModelStrings(false));
         add(new JarManifestPanel(ID_MANIFEST_ATTRIBUTES, jarManifestModel));
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/23c80d31/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/MessageBroker.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/MessageBroker.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/MessageBroker.java
index f5552f2..2dc1d5b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/MessageBroker.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/MessageBroker.java
@@ -19,13 +19,14 @@
 
 package org.apache.isis.core.commons.authentication;
 
+import java.io.Serializable;
 import java.util.List;
 
 /**
  * Moving from runtime, so that can preserve messages between interactions that
  * correspond to the same session.
  */
-public interface MessageBroker {
+public interface MessageBroker extends Serializable {
 
     void addMessage(String message);
     List<String> getMessages();

http://git-wip-us.apache.org/repos/asf/isis/blob/23c80d31/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBrokerDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBrokerDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBrokerDefault.java
index 8a4a682..495a1d2 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBrokerDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBrokerDefault.java
@@ -23,17 +23,18 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import com.google.common.collect.Lists;
-
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.commons.debug.DebuggableWithTitle;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.lang.StringUtils;
-import org.apache.isis.core.runtime.system.context.IsisContext;
+
+import com.google.common.collect.Lists;
 
 public class MessageBrokerDefault implements MessageBroker, DebuggableWithTitle {
 
+    private static final long serialVersionUID = 1L;
+    
     private final List<String> messages = Lists.newArrayList();
     private final List<String> warnings = Lists.newArrayList();
     private String applicationError;

http://git-wip-us.apache.org/repos/asf/isis/blob/23c80d31/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
index d53afce..08b335a 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
@@ -92,10 +92,11 @@
             <plugin>
                 <artifactId>maven-war-plugin</artifactId>
                 <configuration>
+                    <warName>quickstart</warName>
                     <archive>
                         <manifest>
                             <addClasspath>false</addClasspath>
-                        </manifest>                            
+                        </manifest>
                         <manifestEntries>
                             <Build-Time>${maven.build.timestamp}</Build-Time>
                             <Build-Host>${agent.name}</Build-Host>
@@ -107,17 +108,6 @@
                         </manifestEntries>
                     </archive>
                 </configuration>
-                <!-- 
-                <executions>
-                    <execution>
-                        <id>default-war</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>war</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                 -->
             </plugin>
 
         </plugins>
@@ -255,14 +245,26 @@
 
         <!-- 
         <dependency>
+            <groupId>postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>9.1-901.jdbc4</version>
+        </dependency>
+         -->
+
+        <!-- 
+        mvn install:install-file -Dfile=sqljdbc4.jar \
+                                 -DgroupId=com.microsoft.sqlserver \
+                                 -DartifactId=jdbc \
+                                 -Dversion=4.0 \
+                                 -Dpackaging=jar
+         -->
+         <!-- 
+        <dependency>
             <groupId>com.microsoft.sqlserver</groupId>
             <artifactId>jdbc</artifactId>
             <version>4.0</version>
-            <scope>system</scope>
-            <optional>true</optional>
-            <systemPath>${basedir}/lib/sqljdbc4.jar</systemPath>
         </dependency>
-        -->    
+          -->
 
         <dependency>
           <groupId>org.lazyluke</groupId>

http://git-wip-us.apache.org/repos/asf/isis/blob/23c80d31/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
index 06701df..b47fd70 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
@@ -41,6 +41,11 @@ isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=fa
 # (also update the pom.xml to reference the appropriate JDBC driver)
 #############################################################################
 
+
+# uncomment to use JNDI rather than direct JDBC
+# isis.persistor.datanucleus.impl.datanucleus.ConnectionFactoryName=java:comp/env/jdbc/quickstart
+
+
 #
 # HSQLDB in-memory
 #
@@ -99,9 +104,9 @@ isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
 # MS SQL Server
 #
 #isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=com.microsoft.sqlserver.jdbc.SQLServerDriver
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:sqlserver://127.0.0.1:1433;instance=SQLEXPRESS;databaseName=jdo
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=jdo
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=jdopass
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:sqlserver://127.0.0.1:1433;instance=.;databaseName=quickstart
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=p4ssword
 
 #
 # MS SQL Server (using log4jdbc-remix)

http://git-wip-us.apache.org/repos/asf/isis/blob/23c80d31/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
index 13e575e..46ccbe0 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
@@ -253,5 +253,17 @@
     </servlet-mapping>
 
 
+    <!-- 
+    uncomment to use JNDI rather than JDBC
+     -->
+     <!-- 
+    <resource-ref>
+        <description>db</description>
+        <res-ref-name>jdbc/quickstart</res-ref-name>
+        <res-type>javax.sql.DataSource</res-type>
+        <res-auth>Container</res-auth>
+    </resource-ref>
+      -->
+  
 
 </web-app>