Guice Dependency Injection in a plugin?

207 views
Skip to first unread message

Dan Alvizu

unread,
Dec 17, 2014, 7:08:59 PM12/17/14
to jenkin...@googlegroups.com
Hi,

I just wrote this wiki page on how to do dependency injection in a plugin:


I want to use this so that I can provide a move requests to external resource to a service class and pass a mock to my Publisher during unit tests.

The problem with the example I gave in the wiki is that I cannot provide a mock easily:

    @Override
    public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener)
    {
        Guice.createInjector(new MyModule()).injectMembers(this);
        // ...
        mySvc.myServiceMethod(); // "it works!"
    }

I need to remove that Guice.creatInjector() line.

Is it possible to mark the AbstractModule subclass to be 'picked up' by Guice? I tried marking it with @Exension from comments here https://issues.jenkins-ci.org/browse/JENKINS-8751 but it's not being injected.


Baptiste Mathus

unread,
Feb 19, 2015, 3:03:39 PM2/19/15
to jenkin...@googlegroups.com
Just played a bit with it in my plugins (and I guess I'm gonna use more DI from now on), IIUC your example, you indeed should mark the related classes with @Extension so that the "system" knows about them.

So, in your example, I think you should just NOT have a class like your MyGuiceModule.java because Jenkins is gonna auto-discover classes marked @Extension, and then add @Extension on MySvcImpl and MyPublisher. And be done.

Worked for me.

HTH

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/fdcc62d6-c347-4239-97cc-26560b4014ba%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Baptiste <Batmat> MATHUS - http://batmat.net
Sauvez un arbre,
Mangez un castor !
Reply all
Reply to author
Forward
0 new messages