You can do stuff like

@Inject public ConcreteCommand2(SomeService service,
  @Assisted(Constants.FIRST) String runtime1,
  @Assisted(Constants.SECOND) String runtime2) {
...
}

I've uploaded the modified example http://pastie.org/698555. If you
have a large number of params it is not pretty. Alternatively you may
try String[].

Cheers
Alen

On Nov 14, 10:10 am, leszek <[email protected]> wrote:
> Hi Leigh,
>
> Thanks for the link, I read it through.
>
> I used this link:http://pastie.org/453944.txtand it works for me.
>
> The only problem I found is that my "commands" can use different
> numbers of argument e.g.
>
> @Inject
>   public ConcreteCommand1(SomeService service, @Assisted String
> runtime1) {
>
> @Inject
>   public ConcreteCommand1(SomeService service, @Assisted String
> runtime1, @Assisted String runtime2) {
>
> .. etc...
>
> But I resolved that issue by creating additional class
> 'CommandParam' : something like command design 
> pattern:http://en.wikipedia.org/wiki/Command_pattern
>
> -------------------------------------
> public class CommandParam {
>
>     private final String param1;
>     private final String param2;
>
>     public CommandParam(String param1) {
>         this.param1 = param1;
>         this.param2 = null;
>     }
>
>     public CommandParam(String param1, String param2) {
>         this.param1 = param1;
>         this.param2 = param2;
>     }
>
>     public String getParam1() {
>         return param1;
>     }
>
>     public String getParam2() {
>         return param2;
>     }
>
> }
>
> ------------------
>
> and replace:
>
> @Inject
>   public ConcreteCommand1(SomeService service, @Assisted String
> runtime1) {
>
> with
>
> @Inject
>   public ConcreteCommand1(SomeService service, @Assisted CommandParam
> runtime1) {
>
> and, of course, all the other stuff accordingly.
>
> instance.process("command1",new CommandParam("This is runtime param
> for command 1"));
> instance.process("command2",new CommandParam("This is runtime param
> for command 2","Second param"));
> instance.process("command3",new CommandParam("This should fail"));
>
> It works for me but I'm interested if this problem (variable number of
> arguments) can be resolved the other way, without introducing
> additional 'CommandParam' class.

--

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=.


Reply via email to