[
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]