Also, you can secure CDI beans using Tapestry-security using this: http://code.google.com/p/flowlogix/wiki/TLShiroSecurityInterceptor
On Mar 10, 2013, at 5:15 AM, Lenny Primak wrote: > Kalle, that is exactly correct. > The CDI stuff (and by extension the CDI code in FlowLogix) which is taken > direct from CDI module > is so meant to use CDI beans in Tapestry, not use Tapestry services as CDI > beans. > > On Mar 10, 2013, at 1:58 AM, Kalle Korhonen wrote: > >> Both of these seem to be about referencing and using CDI managed beans in >> Tapestry services, please correct me if I'm wrong. What I'm asking is the >> reverse - using Tapestry services in applications & frameworks expecting a >> CDI environment. >> >> Kalle >> >> >> On Sat, Mar 9, 2013 at 3:41 PM, Lenny Primak <lpri...@hope.nyc.ny.us> wrote: >> >>> Actually, the CDI SPI statement may not be accurate. >>> CDI support uses BeanManager to do its job, so its CDI SPI. Not sure, >>> Kalle, if that's what you are referring to. >>> >>> >>> http://code.google.com/p/flowlogix/source/browse/tapestry-services/src/main/java/com/flowlogix/web/services/CDIModule.java >>> >>> On Mar 9, 2013, at 5:56 PM, Lenny Primak wrote: >>> >>>> I would love to contribute the FlowLogix module, or as much of it as it >>> still applies to tapestry 5.4 into the core. It includes CDI support plus >>> the JEE stack support. >>>> The CDI interface doesn't use SPI yet. >>>> >>>> >>>> >>>> On Mar 9, 2013, at 5:34 PM, Kalle Korhonen <kalle.o.korho...@gmail.com> >>> wrote: >>>> >>>>> Hey Magnus, >>>>> >>>>> as part of your tapestry-cdi work, did you look into implementing a >>>>> Tapestry CDI SPI, i.e. an implementation of >>>>> javax.enterprise.inject.spi.BeanManager? This is related to my earlier >>>>> thread about injectable entitylisteners ( >>>>> >>> http://mail-archives.apache.org/mod_mbox/tapestry-dev/201210.mbox/%3CCA+=ewnb+tjv01fiyzsded3u5iyop3wcf1r3prhqtdjrm7ix...@mail.gmail.com%3E >>> ). >>>>> JPA 2.1 is required the check the SPI (see >>>>> http://java.dzone.com/articles/cdi-extensions-you-can-build, >>>>> http://java.net/downloads/jpa-spec/JavaPersistencePFD.pdf, >>>>> >>> http://stackoverflow.com/questions/12951701/how-to-get-entity-manager-or-transaction-in-jpa-listener >>> , >>>>> >>> http://stackoverflow.com/questions/11740322/cdi-injection-is-not-working-in-servlets >>> ). >>>>> The CDI is a solid spec, we should start thinking about offering >>>>> tapestry-cdi or similar as a core Tapestry module. >>>>> >>>>> Kalle >>>>> >>>>> >>>>> On Thu, Aug 18, 2011 at 11:59 AM, Magnus Kvalheim <mag...@kvalheim.dk >>>> wrote: >>>>> >>>>>> Yes, I've noticed. Great work Igor :) >>>>>> >>>>>> I've intentionally not done anything for tapestry-cdi in terms of >>>>>> supporting >>>>>> javax.inject.@Inject. >>>>>> >>>>>> As Tap @inject and javax @inject are interchangeable - cdi bean >>> injection >>>>>> with either @inject should 'just work' with tapestry-cdi and T5.3 :) >>>>>> >>>>>> On Thu, Aug 18, 2011 at 12:56 PM, Igor Drobiazko >>>>>> <igor.drobia...@gmail.com>wrote: >>>>>> >>>>>>> Just as a side note: starting with T5.3 it's possible to use JSR 330 >>> for >>>>>>> injection. >>>>>>> >>>>>>> Check this out: >>>>>>> http://tapestry.apache.org/using-jsr-330-standard-annotations.html >>>>>>> >>>>>>> On Wed, Jun 8, 2011 at 1:56 PM, Magnus Kvalheim <mag...@kvalheim.dk> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi all, >>>>>>>> >>>>>>>> We're looking into moving our apps from a 'traditional' servlet >>>>>> container >>>>>>>> with spring into a Java EE web profile server like glassfish 3.1. >>>>>>>> Motivations for doing this is to utilize cdi(jsr 299, 330), ejb3 and >>>>>>> more. >>>>>>>> Not just for the tapestry app, but also the other applications in >>>>>>>> our portfoleo which share common core business logic. >>>>>>>> >>>>>>>> For reference on previous discussions: >>>>>> >>> http://tapestry.1045711.n5.nabble.com/Java-based-spring-configuration-td3394086.html >>>>>>>> http://tapestry.1045711.n5.nabble.com/Discussion-td2421783i20.html >>>>>>>> >>>>>>>> Now, I've tried running the tapestry quickstart app in glassfish 3.1 >>>>>>> (with >>>>>>>> the eclipse connector for publishing). >>>>>>>> This works ok - although I cannot make live class reloading work. :( >>>>>>>> >>>>>>>> Glassfish uses Weld, so the CDIModule is basically an objectprovider >>>>>> for >>>>>>>> injecting Weld managed beans. >>>>>>>> (As you probably know CDI/Weld can also be used outside jee as >>>>>>> alternative >>>>>>>> to tapestry-ioc, spring, etc) >>>>>>>> >>>>>>>> *CDIModule class* >>>>>>>> *public class CDIModule { * >>>>>>>> * public static void bind(ServiceBinder binder) {* >>>>>>>> * binder.bind(ObjectProvider.class, >>>>>>>> CDIObjectProvider.class).withId("CDIObjectProvider"); * >>>>>>>> * } * >>>>>>>> * public static BeanManager buildBeanManager(Logger log) { * >>>>>>>> * try {* >>>>>>>> * BeanManager beanManager = (BeanManager) new >>>>>>>> InitialContext().lookup("java:comp/BeanManager");* >>>>>>>> * return beanManager; * >>>>>>>> * } catch (NamingException e) {* >>>>>>>> * log.error("Could not lookup jndi resource: java:comp/BeanManager", >>>>>> e);* >>>>>>>> * }* >>>>>>>> * return null;* >>>>>>>> * } * >>>>>>>> * public static void contributeMasterObjectProvider(* >>>>>>>> * @InjectService("CDIObjectProvider") ObjectProvider cdiProvider,* >>>>>>>> * OrderedConfiguration<ObjectProvider> configuration) { * >>>>>>>> *// configuration.add("cdiProvider", cdiProvider, >>>>>> >>> "after:Service,after:AnnotationBasedContributions,after:Alias,after:Autobuild"); >>>>>>>> * >>>>>>>> * configuration.add("cdiProvider", cdiProvider, "after:*"); * >>>>>>>> * } * >>>>>>>> *}* >>>>>>>> * >>>>>>>> * >>>>>>>> The beanmanager is expected to be found in jndi. If the beans.xml is >>>>>>>> present >>>>>>>> it will be available at this point. >>>>>>>> The BeanManager is also exposed as a service and injectable for other >>>>>>>> services or components. >>>>>>>> I've tested by adding the *@SubModule(CDIModule.class) *to my >>>>>> quickstart >>>>>>>> appmodule. >>>>>>>> * >>>>>>>> * >>>>>>>> *CDIObjectProvider class* >>>>>>>> *public class CDIObjectProvider implements ObjectProvider { * >>>>>>>> * private BeanManager beanManager;* >>>>>>>> * private Logger log;* >>>>>>>> * * >>>>>>>> * @SuppressWarnings({ "unchecked", "rawtypes" })* >>>>>>>> * private Set allowedScopes = CollectionFactory.newSet(* >>>>>>>> * ApplicationScoped.class,* >>>>>>>> * Singleton.class);* >>>>>>>> * >>>>>>>> * >>>>>>>> * public CDIObjectProvider(* >>>>>>>> * Logger log,* >>>>>>>> * @InjectService("BeanManager") BeanManager manager) {* >>>>>>>> * this.beanManager = manager;* >>>>>>>> * this.log = log;* >>>>>>>> * }* >>>>>>>> * @SuppressWarnings("unchecked")* >>>>>>>> * public <T> T provide(Class<T> objectType,* >>>>>>>> * AnnotationProvider annotationProvider, ObjectLocator locator) {* >>>>>>>> * Set<Bean<?>> beans = beanManager.getBeans(objectType);* >>>>>>>> * if(beans!=null && beans.size()>0) {* >>>>>>>> * Bean<T> bean = (Bean<T>) beans.iterator().next(); * >>>>>>>> * if(hasValidScope(bean)) {* >>>>>>>> * CreationalContext<T> ctx = >>>>>> beanManager.createCreationalContext(bean);* >>>>>>>> * T o = (T) beanManager.getReference(bean, objectType, ctx); * >>>>>>>> * log.info("Found and returning: "+objectType.getCanonicalName());* >>>>>>>> * return o; * >>>>>>>> * }* >>>>>>>> * }* >>>>>>>> * return null;* >>>>>>>> * } * >>>>>>>> * protected <T> boolean hasValidScope(Bean<T> bean) {* >>>>>>>> * return bean!=null && allowedScopes.contains(bean.getScope());* >>>>>>>> * }* >>>>>>>> *}* >>>>>>>> >>>>>>>> I've limited the scope to singleton/applicationscoped. Perhaps also >>>>>>> Default >>>>>>>> could be accepted though. >>>>>>>> Until now I've only tested this with pojo's and not ejb's - but for >>>>>> that >>>>>>>> it's working as expected. >>>>>>>> I can inject CDI beans into pages and components using* >>>>>>>> org.apache.tapestry5.ioc.annotations.Inject* >>>>>>>> >>>>>>>> I'm no expert to tapestry internals - so there could be >>>>>>>> other considerations that needs to be addressed. >>>>>>>> In fact in seemed just a little to easy to implement - so I must have >>>>>>>> missed >>>>>>>> something. - Or perhaps it's just that easy to do in Tapestry :) >>>>>>>> >>>>>>>> Thoughts, comments? >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Best regards, >>>>>>> >>>>>>> Igor Drobiazko >>>>>>> http://tapestry5.de >>>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>> For additional commands, e-mail: users-h...@tapestry.apache.org >>> >>> > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org