This is the reference implementation of the interceptors: https://github.com/jsr107/RI They have:
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> <interceptors> <class>org.jsr107.ri.annotations.cdi.CacheResultInterceptor</class> <class>org.jsr107.ri.annotations.cdi.CachePutInterceptor</class> <class>org.jsr107.ri.annotations.cdi.CacheRemoveEntryInterceptor</class> <class>org.jsr107.ri.annotations.cdi.CacheRemoveAllInterceptor</class> </interceptors> </beans> and they have 2files with: org.jsr107.ri.annotations.cdi.InterceptorExtension and org.jsr107.ri.annotations.cdi.CdiAnnotationProviderImpl The interceptors work on a normal cdi bean. On Fri, Apr 20, 2018 at 3:17 PM, Thomas Andraschko < [email protected]> wrote: > AFAIK there 2 ways of using interceptors with CDI: > > 1) @InterceptorBinding > 2) @Interceptors(..) > > We only support 1) currently. > > So i have currently no idea how @CacheResult will work even a normal CDI > bean. Maybe it's done in Wildfly but not via the "normal" CDI way. > > > > > 2018-04-20 15:48 GMT+02:00 Luís Alves <[email protected]>: > > > Submitted: https://github.com/jsr107/jsr107spec/issues/401 > > I suppose they will tell the issue is from DS...:( > > > > > > On Fri, Apr 20, 2018 at 2:36 PM, Luís Alves <[email protected]> > wrote: > > > > > I suppose it's CDI capable. > > > > > > https://www.jcp.org/en/jsr/detail?id=107 > > > > > > Red Hat > > > : Pete Muir <--- is on the expert group > > > > > > > > > * @author Gavin King > > > * @author Pete Muir > > > * @author Antoine Sabot-Durand > > > */ > > > > > > @Target({ TYPE, METHOD, FIELD }) > > > @Retention(RUNTIME) > > > @Documented > > > @NormalScope > > > @Inherited > > > public @interface ApplicationScoped { > > > > > > } > > > > > > > > > what I don't understand is how DS look for the interceptors? Can you > > point > > > me out the code? > > > Isn't possible to look for all annotations even if they don't have > > > @InterceptorBinding and then look for the registered interceptors? > > > > > > > > > > > > > > > On Fri, Apr 20, 2018 at 2:33 PM, Luís Alves <[email protected]> > > wrote: > > > > > >> I suppose it's CDI capable. > > >> > > >> https://www.jcp.org/en/jsr/detail?id=107 > > >> > > >> > > >> > > >> On Fri, Apr 20, 2018 at 2:24 PM, Thomas Andraschko < > > >> [email protected]> wrote: > > >> > > >>> Puh, i wonder why they did it without binding. CacheResult is > actually > > >>> exactly a binding for the interceptor. > > >>> Is it CDI compatible? Never had a look at the cache API ;) > > >>> > > >>> Even there is a bridge or something available ( > > >>> https://github.com/tomitribe/jcache-cdi), i'm not sure if this would > > >>> work > > >>> with the limited ability to add interceptors to partial beans. > > >>> > > >>> I think the best solution for now is to create a own binding. > > >>> > > >>> 2018-04-20 14:55 GMT+02:00 Luís Alves <[email protected]>: > > >>> > > >>> > uhm...that's not good :S > > >>> > > > >>> > the annotation is this one: > > >>> > > > >>> > https://static.javadoc.io/javax.cache/cache-api/1.0.0/ > > >>> > javax/cache/annotation/CacheResult.html > > >>> > > > >>> > is there a way that using that annotation we get the interceptor to > > >>> work? > > >>> > (I can implement the interceptor myself....as I said I cannot > modify > > >>> the > > >>> > annotation as it is javax packge) > > >>> > > > >>> > > > >>> > > > >>> > On Fri, Apr 20, 2018 at 1:41 PM, Thomas Andraschko < > > >>> > [email protected]> wrote: > > >>> > > > >>> > > Just to be clear: I have no idea how internally CacheResult works > > >>> but our > > >>> > > partial beans only supports CDI interceptors by a binding > > >>> > > (InterceptorBinding). > > >>> > > Everything else, like stated in the doc (@Interceptors, > > @Intercepted, > > >>> > > @Decorator), is not supported. > > >>> > > > > >>> > > 2018-04-20 14:31 GMT+02:00 Thomas Andraschko < > > >>> > [email protected] > > >>> > > >: > > >>> > > > > >>> > > > In must not work without the interceptorbinding. Do you mean > that > > >>> it > > >>> > does > > >>> > > > work without? > > >>> > > > > > >>> > > > > > >>> > > > Am Freitag, 20. April 2018 schrieb Luís Alves : > > >>> > > > > > >>> > > >> can you update your test to remove @InterceptorBinding? and > > check > > >>> if > > >>> > it > > >>> > > >> works? > > >>> > > >> > > >>> > > >> javax.cache.annotation.CacheResult is standard so I don't > want > > >>> to > > >>> > > extend > > >>> > > >> it to have the @InterceptorBinding.....if this is really the > > >>> problem. > > >>> > > >> > > >>> > > >> On Fri, Apr 20, 2018 at 1:11 PM, Luís Alves < > > >>> [email protected]> > > >>> > > >> wrote: > > >>> > > >> > > >>> > > >> > @Retention(RUNTIME) > > >>> > > >> > @Target({ TYPE, METHOD }) > > >>> > > >> > // @InterceptorBinding > > >>> > > >> > public @interface CustomInterceptor > > >>> > > >> > { > > >>> > > >> > } > > >>> > > >> > > > >>> > > >> > I suspect is this @InterceptorBinding....but not 100% > > >>> sure....what > > >>> > is > > >>> > > >> the > > >>> > > >> > purpose of that? > > >>> > > >> > > > >>> > > >> > On Fri, Apr 20, 2018 at 1:06 PM, Luís Alves < > > >>> [email protected]> > > >>> > > >> wrote: > > >>> > > >> > > > >>> > > >> >> don't you want to rewrite your tests with the @CacheResult > > >>> > > interceptor > > >>> > > >> ;) > > >>> > > >> >> ? to see if it works? > > >>> > > >> >> > > >>> > > >> >> On Fri, Apr 20, 2018 at 12:57 PM, Thomas Andraschko < > > >>> > > >> >> [email protected]> wrote: > > >>> > > >> >> > > >>> > > >> >>> No idea, debug if the interceptor is really called ;) > > >>> > > >> >>> > > >>> > > >> >>> 2018-04-20 13:56 GMT+02:00 Luís Alves < > > [email protected] > > >>> >: > > >>> > > >> >>> > > >>> > > >> >>> > moved the @CustomInterceptor declaration of the > > interceptor > > >>> for > > >>> > > the > > >>> > > >> >>> web app > > >>> > > >> >>> > beans.xml and now it gets called....SO it should work > for > > >>> the > > >>> > > cache > > >>> > > >> as > > >>> > > >> >>> > well. Any hint? > > >>> > > >> >>> > > > >>> > > >> >>> > On Fri, Apr 20, 2018 at 12:43 PM, Luís Alves < > > >>> > > [email protected] > > >>> > > >> > > > >>> > > >> >>> > wrote: > > >>> > > >> >>> > > > >>> > > >> >>> > > So I've created a custom one (in fact is a "copy" of > > yours > > >>> > that > > >>> > > >> logs > > >>> > > >> >>> a > > >>> > > >> >>> > > line): > > >>> > > >> >>> > > > > >>> > > >> >>> > > @Interceptor > > >>> > > >> >>> > > @CustomInterceptor > > >>> > > >> >>> > > public class CustomInterceptorImpl implements > > Serializable > > >>> > > >> >>> > > { > > >>> > > >> >>> > > > > >>> > > >> >>> > > private static final long serialVersionUID = > > >>> > > >> >>> 7327752605570037403L; > > >>> > > >> >>> > > > > >>> > > >> >>> > > @Inject > > >>> > > >> >>> > > private Logger logger; > > >>> > > >> >>> > > > > >>> > > >> >>> > > @AroundInvoke > > >>> > > >> >>> > > public Object interceptIt(InvocationContext > > >>> > > invocationContext) > > >>> > > >> >>> throws > > >>> > > >> >>> > > Exception > > >>> > > >> >>> > > { > > >>> > > >> >>> > > logger.info("yay :) CustomInterceptorImpl was > > >>> > called"); > > >>> > > >> >>> > > return invocationContext.proceed(); > > >>> > > >> >>> > > } > > >>> > > >> >>> > > } > > >>> > > >> >>> > > > > >>> > > >> >>> > > registered on the beans.xml (for service and repo > > layers): > > >>> > > >> >>> > > > > >>> > > >> >>> > > <?xml version="1.0" encoding="UTF-8"?> > > >>> > > >> >>> > > <beans xmlns="http://java.sun.com/xml/ns/javaee" > > >>> xmlns:xsi=" > > >>> > > >> >>> > > http://www.w3.org/2001/XMLSchema-instance" > > >>> > > >> >>> > > xsi:schemaLocation="http:// > > java.sun.com/xml/ns/javaee > > >>> > > >> >>> > > http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> > > >>> > > >> >>> > > > > >>> > > >> >>> > > <interceptors> > > >>> > > >> >>> > > <class>org.jsr107.ri.annotations.cdi. > > >>> > > >> >>> > > CacheResultInterceptor</class> > > >>> > > >> >>> > > ... > > >>> > > >> >>> > > <class>eu.gls.ddtm.config. > > >>> > CustomInterceptorImpl</class> > > >>> > > >> >>> > > </interceptors> > > >>> > > >> >>> > > > > >>> > > >> >>> > > </beans> > > >>> > > >> >>> > > > > >>> > > >> >>> > > It's called on the service layer but not on the > > >>> @Repository :( > > >>> > > >> >>> > > > > >>> > > >> >>> > > ...I'm using Wildfly 10 (CDI 1.x)... > > >>> > > >> >>> > > > > >>> > > >> >>> > > > > >>> > > >> >>> > > > > >>> > > >> >>> > > On Fri, Apr 20, 2018 at 11:50 AM, Thomas Andraschko < > > >>> > > >> >>> > > [email protected]> wrote: > > >>> > > >> >>> > > > > >>> > > >> >>> > >> You can try with a custom interceptor and check if > it's > > >>> > > invoked? > > >>> > > >> >>> > >> > > >>> > > >> >>> > >> I assume you don't use weld-2.0.0.Final or > > >>> weld-2.0.0.SP1? We > > >>> > > >> have a > > >>> > > >> >>> > >> exclusion for this in the unit test as there is > > something > > >>> > > broken, > > >>> > > >> >>> as you > > >>> > > >> >>> > >> can check in the link i posted before. > > >>> > > >> >>> > >> Otherwise, it would be great if you could provide a > > >>> unittest > > >>> > > for > > >>> > > >> the > > >>> > > >> >>> > data > > >>> > > >> >>> > >> module. > > >>> > > >> >>> > >> I don't have time to prepare it by myself. > > >>> > > >> >>> > >> > > >>> > > >> >>> > >> > > >>> > > >> >>> > >> 2018-04-20 12:40 GMT+02:00 Luís Alves < > > >>> [email protected] > > >>> > >: > > >>> > > >> >>> > >> > > >>> > > >> >>> > >> > So far no success...@CacheResult on > > >>> > > >> >>> > >> > > > >>> > > >> >>> > >> > @ApplicationScoped > > >>> > > >> >>> > >> > @Repository > > >>> > > >> >>> > >> > public abstract class SomeRepository > > >>> > > >> >>> > >> > > > >>> > > >> >>> > >> > doesn't seem to work :S not sure what I'm doing > > wrong. > > >>> > > >> >>> > >> > > > >>> > > >> >>> > >> > > > >>> > > >> >>> > >> > On Fri, Apr 20, 2018 at 11:03 AM, Luís Alves < > > >>> > > >> >>> [email protected]> > > >>> > > >> >>> > >> > wrote: > > >>> > > >> >>> > >> > > > >>> > > >> >>> > >> > > I ditched the CustomBaseRepository for now...but > > >>> still > > >>> > > can't > > >>> > > >> >>> get the > > >>> > > >> >>> > >> > cache > > >>> > > >> >>> > >> > > interceptor to work...here is my beans.xml: > > >>> > > >> >>> > >> > > > > >>> > > >> >>> > >> > > <?xml version="1.0" encoding="UTF-8"?> > > >>> > > >> >>> > >> > > <beans xmlns="http://java.sun.com/xml/ns/javaee" > > >>> > > xmlns:xsi=" > > >>> > > >> >>> > >> > > http://www.w3.org/2001/XMLSchema-instance" > > >>> > > >> >>> > >> > > xsi:schemaLocation="http:// > > >>> > java.sun.com/xml/ns/javaee > > >>> > > >> >>> > >> > > http://java.sun.com/xml/ns/javaee/beans_1_0.xsd > "> > > >>> > > >> >>> > >> > > > > >>> > > >> >>> > >> > > <interceptors> > > >>> > > >> >>> > >> > > <class>org.jsr107.ri.annotations.cdi. > > >>> > > >> >>> > >> > > CacheResultInterceptor</class> > > >>> > > >> >>> > >> > > <class>org.jsr107.ri.annotations.cdi. > > >>> > > >> >>> > >> > CacheRemoveEntryInterceptor</ > > >>> > > >> >>> > >> > > class> > > >>> > > >> >>> > >> > > <class>org.jsr107.ri.annotati > > >>> > > >> >>> ons.cdi.CacheRemoveAllIntercep > > >>> > > >> >>> > >> tor</ > > >>> > > >> >>> > >> > > class> > > >>> > > >> >>> > >> > > <class>org.jsr107.ri.annotati > > >>> > > >> >>> ons.cdi.CachePutInterceptor</ > > >>> > > >> >>> > >> class> > > >>> > > >> >>> > >> > > </interceptors> > > >>> > > >> >>> > >> > > > > >>> > > >> >>> > >> > > </beans> > > >>> > > >> >>> > >> > > > > >>> > > >> >>> > >> > > > > >>> > > >> >>> > >> > > LA > > >>> > > >> >>> > >> > > > > >>> > > >> >>> > >> > > On Fri, Apr 20, 2018 at 10:45 AM, Luís Alves < > > >>> > > >> >>> [email protected] > > >>> > > >> >>> > > > > >>> > > >> >>> > >> > > wrote: > > >>> > > >> >>> > >> > > > > >>> > > >> >>> > >> > >> Thanks Thomas, > > >>> > > >> >>> > >> > >> > > >>> > > >> >>> > >> > >> if I understood correctly if they are on the > > >>> bean.xml > > >>> > they > > >>> > > >> >>> should > > >>> > > >> >>> > >> works > > >>> > > >> >>> > >> > >> :)...only annotated one don't work. > > >>> > > >> >>> > >> > >> > > >>> > > >> >>> > >> > >> I'm now (not sure why I didn't had it before) > > >>> getting: > > >>> > > >> >>> > >> > >> org.apache.deltaspike.data.imp > > >>> > > >> l.RepositoryDefinitionException: > > >>> > > >> >>> > >> > >> Repository creation for class class > > >>> CustomBaseRepository > > >>> > > >> >>> failed. Is > > >>> > > >> >>> > >> it > > >>> > > >> >>> > >> > >> associated with a valid Entity? I got this base > > >>> class > > >>> > for > > >>> > > >> some > > >>> > > >> >>> > >> > repositories > > >>> > > >> >>> > >> > >> for some similar behavior: > > >>> > > >> >>> > >> > >> > > >>> > > >> >>> > >> > >> public abstract class CustomBaseRepository <E > > >>> extends > > >>> > > >> >>> > >> DomainObject<K>, K > > >>> > > >> >>> > >> > >> extends Serializable> > > >>> > > >> >>> > >> > >> extends AbstractEntityRepository<E, K> > > >>> > > >> >>> > >> > >> { > > >>> > > >> >>> > >> > >> > > >>> > > >> >>> > >> > >> not sure if this inheritance is supposed to work > > >>> with > > >>> > the > > >>> > > >> >>> Repos... > > >>> > > >> >>> > >> > >> > > >>> > > >> >>> > >> > >> > > >>> > > >> >>> > >> > >> > > >>> > > >> >>> > >> > >> On Fri, Apr 20, 2018 at 10:23 AM, Thomas > > Andraschko > > >>> < > > >>> > > >> >>> > >> > >> [email protected]> wrote: > > >>> > > >> >>> > >> > >> > > >>> > > >> >>> > >> > >>> See: > > >>> > > >> >>> > >> > >>> https://github.com/apache/delt > > >>> > > >> aspike/tree/master/deltaspike/ > > >>> > > >> >>> > >> > >>> modules/partial-bean/impl/src/ > > >>> > > >> test/java/org/apache/deltaspik > > >>> > > >> >>> > >> > >>> e/test/core/api/partialbean/uc008 > > >>> > > >> >>> > >> > >>> > > >>> > > >> >>> > >> > >>> 2018-04-20 11:22 GMT+02:00 Thomas Andraschko < > > >>> > > >> >>> > >> > >>> [email protected]>: > > >>> > > >> >>> > >> > >>> > > >>> > > >> >>> > >> > >>> > Interceptors in generell should be supported > > but > > >>> only > > >>> > > via > > >>> > > >> >>> custom > > >>> > > >> >>> > >> > >>> binding - > > >>> > > >> >>> > >> > >>> > not via "@Interceptors, @Intercepted and > > >>> @Decorator" > > >>> > > >> >>> > >> > >>> > > > >>> > > >> >>> > >> > >>> > 2018-04-20 11:21 GMT+02:00 Luís Alves < > > >>> > > >> >>> [email protected]>: > > >>> > > >> >>> > >> > >>> > > > >>> > > >> >>> > >> > >>> >> So far I found that @Repository is actually > a > > >>> > > >> >>> > @PartialBeanBinding > > >>> > > >> >>> > >> > and > > >>> > > >> >>> > >> > >>> I > > >>> > > >> >>> > >> > >>> >> found: "Currently CDI Interceptors applied > via > > >>> > > >> >>> @Interceptors, > > >>> > > >> >>> > >> > >>> @Intercepted > > >>> > > >> >>> > >> > >>> >> and @Decorator are not supported by our > > proxies! > > >>> > > >> "...does > > >>> > > >> >>> it > > >>> > > >> >>> > >> means > > >>> > > >> >>> > >> > >>> that > > >>> > > >> >>> > >> > >>> >> I'm > > >>> > > >> >>> > >> > >>> >> screwed ;)? > > >>> > > >> >>> > >> > >>> >> > > >>> > > >> >>> > >> > >>> >> LA > > >>> > > >> >>> > >> > >>> >> > > >>> > > >> >>> > >> > >>> >> On Fri, Apr 20, 2018 at 10:11 AM, Luís > Alves < > > >>> > > >> >>> > >> [email protected] > > >>> > > >> >>> > >> > > > > >>> > > >> >>> > >> > >>> >> wrote: > > >>> > > >> >>> > >> > >>> >> > > >>> > > >> >>> > >> > >>> >> > even with @ApplicationScoped the > interceptor > > >>> is > > >>> > not > > >>> > > >> >>> working > > >>> > > >> >>> > :( > > >>> > > >> >>> > >> > can't > > >>> > > >> >>> > >> > >>> >> > figure out why...can't @Repository methods > > be > > >>> > > >> >>> intercepted? > > >>> > > >> >>> > >> > >>> >> > > > >>> > > >> >>> > >> > >>> >> > > > >>> > > >> >>> > >> > >>> >> > > > >>> > > >> >>> > >> > >>> >> > On Fri, Apr 20, 2018 at 9:53 AM, Luís > Alves > > < > > >>> > > >> >>> > >> > [email protected]> > > >>> > > >> >>> > >> > >>> >> wrote: > > >>> > > >> >>> > >> > >>> >> > > > >>> > > >> >>> > >> > >>> >> >> since it's proxied...it should be OK...I > > >>> guess > > >>> > it's > > >>> > > >> like > > >>> > > >> >>> > >> > Spring's > > >>> > > >> >>> > >> > >>> >> >> repositories. > > >>> > > >> >>> > >> > >>> >> >> > > >>> > > >> >>> > >> > >>> >> >> On Fri, Apr 20, 2018 at 9:44 AM, Luís > > Alves < > > >>> > > >> >>> > >> > [email protected] > > >>> > > >> >>> > >> > >>> > > > >>> > > >> >>> > >> > >>> >> >> wrote: > > >>> > > >> >>> > >> > >>> >> >> > > >>> > > >> >>> > >> > >>> >> >>> Hi, > > >>> > > >> >>> > >> > >>> >> >>> > > >>> > > >> >>> > >> > >>> >> >>> @Repository is @Dependent scoped...and > > seems > > >>> > that > > >>> > > >> >>> > @Dependent > > >>> > > >> >>> > >> > >>> don't run > > >>> > > >> >>> > >> > >>> >> >>> interceptors, so @CacheResult(cacheName > = > > >>> > > >> "my-cache") > > >>> > > >> >>> > >> annotation > > >>> > > >> >>> > >> > >>> isn't > > >>> > > >> >>> > >> > >>> >> >>> working :( > > >>> > > >> >>> > >> > >>> >> >>> I remember that some one proposed that > > >>> > @Repository > > >>> > > >> >>> > >> could/should > > >>> > > >> >>> > >> > be > > >>> > > >> >>> > >> > >>> >> >>> @ApplicationScoped...if I change them > do > > I > > >>> have > > >>> > > to > > >>> > > >> >>> worry > > >>> > > >> >>> > >> with > > >>> > > >> >>> > >> > >>> >> anything? My > > >>> > > >> >>> > >> > >>> >> >>> EntityManager producer is the following: > > >>> > > >> >>> > >> > >>> >> >>> > > >>> > > >> >>> > >> > >>> >> >>> @Produces > > >>> > > >> >>> > >> > >>> >> >>> @RequestScoped > > >>> > > >> >>> > >> > >>> >> >>> public EntityManager get() > > >>> > > >> >>> > >> > >>> >> >>> { > > >>> > > >> >>> > >> > >>> >> >>> return entityManager; > > >>> > > >> >>> > >> > >>> >> >>> } > > >>> > > >> >>> > >> > >>> >> >>> > > >>> > > >> >>> > >> > >>> >> >>> I suppose I'll have a different EM for > > each > > >>> HTTP > > >>> > > >> >>> request / > > >>> > > >> >>> > >> MDB > > >>> > > >> >>> > >> > >>> >> >>> onMessage() / @Scheduled(cronExpression > > >>> > > >> ="....")...am I > > >>> > > >> >>> > >> correct? > > >>> > > >> >>> > >> > >>> >> >>> > > >>> > > >> >>> > >> > >>> >> >>> regards, > > >>> > > >> >>> > >> > >>> >> >>> LA > > >>> > > >> >>> > >> > >>> >> >>> > > >>> > > >> >>> > >> > >>> >> >> > > >>> > > >> >>> > >> > >>> >> >> > > >>> > > >> >>> > >> > >>> >> > > > >>> > > >> >>> > >> > >>> >> > > >>> > > >> >>> > >> > >>> > > > >>> > > >> >>> > >> > >>> > > > >>> > > >> >>> > >> > >>> > > >>> > > >> >>> > >> > >> > > >>> > > >> >>> > >> > >> > > >>> > > >> >>> > >> > > > > >>> > > >> >>> > >> > > > >>> > > >> >>> > >> > > >>> > > >> >>> > > > > >>> > > >> >>> > > > > >>> > > >> >>> > > > >>> > > >> >>> > > >>> > > >> >> > > >>> > > >> >> > > >>> > > >> > > > >>> > > >> > > >>> > > > > > >>> > > > > >>> > > > >>> > > >> > > >> > > > > > >
