My last note: my application is passing an asset to my Border, which invokes
my CustomShell
<component id="myAssets" type="MyAssets"/>
<component id="border" type="_comps:Border">
        <binding name="externalScripts" value="ognl:
components.myAssets.assets.javascriptFilename"/>
</component>

In the Border.jwc
<parameter name="externalScripts" required="no"/>
<component id="shell" type="CustomShell">
   <binding name="javascript" value="ognl:externalScripts"/>
</component>

On 1/13/06, Jason Suplizio <[EMAIL PROTECTED]> wrote:
>
> Here's the stack:
> Using: org.jfree.chart.encoders.SunPNGEncoderAdapter
> org.apache.tapestry.BindingException: Error converting value for parameter
> javascript: No type converter for type org.apache.tapestry.IAsset is
> available. [context:/WEB-INF/tapcomps/Border.jwc, line 29, column 55]
>     at org.apache.tapestry.binding.AbstractBinding.getObject(
> AbstractBinding.java:97)
>     at $CustomShell_80.getJavascript($CustomShell_80.java)
>     at com.expd.lib.tapestry_v40.components.CustomShell.renderComponent (
> CustomShell.java:111)
>     at $CustomShell_80.renderComponent($CustomShell_80.java)
>     at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java
> :617)
>     at org.apache.tapestry.BaseComponent.renderComponent (
> BaseComponent.java:92)
>     at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java
> :617)
>     at org.apache.tapestry.BaseComponent.renderComponent(
> BaseComponent.java:92)
>     at org.apache.tapestry.AbstractComponent.render (
> AbstractComponent.java:617)
>     at org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:275)
>     at org.apache.tapestry.engine.RequestCycle.renderPage(
> RequestCycle.java:366)
>     at
> org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse (
> ResponseRendererImpl.java:71)
>     at
> $ResponseRenderer_108c54f6985.renderResponse($ResponseRenderer_108c54f6985.java)
>     at org.apache.tapestry.engine.PageService.service(PageService.java:68)
>     at
> $IEngineService_108c54f69f8.service($IEngineService_108c54f69f8.java)
>     at org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(
> EngineServiceOuterProxy.java:66)
>     at org.apache.tapestry.engine.AbstractEngine.service(
> AbstractEngine.java:248)
>     at org.apache.tapestry.services.impl.InvokeEngineTerminator.service (
> InvokeEngineTerminator.java:60)
>     at
> $WebRequestServicer_108c54f69cf.service($WebRequestServicer_108c54f69cf.java)
>     at org.apache.tapestry.services.impl.DisableCachingFilter.service(
> DisableCachingFilter.java:48)
>     at
> $WebRequestServicerFilter_108c54f69d1.service($WebRequestServicerFilter_108c54f69d1.java)
>     at
> $WebRequestServicer_108c54f69d3.service($WebRequestServicer_108c54f69d3.java)
>     at
> $WebRequestServicer_108c54f69cb.service($WebRequestServicer_108c54f69cb.java)
>
>     at
> org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service
> (WebRequestServicerPipelineBridge.java:56)
>     at
> $ServletRequestServicer_108c54f69af.service($ServletRequestServicer_108c54f69af.java)
>
>     at org.apache.tapestry.request.DecodedRequestInjector.service(
> DecodedRequestInjector.java:55)
>     at
> $ServletRequestServicerFilter_108c54f69ab.service($ServletRequestServicerFilter_108c54f69ab.java)
>     at
> $ServletRequestServicer_108c54f69b1.service($ServletRequestServicer_108c54f69b1.java)
>
>     at org.apache.tapestry.multipart.MultipartDecoderFilter.service(
> MultipartDecoderFilter.java:52)
>     at
> $ServletRequestServicerFilter_108c54f69a9.service($ServletRequestServicerFilter_108c54f69a9.java)
>     at
> $ServletRequestServicer_108c54f69b1.service($ServletRequestServicer_108c54f69b1.java)
>
>     at org.apache.tapestry.services.impl.SetupRequestEncoding.service(
> SetupRequestEncoding.java:53)
>     at
> $ServletRequestServicerFilter_108c54f69ad.service($ServletRequestServicerFilter_108c54f69ad.java)
>     at
> $ServletRequestServicer_108c54f69b1.service($ServletRequestServicer_108c54f69b1.java)
>
>     at
> $ServletRequestServicer_108c54f69a3.service($ServletRequestServicer_108c54f69a3.java)
>     at org.apache.tapestry.ApplicationServlet.doService(
> ApplicationServlet.java:123)
>     at com.expd.app.expo2.webaccess.ExpoTapestryServlet.doService (
> ExpoTapestryServlet.java:52)
>     at org.apache.tapestry.ApplicationServlet.doGet(
> ApplicationServlet.java:79)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>     at javax.servlet.http.HttpServlet.service (HttpServlet.java:853)
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:247)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java :193)
>     at org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:256)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
> (StandardPipeline.java:643)
>     at org.apache.catalina.core.StandardPipeline.invoke(
> StandardPipeline.java:480)
>     at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java
> :995)
>     at org.apache.catalina.core.StandardContextValve.invoke (
> StandardContextValve.java:191)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
> (StandardPipeline.java:643)
>     at org.apache.catalina.core.StandardPipeline.invoke(
> StandardPipeline.java :480)
>     at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java
> :995)
>     at org.apache.catalina.core.StandardContext.invoke(
> StandardContext.java:2422)
>     at org.apache.catalina.core.StandardHostValve.invoke (
> StandardHostValve.java:180)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
> (StandardPipeline.java:643)
>     at org.apache.catalina.valves.ErrorDispatcherValve.invoke(
> ErrorDispatcherValve.java :171)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
> (StandardPipeline.java:641)
>     at org.apache.catalina.valves.ErrorReportValve.invoke(
> ErrorReportValve.java:163)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
> (StandardPipeline.java:641)
>     at org.apache.catalina.core.StandardPipeline.invoke(
> StandardPipeline.java:480)
>     at org.apache.catalina.core.ContainerBase.invoke (ContainerBase.java
> :995)
>     at org.apache.catalina.core.StandardEngineValve.invoke(
> StandardEngineValve.java:174)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
> (StandardPipeline.java :643)
>     at org.apache.catalina.core.StandardPipeline.invoke(
> StandardPipeline.java:480)
>     at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java
> :995)
>     at org.apache.coyote.tomcat4.CoyoteAdapter.service (CoyoteAdapter.java
> :199)
>     at org.apache.coyote.http11.Http11Processor.process(
> Http11Processor.java:828)
>     at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
> (Http11Protocol.java :700)
>     at org.apache.tomcat.util.net.TcpWorkerThread.runIt(
> PoolTcpEndpoint.java:584)
>     at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.java:683)
>     at java.lang.Thread.run(Unknown Source)
> Caused by: org.apache.hivemind.ApplicationRuntimeException: No type
> converter for type org.apache.tapestry.IAsset is available.
>     at org.apache.tapestry.coerce.ValueConverterImpl.coerceValue(
> ValueConverterImpl.java :105)
>     at
> $ValueConverter_108c54f6957.coerceValue($ValueConverter_108c54f6957.java)
>     at org.apache.tapestry.binding.AbstractBinding.getObject(
> AbstractBinding.java:91)
>     ... 68 more
>
> On 1/13/06, Jason Suplizio <[EMAIL PROTECTED]> wrote:
> >
> > Hi!
> > I've created a customized version of the Shell component...essentially I
> > want to to extend the handling of stylesheet assets to javascripts (write
> > <script> tags embedded in the <head > element).
> > CustomShell.java adds to the original:
> >
> >     public abstract IAsset getJavascript();
> >     public abstract Object getJavascripts();
> >
> > public void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
> > /** added the following **/
> >  IAsset javascript = getJavascript();
> >
> >             if (javascript != null)
> >                 writeJavascriptScript(writer, cycle, javascript);
> >
> >             Iterator scripts = (Iterator)
> > getValueConverter().coerceValue(
> >                     getJavascripts(),
> >                     Iterator.class);
> >
> >             while (scripts.hasNext())
> >             {
> >                 javascript = (IAsset) i.next();
> >
> >                 writeJavascriptScript(writer, cycle, javascript);
> >             }
> > }
> >    private void writeJavascriptScript(IMarkupWriter writer,
> > IRequestCycle cycle, IAsset javascript)
> >     {
> >         writer.beginEmpty("script");
> >         writer.attribute("type", "text/javascript");
> >         writer.attribute("src", javascript.buildURL());
> >         writer.closeTag();
> >         writer.println();
> >     }
> >
> > CustomShell.jwc adds these to the original:
> >   <parameter name="javascript">
> >     <description>
> >     If specified, provides an external javascript for the page.
> >     </description>
> >   </parameter>
> >
> >   <parameter name="javascripts">
> >       <description>
> >       Array or collection of stylesheet assets.
> >       </description>
> >   </parameter>
> >
> >
> > However, this isn't working as I'm running into a ValueConverter issue:
> >
> > Exception: "org.apache.hivemind.ApplicationRuntimeException: No type
> > converter for type org.apache.tapestry.IAsset is available.
> >
> > Borrowing from the Shell.jwc file, I notice that the following service
> > is injected - which apparently implements
> > org.apache.tapestry.coerce.ValueConverterImpl
> >
> >   <inject property="valueConverter" object="service:
> > tapestry.coerce.ValueConverter"/>
> >
> > What do I need to do to get my custom shell comp to render the script
> > assets? Thanks in advance!
> > Jason
> >
> >
>

Reply via email to