package org.tynamo.hibernate;
import org.apache.tapestry5.hibernate.HibernateEntityPackageManager;
import org.apache.tapestry5.hibernate.HibernateSessionSource;
import org.apache.tapestry5.internal.InternalConstants;
import org.apache.tapestry5.internal.InternalSymbols;
import org.apache.tapestry5.ioc.Configuration;
import org.apache.tapestry5.ioc.LoggerSource;
import org.apache.tapestry5.ioc.MappedConfiguration;
import org.apache.tapestry5.ioc.annotations.Contribute;
import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.ioc.services.ApplicationDefaults;
import org.apache.tapestry5.ioc.services.SymbolProvider;
import org.tynamo.descriptor.factories.DescriptorFactory;
import org.tynamo.hibernate.decorators.HibernateDescriptorDecorator;
import org.tynamo.model.test.entities.Foo;
public class TestModule
{
@Contribute(SymbolProvider.class)
@ApplicationDefaults
public static void defaultsSymbols(MappedConfiguration<String, String> configuration)
{
configuration.add(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM, "org.tynamo.hibernate");
configuration.add(InternalSymbols.APP_PACKAGE_PATH, "org/tynamo/hibernate");
configuration.add(TynamoHibernateSymbols.LARGE_COLUMN_LENGTH, "100");
configuration.add(TynamoHibernateSymbols.IGNORE_NON_HIBERNATE_TYPES, "true");
}
@Contribute(HibernateEntityPackageManager.class)
public static void addPackages(Configuration<String> configuration)
{
configuration.add(Foo.class.getPackage().getName());
}
public static HibernateDescriptorDecorator buildHibernateDescriptorDecorator(HibernateSessionSource hibernateSessionSource,
DescriptorFactory descriptorFactory,
@Symbol(TynamoHibernateSymbols.LARGE_COLUMN_LENGTH)
int largeColumnLength,
@Symbol(TynamoHibernateSymbols.IGNORE_NON_HIBERNATE_TYPES)
boolean ignoreNonHibernateTypes,
LoggerSource loggerSource)
{
return new HibernateDescriptorDecorator(
hibernateSessionSource,
descriptorFactory,
largeColumnLength,
ignoreNonHibernateTypes,
loggerSource.getLogger(HibernateDescriptorDecorator.class));
}
}