package com.mysema.rdfbean.tapestry;
import org.apache.tapestry5.ioc.MethodAdviceReceiver;
import org.apache.tapestry5.ioc.ServiceBinder;
import org.apache.tapestry5.ioc.annotations.Match;
import org.apache.tapestry5.ioc.annotations.SubModule;
import org.apache.tapestry5.ioc.services.RegistryShutdownHub;
import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
import com.mysema.rdfbean.model.Repository;
import com.mysema.rdfbean.object.Configuration;
import com.mysema.rdfbean.object.DefaultConfiguration;
import com.mysema.rdfbean.sesame.MemoryRepository;
import com.mysema.rdfbean.tapestry.services.RDFBeanModule;
@SubModule({ RDFBeanModule.class })
public class ExampleModule {
@Match({ "ServiceA", "ServiceB", "ServiceC", "ServiceD" })
public static void adviseTransactions(TransactionalAdvisor advisor, MethodAdviceReceiver receiver) {
advisor.addTransactionCommitAdvice(receiver);
}
public static void bind(ServiceBinder binder) {
binder.bind(ServiceA.class, ServiceAImpl.class);
binder.bind(ServiceB.class, ServiceBImpl.class);
binder.bind(ServiceC.class, ServiceCImpl.class);
binder.bind(ServiceD.class, ServiceDImpl.class);
}
public static Configuration buildConfiguration() {
DefaultConfiguration configuration = new DefaultConfiguration();
return configuration;
}
public static Repository buildRepository(RegistryShutdownHub hub) {
final MemoryRepository repository = new MemoryRepository();
hub.addRegistryShutdownListener(new RegistryShutdownListener() {
@Override
public void registryDidShutdown() {
repository.close();
}
});
return repository;
}
}