Re: how to test session/request scopes ?

2009-06-13 Thread Dhanji R. Prasanna
You can simulate a request by instantiating GuiceFilter() and passing it a
mock request and response. If you have previously installed a configured
ServletModule, it will execute the servlets + filters registered in the GS2
pipeline.
Dhanji.

On Sat, Jun 13, 2009 at 5:12 AM, naaka  wrote:

>
> thanks dhanji.
>
> but what other ways do i have for testing ?
>
> i wanted to do some integration testing and i need to have everything
> injected by the container.
>
>
> nicola
>
>
>
> On Jun 12, 6:32 pm, "Dhanji R. Prasanna"  wrote:
> > You should bind @RequestScoped and @SessionScoped to your own mock Scope
> > implementation. Then Guice will use this instead of its default HTTP
> scopes.
> > In this case you want to omit the ServletModule in your test.
> > MockRequestScope myMockScope = new MockRequestScope();
> > bindScope(RequestScoped.class, myMockScope);
> >
> > //after tests
> > myMockScope.assertThatThingsWereScoped();
> >
> > Btw, this is a very heavyweight way of testing, so I assume this is not
> > something you need to do often.
> > good luck!
> >
> > Dhanji.
> >
> > On Fri, Jun 12, 2009 at 9:18 AM, naaka  wrote:
> >
> > > hi,
> > > i tried out google guice and it looks great.
> >
> > > i have tdd-ed a small spike with persistence and singleton/no scopes
> > > and every worked fine.
> >
> > > now i have added the servlet-guice extension, and changed a class to
> > > session scope, but my test complaint:
> >
> > > com.google.inject.ProvisionException: Guice provision errors:
> >
> > > 1) Error in custom provider, com.google.inject.OutOfScopeException:
> > > Cannot access scoped object. Either we are not currently inside an
> > > HTTP Servlet request, or you may have forgotten to apply
> > > com.google.inject.servlet.GuiceFilter as a servlet filter for this
> > > request.
> > >  while locating com.naaka.spikes.domain.User
> > >for field at com.naaka.spikes.domain.UserTest.defaultUser
> > > (UserTest.java:24)
> > >  while locating com.naaka.spikes.domain.UserTest
> >
> > > i already added the servlet module in the setup method:
> >
> > > @BeforeClass
> > > public void setupInjection() {
> > >  ...
> > >  modules.add(declarePersistence);
> > >  modules.add(configPersistence);
> > >  modules.add(new ServletModule());
> > >  injector = Guice.createInjector(modules);
> > >  ...
> > > }
> >
> > > how i can setup a test to work with session modules ?
> >
> > > do i have to mock something (servlet request/response/filter) ?
> >
> > > is there a base test class or a test i can copy from ?
> >
> > > THANKS !
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to google-guice@googlegroups.com
To unsubscribe from this group, send email to 
google-guice+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~--~~~~--~~--~--~---



Re: AOP interceptor: match only subclass methods

2009-06-13 Thread Alen Vrecko

Notice the first Matcher takes a  and it decides if the
class is eligible for AOP. The second Matcher takes a 
and it decides if it should intercept the method or not.

Nothing is stopping you from inspecting the method e.g.

new AbstractMatcher() {
public boolean matches(Method method) {
return method.getDeclaringClass().getPackage
()  // decide if you like this method or not
}
}


Cheers
Alen

On Jun 13, 3:02 pm, tchan  wrote:
> Hi;
>
> Has anyone worked with the AOP interceptors in Guice much?  I'm used
> to using full blown AspectJ in my other projects and am having
> difficulty reproducing some mix-in behaviour using plain AOP.
>
> I want to introduce a tracer on instance methods in certain packages.
> The catch is that I only want the logic applied to methods declared in
> those packages.  That is, skip methods defined in parent classes that
> reside outside of the target packages.
>
> So say class A resides in org.library and class B that extends A
> resides in my.project.  I want to only intercept methods defined in
> my.project.B and not any inherited method from org.library.A.
>
> Right now, I am using subpackageOf() as my class matcher and any() as
> my method matcher in my bind interceptor declaration.  This doesn't do
> what I want, it will apply to all methods in the subpackage, even
> inherited methods from classes outside the packages I state.
>
> Does anyone have any ideas on how to do this with a custom method
> matcher?  And if it can't be done statically, what about during
> runtime in the actual interceptor?
>
> Thanks.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to google-guice@googlegroups.com
To unsubscribe from this group, send email to 
google-guice+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~--~~~~--~~--~--~---



AOP interceptor: match only subclass methods

2009-06-13 Thread tchan

Hi;

Has anyone worked with the AOP interceptors in Guice much?  I'm used
to using full blown AspectJ in my other projects and am having
difficulty reproducing some mix-in behaviour using plain AOP.

I want to introduce a tracer on instance methods in certain packages.
The catch is that I only want the logic applied to methods declared in
those packages.  That is, skip methods defined in parent classes that
reside outside of the target packages.

So say class A resides in org.library and class B that extends A
resides in my.project.  I want to only intercept methods defined in
my.project.B and not any inherited method from org.library.A.

Right now, I am using subpackageOf() as my class matcher and any() as
my method matcher in my bind interceptor declaration.  This doesn't do
what I want, it will apply to all methods in the subpackage, even
inherited methods from classes outside the packages I state.

Does anyone have any ideas on how to do this with a custom method
matcher?  And if it can't be done statically, what about during
runtime in the actual interceptor?

Thanks.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to google-guice@googlegroups.com
To unsubscribe from this group, send email to 
google-guice+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~--~~~~--~~--~--~---



Re: Wildcards...

2009-06-13 Thread Johannes Schneider

Thanks for your suggestion - I have discovered the provides methods
(annotated with @Provides) that do the same thing.
So for all you out there - just use that annotation - will save a lot of
work and the code gets a lot clearer.


Btw: Guice is great
Btw2: Plz upload to maven central


Regards,

Johannes

je...@swank.ca wrote:
> 
> 
> On Jun 6, 8:48 am, Johannes Schneider  wrote:
>> bind( ( TypeLiteral> ) TypeLiteral.get(
>> Types.listOf( Types.subtypeOf( new TypeLiteral>() {
>> }.getType() ) ) ) ).toProvider( BProvider.class );
> 
> Not much I can really say - creating models for complex types code-
> intensive. TypeLiteral works for some wildcards, and for the ones it
> doesn't you can either use the Types factory class, or you can do
> something reflective.
>   private final List unused = null;
>   private final TypeLiteral> type = fieldToType
> (MyClass.class, unused);
> 
>   private static Type fieldToType(Class definedIn, String name) {
> return definedIn.getDeclaredField(name).getGenericType();
>   }
> > 

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to google-guice@googlegroups.com
To unsubscribe from this group, send email to 
google-guice+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~--~~~~--~~--~--~---



Re: how to test session/request scopes ?

2009-06-13 Thread naaka

thanks dhanji.

but what other ways do i have for testing ?

i wanted to do some integration testing and i need to have everything
injected by the container.


nicola



On Jun 12, 6:32 pm, "Dhanji R. Prasanna"  wrote:
> You should bind @RequestScoped and @SessionScoped to your own mock Scope
> implementation. Then Guice will use this instead of its default HTTP scopes.
> In this case you want to omit the ServletModule in your test.
> MockRequestScope myMockScope = new MockRequestScope();
> bindScope(RequestScoped.class, myMockScope);
>
> //after tests
> myMockScope.assertThatThingsWereScoped();
>
> Btw, this is a very heavyweight way of testing, so I assume this is not
> something you need to do often.
> good luck!
>
> Dhanji.
>
> On Fri, Jun 12, 2009 at 9:18 AM, naaka  wrote:
>
> > hi,
> > i tried out google guice and it looks great.
>
> > i have tdd-ed a small spike with persistence and singleton/no scopes
> > and every worked fine.
>
> > now i have added the servlet-guice extension, and changed a class to
> > session scope, but my test complaint:
>
> > com.google.inject.ProvisionException: Guice provision errors:
>
> > 1) Error in custom provider, com.google.inject.OutOfScopeException:
> > Cannot access scoped object. Either we are not currently inside an
> > HTTP Servlet request, or you may have forgotten to apply
> > com.google.inject.servlet.GuiceFilter as a servlet filter for this
> > request.
> >  while locating com.naaka.spikes.domain.User
> >    for field at com.naaka.spikes.domain.UserTest.defaultUser
> > (UserTest.java:24)
> >  while locating com.naaka.spikes.domain.UserTest
>
> > i already added the servlet module in the setup method:
>
> > @BeforeClass
> > public void setupInjection() {
> >  ...
> >  modules.add(declarePersistence);
> >  modules.add(configPersistence);
> >  modules.add(new ServletModule());
> >  injector = Guice.createInjector(modules);
> >  ...
> > }
>
> > how i can setup a test to work with session modules ?
>
> > do i have to mock something (servlet request/response/filter) ?
>
> > is there a base test class or a test i can copy from ?
>
> > THANKS !
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to google-guice@googlegroups.com
To unsubscribe from this group, send email to 
google-guice+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~--~~~~--~~--~--~---