Sure ..

James Carman schrieb:
If we go with the annotation route, I see no reason why we couldn’t use both
XML and annotations at the same time.  It's just a different mechanism for
constructing the POJOs that it takes to put together the registry.  We just
need to get the POJO model right.  That's where I say we need to focus our
efforts, because without that, none of this stuff is possible.  We need a
common ground.  Agreed?

-----Original Message-----
From: James Carman [mailto:[EMAIL PROTECTED] Sent: Monday, July 31, 2006 7:28 AM
To: [email protected]
Subject: RE: HM2 Interceptors...

Oooooh!  Very nice!  Just make sure you return Object, though.  But, I like
it!  We'd just have to generate the class at runtime which calls that
method.  Cool idea!

-----Original Message-----
From: Achim Hügen [mailto:[EMAIL PROTECTED] Sent: Monday, July 31, 2006 7:26 AM
To: [email protected]
Subject: Re: HM2 Interceptors...

I agree, this would be really helpful.

In an annotated module one could even write inline interceptors that
doesn't need a separate class:

public class MyModule()
{
   @Interceptor(for="allServices" ...)
   public void loggingInterceptor(Invocation invocation) {
       log.debug("before.....");
       invocation.invoke()
       log.debug("after.....");
   }
}

Achim


James Carman schrieb:
Yes, it would look a lot like the interceptor in commons proxy.  I don't
really know what the penalty would look like with the added layer of
indirection.  But, to me, it's all about ease of use.  It's much easier to
write an Interceptor (or use an existing one) than to write code using
Javassist to generate a class that does the interception.  Commons proxy
(or
some code borrowed from it) will take care of generating the classes for
you
that will call the appropriate methods downstream of your interceptor.

-----Original Message-----
From: Achim Hügen [mailto:[EMAIL PROTECTED] Sent: Sunday, July 30, 2006 4:47 PM
To: [email protected]
Subject: Re: HM2 Interceptors...

What does the ServiceInterceptor look like?
Does it have a intercept method only like the interceptor in commons
proxy?
Won't there be a performance penalty when the interceptor
call chain is built by an extra level of indirection?

Achim


Am Fri, 28 Jul 2006 14:54:01 +0200 schrieb James Carman <[EMAIL PROTECTED]>:

All,

The HiveMind interceptor facility has been a thorn in my side from the
beginning (hence the MethodInterceptorFactory).  Writing interceptors is

way
too complicated IMHO. We should make it much simpler. I would suggest that
we do away with the stack altogether, at least from a "client view."  We

may
very well use it internally, but requiring that a user push something onto
the stack that implements the service interface is way too much to ask.
Instead, service interceptor factories should return an Interceptor object instead and we (the HiveMind code actually) will take care of the hard work of wiring everything together to make sure that the method calls go through
the interceptor on their way ultimately to the implementation object:

public interface ServiceInterceptorFactory
{
  public ServiceInterceptor createInterceptor(
ServiceInterceptorFactoryParameters params );
}

The parameters object would contain the usual stuff like the service id,
service interface, module, etc.  It would also contain a reference to the
implementation object! Now, interceptor factories can be declared locally
(for one service point) or globally (which means that they'll be applied

to
every service point).  If the factory returns null, then the interceptor

is
not applied. Basically, a factory can now *decide* whether or not they want
to contribute to the service point.  This would allow us to "auto-proxy"
service points. The reason that I added the impl object into the parameters is so that if annotations are used to make that decision and they're only on
the impl class (like @Transactional).  What do you guys think?

James











Reply via email to