> I thought of just instantiating Weld, getting all the declared beans and add
> them to a Tapestry registry. You can take a look at tapestry-string to draw
> some inspiration.

Ok.. I played around with this some more. First of all its interesting
that CDI does not need
to be instantiated. Only thing neccessary is an empty beans.xml in
META-INF/ and a JSR-299 aware
container... this may also be our sweet jetty + 3 jars.

For CDI, everything is a potential bean. Any interface with available
implementation may become a managed bean and its dependencies
are resolved. This has some implications:

    * If @javax.inject.Inject is found on any class (including
tapestry managed), CDI tries to do its work. It may be successfull,
but because of tapestry's instance pooling and re-use this is not very
useful. Or do I miss something?

    * implementing JSR-330 alone could be dangerous, because in this
case two IoC containers will try to handle the same annotation as soon
as the beans.xml file is present.

Of course, if you split out the CDI beans into their own jar,
everything is fine (just provide the beans.xml file there and not in
the webapp).

In my understanding we need to go over the tapestry
MasterObjectProvider to be able to inject the beans then. Where I am
now is that I contribute an ObjectProvider which queries CDI for the
objectType and returns it if successfull. This seems to work.

Problem is that this code throws a ClassCastException:
public <T> T provide(Class<T> objectType, AnnotationProvider
annotationProvider, ObjectLocator locator) {
// ... CDI code ...
           return objectType.cast(bean);

(Debug code:
INFO: Object Type: interface sessionbeans.TestBean
INFO: Bean: 
org.jboss.weld.bean-/home/ps/projects/sandbox/tapestry-yaml/target/tapestry-yaml/-ManagedBean-class
sessionbeans.TestBeanImpl
INFO: [ERROR] ioc.Registry java.lang.ClassCastException
)

but this code does not throw the exception:
          return (T) bean;


With the second version, I am getting another error (see below). Any hints?

                  Piero



INFO: [ERROR] TapestryModule.RequestExceptionHandler Processing of
request failed with uncaught exception:
java.lang.IllegalArgumentException: argument type mismatch
org.apache.tapestry5.internal.services.TransformationException:
java.lang.IllegalArgumentException: argument type mismatch
        at 
org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.createInstantiator(ComponentClassTransformerImpl.java:198)
        at 
$ComponentClassTransformer_125adae3027.createInstantiator($ComponentClassTransformer_125adae3027.java)
        at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.getInstantiator(ComponentInstantiatorSourceImpl.java:284)
        at 
$ComponentInstantiatorSource_125adae3025.getInstantiator($ComponentInstantiatorSource_125adae3025.java)
        at 
org.apache.tapestry5.internal.pageload.PageLoaderImpl.createAssembler(PageLoaderImpl.java:193)
        at 
org.apache.tapestry5.internal.pageload.PageLoaderImpl.getAssembler(PageLoaderImpl.java:183)
        at 
org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:157)
        at $PageLoader_125adae305a.loadPage($PageLoader_125adae305a.java)
        at 
org.apache.tapestry5.internal.services.PagePoolCache.checkout(PagePoolCache.java:210)
        at 
org.apache.tapestry5.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:99)
        at $PagePool_125adae3059.checkout($PagePool_125adae3059.java)
        at 
org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:51)
        at $RequestPageCache_125adae3058.get($RequestPageCache_125adae3058.java)
        at $RequestPageCache_125adae3051.get($RequestPageCache_125adae3051.java)
        at 
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:52)
        at 
org.apache.tapestry5.services.TapestryModule$34.handle(TapestryModule.java:2268)
        at 
$PageRenderRequestHandler_125adae3054.handle($PageRenderRequestHandler_125adae3054.java)
        at 
$PageRenderRequestHandler_125adae303c.handle($PageRenderRequestHandler_125adae303c.java)
        at 
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
        at 
$ComponentRequestHandler_125adae3041.handlePageRender($ComponentRequestHandler_125adae3041.java)
        at 
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
        at $Dispatcher_125adae3043.dispatch($Dispatcher_125adae3043.java)
        at $Dispatcher_125adae3039.dispatch($Dispatcher_125adae3039.java)
        at 
org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:255)
        at 
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
        at $RequestHandler_125adae303a.service($RequestHandler_125adae303a.java)
        at 
org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:937)
        at $RequestHandler_125adae303a.service($RequestHandler_125adae303a.java)
        at 
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:926)
        at $RequestHandler_125adae303a.service($RequestHandler_125adae303a.java)
        at 
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
        at $RequestHandler_125adae303a.service($RequestHandler_125adae303a.java)
        at 
de.sartini.tapestry.yaml.services.AppModule$1.service(AppModule.java:90)
        at $RequestFilter_125adae3035.service($RequestFilter_125adae3035.java)
        at $RequestHandler_125adae303a.service($RequestHandler_125adae303a.java)
        at 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
        at 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81)
        at 
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
        at 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
        at $RequestHandler_125adae303a.service($RequestHandler_125adae303a.java)
        at $RequestHandler_125adae302f.service($RequestHandler_125adae302f.java)
        at 
org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:206)
        at 
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
        at 
$HttpServletRequestHandler_125adae3031.service($HttpServletRequestHandler_125adae3031.java)
        at 
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
        at 
$HttpServletRequestFilter_125adae302e.service($HttpServletRequestFilter_125adae302e.java)
        at 
$HttpServletRequestHandler_125adae3031.service($HttpServletRequestHandler_125adae3031.java)
        at 
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:876)
        at 
$HttpServletRequestHandler_125adae3031.service($HttpServletRequestHandler_125adae3031.java)
        at 
$HttpServletRequestHandler_125adae302c.service($HttpServletRequestHandler_125adae302c.java)
        at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at 
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at 
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
        at 
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at 
com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at 
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at 
com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at 
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at 
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at 
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at 
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at 
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at 
com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at 
com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.RuntimeException:
java.lang.IllegalArgumentException: argument type mismatch
        at 
org.apache.tapestry5.internal.services.InternalClassTransformationImpl.createInstantiator(InternalClassTransformationImpl.java:1525)
        at 
org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.createInstantiator(ComponentClassTransformerImpl.java:194)
        ... 75 more
Caused by: java.lang.IllegalArgumentException: argument type mismatch
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at 
org.apache.tapestry5.internal.services.InternalClassTransformationImpl.createInstantiator(InternalClassTransformationImpl.java:1519)
        ... 76 more

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to