dropwizard-guicey icon indicating copy to clipboard operation
dropwizard-guicey copied to clipboard

Dropwizard UnitOfWork Guice Interceptor

Open amr opened this issue 8 years ago • 4 comments

Hi,

This is my first submission to this project so allow me to begin by saying: Thank you for the awesome work.

Now, Dropwizard's @UnitOfWork only works on jersey resources by default. To get them to work for methods on classes that are not jersey resources, you have to manually instantiate such classes by running them through UnitOfWorkAwareProxyFactory. Example from Dropwizard docs:

SessionDao dao = new SessionDao(hibernateBundle.getSessionFactory());
ExampleAuthenticator exampleAuthenticator = new UnitOfWorkAwareProxyFactory(hibernateBundle)
               .create(ExampleAuthenticator.class, SessionDao.class, dao);

This of course goes against what we aspire to achieve by using a DI such as Guice.

Since guice has AOP I think this awesome bundle can ship optional support for @UnitOfWork outside resources, using Guice AOP.

Here is an example of such Guice module (briefly tested and it works): https://stackoverflow.com/a/38267726/43597

It can even just be included in the Hibernate example in the docs. I'd be happy to provide a PR if this deems plausible.

amr avatar Aug 17 '17 10:08 amr

Hi! Yes, it would be great if you provide a PR for the hibernate example. Please include extra test (to check that feature is working), if possible.

xvik avatar Aug 17 '17 11:08 xvik

this is actually quite amazing. I tried it and it actually works :D

Do you think it's feasible to add it into Guicey or a standalone example should be enough? @xvik

oeddyo avatar May 08 '20 07:05 oeddyo

nvm I thought I get it working in my test case...

oeddyo avatar May 08 '20 07:05 oeddyo

Ideally, it should be improved and become a guicey-ext module to simplify configuration. And I'm thinking about it time-to-time, but there is always something more important to do.

For now, there is only a basic hibernate example

xvik avatar May 08 '20 07:05 xvik