001 package org.tynamo.conversations.services;
002
003 import java.io.IOException;
004 import java.util.Properties;
005
006 import org.apache.tapestry5.ioc.Configuration;
007 import org.apache.tapestry5.ioc.MappedConfiguration;
008 import org.apache.tapestry5.ioc.ServiceBinder;
009 import org.apache.tapestry5.ioc.annotations.Match;
010 import org.apache.tapestry5.services.LibraryMapping;
011 import org.apache.tapestry5.services.PersistentFieldStrategy;
012 import org.apache.tapestry5.services.Request;
013 import org.apache.tapestry5.services.RequestGlobals;
014
015 public class ConversationModule {
016 private static final String version;
017 static {
018 Properties moduleProperties = new Properties();
019 String aVersion = "unversioned";
020 try {
021 moduleProperties.load(ConversationModule.class.getResourceAsStream("module.properties"));
022 aVersion = moduleProperties.getProperty("module.version");
023 } catch (IOException e) {
024 // ignore
025 }
026 version = aVersion;
027 }
028
029 public static void bind(ServiceBinder binder) {
030 binder.bind(RequestHandlerDecorator.class, RequestHandlerDecoratorImpl.class);
031 binder.bind(ConversationManager.class, ConversationManagerImpl.class);
032 }
033
034 public static void contributeComponentClassResolver(Configuration<LibraryMapping> configuration) {
035 configuration.add(new LibraryMapping("conversation", "org.tynamo.conversations"));
036 }
037
038 public static void contributeClasspathAssetAliasManager(MappedConfiguration<String, String> configuration) {
039 configuration.add("trails-conversations/" + version, "org/tynamo/conversations");
040 }
041
042 public static void contributePersistentFieldManager(MappedConfiguration<String, PersistentFieldStrategy> configuration, RequestGlobals requestGlobals,
043 Request request, ConversationManager conversationManager) {
044 configuration.add("conversation", new ConversationalPersistentFieldStrategy(request, conversationManager));
045 }
046
047 public static <T> T decorateComponentRequestHandler(Class<T> serviceInterface, T delegate, RequestHandlerDecorator decorator) {
048 return decorator.build(serviceInterface, delegate);
049 }
050
051 }