Author: hlship
Date: Wed Jan  7 19:56:06 2009
New Revision: 732600

URL: http://svn.apache.org/viewvc?rev=732600&view=rev
Log:
TAP5-295: Option to startup Hibernate early, rather than lazily on first request

Added:
    
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSymbols.java
Modified:
    
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConstants.java
    
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCoreModule.java
    
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurer.java
    tapestry/tapestry5/trunk/tapestry-hibernate-core/src/site/apt/conf.apt
    
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java

Modified: 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConstants.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConstants.java?rev=732600&r1=732599&r2=732600&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConstants.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConstants.java
 Wed Jan  7 19:56:06 2009
@@ -1,4 +1,4 @@
-//  Copyright 2008 The Apache Software Foundation
+//  Copyright 2008, 2009 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -20,15 +20,12 @@
 public class HibernateConstants
 {
     /**
-     * If true (the default), then {...@link 
org.apache.tapestry5.ValueEncoder}s are automatically created for each entity.
-     * Override to "false" to handle entity value encoding explicitly.
+     * @deprecated Use {...@link 
org.apache.tapestry5.hibernate.HibernateSymbols#PROVIDE_ENTITY_VALUE_ENCODERS} 
instead.
      */
-    public static final String PROVIDE_ENTITY_VALUE_ENCODERS_SYMBOL = 
"tapestry.hibernate.provide-entity-value-encoders";
+    public static final String PROVIDE_ENTITY_VALUE_ENCODERS_SYMBOL = 
HibernateSymbols.PROVIDE_ENTITY_VALUE_ENCODERS;
 
     /**
-     * If true, then the last {...@link 
org.apache.tapestry5.hibernate.HibernateConfigurer} will invoke {...@link
-     * org.hibernate.cfg.Configuration#configure()}, to read the application's 
<code>hibernate.cfg.xml</code>. This
-     * should be set to false for applications that configure exclusively in 
code.
+     * @deprecated Use {...@link 
org.apache.tapestry5.hibernate.HibernateSymbols#DEFAULT_CONFIGURATION} instead
      */
-    public static final String DEFAULT_CONFIGURATION = 
"tapestry.hibernate.default-configuration";
+    public static final String DEFAULT_CONFIGURATION = 
HibernateSymbols.DEFAULT_CONFIGURATION;
 }

Modified: 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCoreModule.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCoreModule.java?rev=732600&r1=732599&r2=732600&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCoreModule.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCoreModule.java
 Wed Jan  7 19:56:06 2009
@@ -1,4 +1,4 @@
-// Copyright 2008 The Apache Software Foundation
+// Copyright 2008, 2009 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -19,8 +19,10 @@
 import org.apache.tapestry5.ioc.OrderedConfiguration;
 import org.apache.tapestry5.ioc.ScopeConstants;
 import org.apache.tapestry5.ioc.ServiceBinder;
+import org.apache.tapestry5.ioc.annotations.Local;
 import org.apache.tapestry5.ioc.annotations.Marker;
 import org.apache.tapestry5.ioc.annotations.Scope;
+import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
 import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
 import org.apache.tapestry5.ioc.services.RegistryShutdownHub;
@@ -47,7 +49,25 @@
 
     public static void contributeFactoryDefaults(MappedConfiguration<String, 
String> configuration)
     {
-        configuration.add(HibernateConstants.DEFAULT_CONFIGURATION, "true");
+        configuration.add(HibernateSymbols.DEFAULT_CONFIGURATION, "true");
+        configuration.add(HibernateSymbols.EARLY_START_UP, "false");
+    }
+
+    public static void 
contributeRegistryStartup(OrderedConfiguration<Runnable> configuration,
+
+                                                 
@Symbol(HibernateSymbols.EARLY_START_UP)
+                                                 final boolean earlyStartup,
+
+                                                 final HibernateSessionSource 
sessionSource)
+    {
+        configuration.add("HibernateStartup", new Runnable()
+        {
+            public void run()
+            {
+                if (earlyStartup)
+                    sessionSource.getConfiguration();
+            }
+        });
     }
 
     public static HibernateEntityPackageManager 
buildHibernateEntityPackageManager(
@@ -112,6 +132,7 @@
      */
     public static void 
contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer> 
config,
 
+                                                        @Local
                                                         HibernateConfigurer 
defaultHibernateConfigurer)
     {
         config.add("Default", defaultHibernateConfigurer);

Added: 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSymbols.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSymbols.java?rev=732600&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSymbols.java
 (added)
+++ 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSymbols.java
 Wed Jan  7 19:56:06 2009
@@ -0,0 +1,41 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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 org.apache.tapestry5.hibernate;
+
+/**
+ * Configuration symbols, for use with contributions to {...@link 
org.apache.tapestry5.ioc.services.ApplicationDefaults}.
+ *
+ * @since 5.1.0.0
+ */
+public class HibernateSymbols
+{
+    /**
+     * If "true", then Hibernate will be started up at application launch, 
rather than lazily.
+     */
+    public static final String EARLY_START_UP = 
"tapestry.hibernate.early-startup";
+
+    /**
+     * If true, then the last {...@link 
org.apache.tapestry5.hibernate.HibernateConfigurer} will invoke {...@link
+     * org.hibernate.cfg.Configuration#configure()}, to read the application's 
<code>hibernate.cfg.xml</code>. This
+     * should be set to false for applications that configure exclusively in 
code.
+     */
+    public static final String DEFAULT_CONFIGURATION = 
"tapestry.hibernate.default-configuration";
+
+    /**
+     * If true (the default), then {...@link 
org.apache.tapestry5.ValueEncoder}s are automatically created for each entity.
+     * Override to "false" to handle entity value encoding explicitly.
+     */
+    public static final String PROVIDE_ENTITY_VALUE_ENCODERS = 
"tapestry.hibernate.provide-entity-value-encoders";
+}

Modified: 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurer.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurer.java?rev=732600&r1=732599&r2=732600&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurer.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurer.java
 Wed Jan  7 19:56:06 2009
@@ -1,4 +1,4 @@
-// Copyright 2007, 2008 The Apache Software Foundation
+// Copyright 2007, 2008, 2009 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.hibernate;
 
 import org.apache.tapestry5.hibernate.HibernateConfigurer;
-import org.apache.tapestry5.hibernate.HibernateConstants;
+import org.apache.tapestry5.hibernate.HibernateSymbols;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.hibernate.cfg.Configuration;
 
@@ -27,7 +27,7 @@
     private final boolean defaultConfiguration;
 
     public DefaultHibernateConfigurer(
-            @Symbol(HibernateConstants.DEFAULT_CONFIGURATION)
+            @Symbol(HibernateSymbols.DEFAULT_CONFIGURATION)
             boolean defaultConfiguration)
     {
         this.defaultConfiguration = defaultConfiguration;

Modified: tapestry/tapestry5/trunk/tapestry-hibernate-core/src/site/apt/conf.apt
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate-core/src/site/apt/conf.apt?rev=732600&r1=732599&r2=732600&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-hibernate-core/src/site/apt/conf.apt 
(original)
+++ tapestry/tapestry5/trunk/tapestry-hibernate-core/src/site/apt/conf.apt Wed 
Jan  7 19:56:06 2009
@@ -66,3 +66,7 @@
 
   [tapestry.hibernate.default-configuration] If true (the default), then the 
application must include a <<<hibernate.cfg.xml>>> file.  If your application  
configures
   itself entirely in code, you should set this symbol to false.
+
+  [tapestry.hibernate.early-startup]
+  If "true", the Hibernate is initialized when the application starts up.  The 
default is "false", to start Hibernate up lazily, on
+  first use.

Modified: 
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java?rev=732600&r1=732599&r2=732600&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java
 Wed Jan  7 19:56:06 2009
@@ -1276,7 +1276,7 @@
         catch (RuntimeException ex)
         {
             assertMessageContains(ex,
-                                  "Error invoking service contribution method 
org.apache.tapestry5.ioc.ConfigurationOverrideModule.contributeStringLookup(MappedConfiguration)",
+                                  "Error invoking service contribution method",
                                   "Contribution key fred has already been 
overridden");
         }
     }


Reply via email to