I'm trying to work out the right way to perform the following:
I have a Manager and ManagerImpl. The ManagerImpl uses a Dao with 2
possible implementations (JDBCDao and LDAPDao)
So...
@ImplementedBy(JDBCDao.class)
public interface Dao {
public String getString();
}
public class JDBCDao implements Dao {
public String getString() {
return "JDBC implementation called";
}
}
public class LDAPDao implements Dao {
private String mConfig;
public LDAPDao(String config) {
mConfig = config;
}
public String getString() {
return "LDAP impementation called with config ["+mConfig
+"]");
}
}
public interface Manager {
public String doDao();
public void setDao(Dao aDao);
}
public class ManagerImpl implements Manager {
@Inject
Dao mDao;
public String doDao() {
return mDao.getString();
}
public void setDao(Dao aDao) {
mDao = aDao;
}
}
I'm trying to work out how to properly set this up in my UnitTest to
test it out. I created a DAOFactory like so:
public interface DAOFactory {
JDBCDao getJDBCDao();
LDAPDao getLDAPDao(String config);
}
And a DAOModule:
public class DAOModule implements Module {
public void configure(Binder binder) {
binder.bind(DAOFactory.class).toProvider(FactoryProvider.newFactory(DAOFactory.class,
Dao.class));
}
}
And create the following test (in a unit test class):
DAOModule module = new DAOModule();
Injector injector = Guice.createInjector(module);
Provider<DAOFactory> provider =
injector.getProvider(DAOFactory.class);
Dao aDAO = provider.get().getLDAPDao("config_file.txt");
Manager dManager = injector.getInstance(Manager.class);
dManager.setDAO(aDAO);
System.out.println(dManager.doDao());
But I get a ClassCastException on the line:
Dao aDAO = provider.get().getLDAPDao("config_file.txt");
What am I doing wrong?
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en.