package org.dyndns.jkiddo.guice; import java.sql.SQLException; import org.dyndns.jkiddo.dmp.chunks.media.AuthenticationMethod.PasswordMethod; import org.dyndns.jkiddo.logic.interfaces.IMusicStoreReader; import org.dyndns.jkiddo.service.daap.server.DAAPResource; import org.dyndns.jkiddo.service.daap.server.IMusicLibrary; import org.dyndns.jkiddo.service.daap.server.InMemoryMusicManager; import org.dyndns.jkiddo.service.dmap.IItemManager; import com.google.inject.AbstractModule; import com.google.inject.name.Names; import com.j256.ormlite.jdbc.JdbcConnectionSource; import com.j256.ormlite.support.ConnectionSource; public class DAAPModule extends AbstractModule { private final PasswordMethod passwordMethod; private final IMusicStoreReader musicStoreReader; private final int hostingPort; public DAAPModule(final PasswordMethod passwordMethod, final IMusicStoreReader musicStoreReader, final int hostingPort) { this.passwordMethod = passwordMethod; this.musicStoreReader = musicStoreReader; this.hostingPort = hostingPort; } @Override protected void configure() { bind(Integer.class).annotatedWith(Names.named(DAAPResource.DAAP_PORT_NAME)).toInstance(hostingPort); bind(IMusicLibrary.class).to(DAAPResource.class).asEagerSingleton(); bind(PasswordMethod.class).toInstance(passwordMethod); try { bind(ConnectionSource.class).toInstance(new JdbcConnectionSource("jdbc:h2:mem:test")); } catch(final SQLException e) { throw new RuntimeException(e); } // bind(new TypeLiteral<Table<String, String, Class<? extends AbstractChunk>>>() {}).toInstance(ChunkFactory.getCalculatedMap()); // bind(IItemManager.class).annotatedWith(Names.named(DAAPResource.DAAP_RESOURCE)).to(MusicItemManager.class); bind(IItemManager.class).annotatedWith(Names.named(DAAPResource.DAAP_RESOURCE)).to(InMemoryMusicManager.class); bind(IMusicStoreReader.class).toInstance(musicStoreReader); } }