Hello,

You really don't need a FactoryModuleBuilder here;  you have an interface
and an implementing class.

Simply bind the implementation to the interface:
  bind(XMLDocumentFactory.class).to(XMLDocumentFactoryImpl.class);

-Fred

On Tue, Jan 25, 2011 at 11:08 PM, Michael <[email protected]> wrote:

> Hi,
>
> I want to get some different XML document instances from the injector
> according to the parameter(file name).
>
> Curretnly I am looking the API of FactoryModuleBuilder, And trying to
> use @Assisted annotation to do this. But it failed.
>
> Bellowed are the codes:
>
> -----------------------Factory Class-------------------------
>
> @ImplementedBy(XMLDocumentFactoryImpl.class)
> public interface XMLDocumentFactory {
>
>        org.jdom.Document getDocument(@Assisted String fileName);
> }
>
> -----------------------Implemented Factory class-------------
>
> public class XMLDocumentFactoryImpl implements XMLDocumentFactory{
>
>        org.jdom.Document getDocument(@Assisted String fileName){
>                Document doc = null;
>                try{
>                        ...
>                        doc = SAXBuilder.build(fileName);
>                        ...
>                }Catch(Exception e){
>                        ...
>                }
>
>                return doc;
>        }
> }
>
> -----------------------Module class--------------------------
>
> install(new PropertyModule());
> install(new FactoryModuleBuilder().build(XMLDocumentFactory.class));
>
> -----------------------Action Class--------------------------
>
> public class SomeAction{
>        @Inject @Named("xml.user") private String fileName;
>        @Inject private XMLDocumentFactory factory;
>
>        public String execute() throws Exception{
>                org.jdom.Document t = factory.getDocument(this.fileName);
>        }
> }
>
> I could not enter the getDocument method of implemented factory class,
> Then got exception.
> Can anyone show me the correct way of doing this please? Many thanks!
>
> --
> 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]<google-guice%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-guice?hl=en.
>
>

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

Reply via email to