You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <de...@tapestry.apache.org> on 2008/03/02 20:10:50 UTC

[jira] Closed: (TAPESTRY-1225) Conflict between implicit component type and type of field

     [ https://issues.apache.org/jira/browse/TAPESTRY-1225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship closed TAPESTRY-1225.
------------------------------------------

    Resolution: Invalid

The correct solution is to set the component type in the template and use the (recently added) @InjectComponent annotation to gain a reference.  That way, the type is only defined in one place, but you can reference the  component according to an implement interface or base class, as suits your code.

> Conflict between implicit component type and type of field
> ----------------------------------------------------------
>
>                 Key: TAPESTRY-1225
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1225
>             Project: Tapestry
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.0
>            Reporter: Howard M. Lewis Ship
>            Assignee: Howard M. Lewis Ship
>
> If you declare an injected component field with an interface type, as in:
> @Component
> private Field _password;
> This overrides the t:type in the template, but then causes an error:
>  Class org.apache.tapestry.Field was not transformed for use as a component; either it does not have the @ComponentClass annotation, or was not in a package subject to component transformation.
> Stack trace
>         * org.apache.tapestry.internal.services.ComponentClassTransformerImpl.createInstantiator(ComponentClassTransformerImpl.java:135)
>         * $ComponentClassTransformer_1100906f653.createInstantiator($ComponentClassTransformer_1100906f653.java)
>         * $ComponentClassTransformer_1100906f624.createInstantiator($ComponentClassTransformer_1100906f624.java)
>         * org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.findInstantiator(ComponentInstantiatorSourceImpl.java:215)
>         * $ComponentInstantiatorSource_1100906f626.findInstantiator($ComponentInstantiatorSource_1100906f626.java)
>         * $ComponentInstantiatorSource_1100906f620.findInstantiator($ComponentInstantiatorSource_1100906f620.java)
>         * org.apache.tapestry.internal.services.PageElementFactoryImpl.newComponentElement(PageElementFactoryImpl.java:146)
>         * $PageElementFactory_1100906f651.newComponentElement($PageElementFactory_1100906f651.java)
>         * $PageElementFactory_1100906f649.newComponentElement($PageElementFactory_1100906f649.java)
>         * org.apache.tapestry.internal.services.PageLoaderImpl.loadTemplateForComponent(PageLoaderImpl.java:313)
>         * org.apache.tapestry.internal.services.PageLoaderImpl.workComponentQueue(PageLoaderImpl.java:139)
>         * org.apache.tapestry.internal.services.PageLoaderImpl.loadPage(PageLoaderImpl.java:102)
>         * $PageLoader_1100906f64b.loadPage($PageLoader_1100906f64b.java)
>         * $PageLoader_1100906f648.loadPage($PageLoader_1100906f648.java)
>         * org.apache.tapestry.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:63)
>         * $PagePool_1100906f650.checkout($PagePool_1100906f650.java)
>         * $PagePool_1100906f647.checkout($PagePool_1100906f647.java)
>         * org.apache.tapestry.internal.services.RequestPageCacheImpl.getByClassName(RequestPageCacheImpl.java:60)
>         * org.apache.tapestry.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:51)
>         * $RequestPageCache_1100906f645.get($RequestPageCache_1100906f645.java)
>         * $RequestPageCache_1100906f646.get($RequestPageCache_1100906f646.java)
>         * $RequestPageCache_1100906f61d.get($RequestPageCache_1100906f61d.java)
>         * org.apache.tapestry.internal.services.PageLinkHandlerImpl.handle(PageLinkHandlerImpl.java:38)
>         * $PageLinkHandler_1100906f644.handle($PageLinkHandler_1100906f644.java)
>         * $PageLinkHandler_1100906f640.handle($PageLinkHandler_1100906f640.java)
>         * org.apache.tapestry.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:87)
>         * $Dispatcher_1100906f642.dispatch($Dispatcher_1100906f642.java)
>         * $Dispatcher_1100906f643.dispatch($Dispatcher_1100906f643.java)
>         * $Dispatcher_1100906f637.dispatch($Dispatcher_1100906f637.java)
>         * org.apache.tapestry.services.TapestryModule$5.service(TapestryModule.java:385)
>         * org.apache.tapestry.services.TapestryModule$6.service(TapestryModule.java:418)
>         * $RequestHandler_1100906f638.service($RequestHandler_1100906f638.java)
>         * org.apache.tapestry.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:49)
>         * $RequestHandler_1100906f638.service($RequestHandler_1100906f638.java)
>         * org.apache.tapestry.internal.services.LocalizationFilter.service(LocalizationFilter.java:43)
>         * $RequestHandler_1100906f638.service($RequestHandler_1100906f638.java)
>         * org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:91)
>         * org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:1)
>         * org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
>         * org.apache.tapestry.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:104)
>         * $RequestHandler_1100906f638.service($RequestHandler_1100906f638.java)
>         * $RequestHandler_1100906f639.service($RequestHandler_1100906f639.java)
>         * $RequestHandler_1100906f630.service($RequestHandler_1100906f630.java)
>         * org.apache.tapestry.services.TapestryModule$3.service(TapestryModule.java:308)
>         * $HttpServletRequestHandler_1100906f631.service($HttpServletRequestHandler_1100906f631.java)
>         * $HttpServletRequestHandler_1100906f62f.service($HttpServletRequestHandler_1100906f62f.java)
>         * org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:114)
> The solution is to explicitly provide the component type on the field, but it would be nice if Tapestry could recognize that the type from the template is assignable to the type from the field, and use the template type in this circumstance.
>        

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org