that is incredible. you hit the bull's-eye. (is that the expression?). i am learning english with my sister.
that is just what i needed. many thanks. On Apr 21, 7:00 pm, Alen Vrecko <[email protected]> wrote: > I just look at this briefly maybe a long-shot but it can't hurt. Maybe > this code will give you some idea. It uses Guice 2. > > http://pastie.org/453944 > > Cheers, > Alen > > On Apr 21, 10:13 pm, ale <[email protected]> wrote: > > > i can use something like this. but if i have 25 commands ?, i have to > > pass 25 parameters in the constructor. ? > > > public class CommandProviderFactory { > > private Provider<CommandX> commandXProvider; > > private Provider<CommandY> commandYProvider; > > > @Inject public CommandProviderFactory(Provider<CommandX> > > commandXProvider, > > > > Provider<CommandY> commandYProvider) { > > } > > > public Command create(String commandName) throws Exception { > > if(commandName.equals("commandX")) > > return commandXProvider.get(); > > else if(commandName.equals("commandY")) > > return commandYProvider.get(); > > else > > throw new Exception("command not found"); > > } > > > } > > > On Apr 21, 3:35 pm, ale <[email protected]> wrote: > > > > Thanks Oliver. > > > > but i don't understand how assistedinject can help me. > > > > can you help me fix this example code. > > > > /* Main */ > > > public class Main { > > > public static class MainModule extends AbstractModule { > > > @Override protected void configure() { > > > > > > bind(RemoteServiceX.class).to(RemoteServiceXImpl.class); > > > > > > bind(RemoteServiceY.class).to(RemoteServiceYImpl.class); > > > } > > > } > > > public static void main(String[] args) { > > > Injector inejector = Guice.createInjector(new > > > MainModule()); > > > Test test = inejector.getInstance(Test.class); > > > Command command = test.processRequest("commandX"); > > > command.execute(); > > > }} > > > > public class Test { > > > public Command processRequest(String commandName) { > > > if( commandName.equals("commandX") ) > > > return new CommandX(?); //HERE IS THE PROBLEM > > > else if ( commandName.equals("commandX") ) > > > return new CommandY(?); //HERE IS THE PROBLEM > > > return null; > > > } > > > > } > > > > /* Command */ > > > public interface Command { > > > void execute(); > > > > } > > > > public class CommandX implements Command { > > > private RemoteServiceX service; > > > private String runtimeParameter; > > > > @Inject public CommandX(RemoteServiceX service, String > > > runtimeParameter) { > > > this.service = service; > > > this.runtimeParameter = runtimeParameter; > > > } > > > > @Override public void execute() { /*TODO: implements this > > > method*/ } > > > > } > > > > public class CommandY implements Command{ > > > private RemoteServiceX service; > > > private String runtimeParameter; > > > > @Inject public CommandY(RemoteServiceX service, String > > > runtimeParameter) { > > > this.service = service; > > > this.runtimeParameter = runtimeParameter; > > > } > > > > @Override public void execute() { } > > > > } > > > > /* Services */ > > > public interface RemoteServiceX { > > > public void specificMethod1OfServiceX(); > > > public void specificMethod2OfServiceX(); > > > > } > > > > public class RemoteServiceXImpl implements RemoteServiceX { > > > @Override public void specificMethod1OfServiceX() {/*TODO: > > > implements > > > this method*/} > > > @Override public void specificMethod2OfServiceX() {/*TODO: > > > implements > > > this method*/} > > > > } > > > > public interface RemoteServiceY { > > > public void specificMethod1OfServiceY(); > > > public void specificMethod2OfServiceY(); > > > > } > > > > public class RemoteServiceYImpl implements RemoteServiceY { > > > @Override public void specificMethod1OfServiceY() {/*TODO: > > > implements > > > this method*/} > > > @Override public void specificMethod2OfServiceY() {/*TODO: > > > implements > > > this method*/} > > > > } > > > > On Apr 21, 1:38 pm, Olivier Grégoire <[email protected]> wrote: > > > > > Hello, > > > > > You must create a factory instead of using a Provider. To help you, the > > > > extension AssistedInject exists. > > > > > More details in the > > > > wiki:http://code.google.com/p/google-guice/wiki/AssistedInject > > > > > Regards, > > > > Olivier > > > > > 2009/4/21 ale <[email protected]> > > > > > > How can i do this.? > > > > > > public class CommandProvider implements Provider<Command> { > > > > > > public Command get(runtimeValue1, runtimeValue2) { > > > > > > if(runtimeValue1.equals( "commandX" )) { > > > > > > return new FooCommandX( runtimeValue2 ); > > > > > > } else if (runtimeValue1.equals( "commandY" )) { > > > > > > return new FooCommandY(runtimeValue2); > > > > > > } else if (runtimeValue1.equals( "commandZ" )) { > > > > > > return new FooCommandZ(runtimeValue2); > > > > > > } else { > > > > > throw new RuntimeException("...."); //For this i > > > > > know that i should use ThrowingProviders. > > > > > } > > > > > > } > > > > > > } > > > > > > Thanks. > > > > > -- > > > > Olivier Grégoire > > > > Boulevard De Smet De Naeyer 627A > > > > 1020 Bruxelles > > > > Tél: +32.486.74.09.49 --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
