Author: hlship
Date: Mon Aug 18 12:09:05 2008
New Revision: 686850
URL: http://svn.apache.org/viewvc?rev=686850&view=rev
Log:
TAPESTRY-2571: Add configuration to turn off the automatic creation of
ValueEncoders for Hibernate entities
Modified:
tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateModule.java
Modified:
tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateModule.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateModule.java?rev=686850&r1=686849&r2=686850&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateModule.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateModule.java
Mon Aug 18 12:09:05 2008
@@ -20,11 +20,9 @@
import org.apache.tapestry5.ioc.*;
import static org.apache.tapestry5.ioc.IOCConstants.PERTHREAD_SCOPE;
import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.InjectService;
import org.apache.tapestry5.ioc.annotations.Scope;
import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.services.AliasContribution;
import org.apache.tapestry5.services.ComponentClassTransformWorker;
import org.apache.tapestry5.services.PersistentFieldStrategy;
import org.apache.tapestry5.services.ValueEncoderFactory;
@@ -36,15 +34,27 @@
import java.util.Iterator;
import java.util.List;
[EMAIL PROTECTED]({ "JavaDoc" })
[EMAIL PROTECTED]({"JavaDoc"})
public class HibernateModule
{
+ /**
+ * If true (the default), then [EMAIL PROTECTED]
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_SYMBOL =
"tapestry.hibernate.provide-entity-value-encoders";
+
public static void bind(ServiceBinder binder)
{
binder.bind(HibernateTransactionDecorator.class,
HibernateTransactionDecoratorImpl.class);
}
- public static HibernateEntityPackageManager build(final Collection<String>
packageNames)
+ public static void contributeFactoryDefaults(MappedConfiguration<String,
String> configuration)
+ {
+ configuration.add(PROVIDE_ENTITY_VALUE_ENCODERS_SYMBOL, "true");
+ }
+
+ public static HibernateEntityPackageManager
buildHibernateEntityPackageManager(
+ final Collection<String> packageNames)
{
return new HibernateEntityPackageManager()
{
@@ -73,7 +83,8 @@
* created initially, and is committed at the end of the request.
*/
@Scope(PERTHREAD_SCOPE)
- public static HibernateSessionManager build(HibernateSessionSource
sessionSource, PerthreadManager perthreadManager)
+ public static HibernateSessionManager
buildHibernateSessionManager(HibernateSessionSource sessionSource,
+
PerthreadManager perthreadManager)
{
HibernateSessionManagerImpl service = new
HibernateSessionManagerImpl(sessionSource);
@@ -82,8 +93,8 @@
return service;
}
- public static Session build(HibernateSessionManager sessionManager,
- PropertyShadowBuilder propertyShadowBuilder)
+ public static Session buildSession(HibernateSessionManager sessionManager,
+ PropertyShadowBuilder
propertyShadowBuilder)
{
// Here's the thing: the tapestry.hibernate.Session class doesn't have
to be per-thread,
// since
@@ -100,19 +111,8 @@
return propertyShadowBuilder.build(sessionManager, "session",
Session.class);
}
- /**
- * Contributes the [EMAIL PROTECTED] #build(HibernateSessionManager,
PropertyShadowBuilder) Session} service.
- */
- public static void contributeAlias(Configuration<AliasContribution>
configuration,
-
- @InjectService("Session")
- Session session)
- {
- configuration.add(AliasContribution.create(Session.class, session));
- }
-
- public static HibernateSessionSource build(Logger logger,
List<HibernateConfigurer> config,
- RegistryShutdownHub hub)
+ public static HibernateSessionSource buildHibernateSessionSource(Logger
logger, List<HibernateConfigurer> config,
+
RegistryShutdownHub hub)
{
HibernateSessionSourceImpl hss = new
HibernateSessionSourceImpl(logger, config);
@@ -140,12 +140,16 @@
*/
@SuppressWarnings("unchecked")
public static void contributeValueEncoderSource(MappedConfiguration<Class,
ValueEncoderFactory> configuration,
+
@Symbol(PROVIDE_ENTITY_VALUE_ENCODERS_SYMBOL)
+ boolean provideEncoders,
final
HibernateSessionSource sessionSource,
final Session session,
final TypeCoercer
typeCoercer,
final PropertyAccess
propertyAccess,
final LoggerSource
loggerSource)
{
+ if (!provideEncoders) return;
+
org.hibernate.cfg.Configuration config =
sessionSource.getConfiguration();
Iterator<PersistentClass> mappings = config.getClassMappings();
while (mappings.hasNext())