History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: OGNL-28
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Jesse Kuhnert
Reporter: Renat Zubairov
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
OGNL

CLONE -OR expression compile error

Created: 26/Mar/07 05:54 PM   Updated: 31/Mar/07 02:22 PM
Component/s: ExpressionCompiler
Affects Version/s: 2.7
Fix Version/s: 2.7

Environment: tapestry


 Description  « Hide
Sorry for the wording,

Under artificial property I ment a property that is not appearing in
the component/page class as normal or abstract getter/setter.
Artificial property - property declared in the .jwc or .page files.
For example you might have a component called Basket
You will have a Basket.java -

public abstract class BasketComponent extends BaseComponent {

 public abstract boolean isProperty();

}

Then you will have a component descriptor

Basket.jwc

<component .... ... ... class="... ... BasketComponent">

<property name="property"/>

<property name="artificialProperty" initial-value="false"/>

</component>

As you can see component has two properties "property" and
"artificial". One of them appears in the java class as abstract
getter, another one do not appear anywhere except component
specification, however component specification may contain a OGNL
expression with all it's properties:
In this case "property || artificialProperty" which brings the error.

Links to the source code:

Java class: http://bookie.googlecode.com/svn/trunk/bookie-web/src/main/java/org/bookie/web/components/TabPanel.java
JWC descriptor:
http://bookie.googlecode.com/svn/trunk/bookie-web/src/main/webapp/WEB-INF/TabPanel.jwc

Error appearing in:

 <component id="link" type="DirectLink">
   <binding name="listener" value="listener:doClick"/>
   <binding name="parameters" value="blockId"/>
   <binding name="disabled" value="ognl: tabSelected || readonly"/>
   <binding name="async" value="ognl: !(tabSelected || readonly)"/>
 </component>

When evaluating

"ognl: tabSelected || readonly"

 All   Comments   Change History      Sort Order:
Renat Zubairov - [26/Mar/07 05:55 PM ]
I not even going to explain, but it is not fixed :(

An exception has occurred.

You may continue by restarting the session.
[ +/- ] Exception: Unable to parse OGNL expression 'container.messages.getMessage(blockId)': Error compiling expression on object $TabPanel_13@6c67381[Home/betSlip.tabs] with expression node container.messages.getMessage(blockId) getter body: { return ((org.apache.hivemind.impl.AbstractMessages)(($TabPanel_13)$2).getContainer()).getMessages()).getMessage(((org.apache.tapestry.AbstractComponent)(($TabPanel_13)$2).getBlockId());} setter body: null
org.apache.tapestry.BindingException
Unable to parse OGNL expression 'container.messages.getMessage(blockId)': Error compiling expression on object $TabPanel_13@6c67381[Home/betSlip.tabs] with expression node container.messages.getMessage(blockId) getter body: { return ((org.apache.hivemind.impl.AbstractMessages)(($TabPanel_13)$2).getContainer()).getMessages()).getMessage(((org.apache.tapestry.AbstractComponent)(($TabPanel_13)$2).getBlockId());} setter body: null
binding: ExpressionBinding[Home/betSlip.tabs container.messages.getMessage(blockId)]
location: context:/WEB-INF/TabPanel.html, line 6
1 <div jwcid="@Any" id="ognl:id">
2 <div class="dynamic-tab-pane-control tab-pane">
3 <div class="tab-row">
4 <span jwcid="loop">
5 <span jwcid="activeTab">
6 <h2 class="tab selected" id="selectedTabHeader"><a jwcid="link"><span jwcid="@Insert" value="ognl:container.messages.getMessage(blockId)">Active</span></a></h2>
7 </span>
8 <span jwcid="passiveTab">
9 <h2 class="tab hover"><a jwcid="link2"><span jwcid="@Insert" value="ognl:container.messages.getMessage(blockId)">Passive</span></a></h2>
10 </span>
11 </span>
 
[ +/- ] Exception: Unable to parse OGNL expression 'container.messages.getMessage(blockId)': Error compiling expression on object $TabPanel_13@6c67381[Home/betSlip.tabs] with expression node container.messages.getMessage(blockId) getter body: { return ((org.apache.hivemind.impl.AbstractMessages)(($TabPanel_13)$2).getContainer()).getMessages()).getMessage(((org.apache.tapestry.AbstractComponent)(($TabPanel_13)$2).getBlockId());} setter body: null
org.apache.hivemind.ApplicationRuntimeException
Unable to parse OGNL expression 'container.messages.getMessage(blockId)': Error compiling expression on object $TabPanel_13@6c67381[Home/betSlip.tabs] with expression node container.messages.getMessage(blockId) getter body: { return ((org.apache.hivemind.impl.AbstractMessages)(($TabPanel_13)$2).getContainer()).getMessages()).getMessage(((org.apache.tapestry.AbstractComponent)(($TabPanel_13)$2).getBlockId());} setter body: null
 
[ +/- ] Exception: Error compiling expression on object $TabPanel_13@6c67381[Home/betSlip.tabs] with expression node container.messages.getMessage(blockId) getter body: { return ((org.apache.hivemind.impl.AbstractMessages)(($TabPanel_13)$2).getContainer()).getMessages()).getMessage(((org.apache.tapestry.AbstractComponent)(($TabPanel_13)$2).getBlockId());} setter body: null
org.apache.hivemind.ApplicationRuntimeException
Error compiling expression on object $TabPanel_13@6c67381[Home/betSlip.tabs] with expression node container.messages.getMessage(blockId) getter body: { return ((org.apache.hivemind.impl.AbstractMessages)(($TabPanel_13)$2).getContainer()).getMessages()).getMessage(((org.apache.tapestry.AbstractComponent)(($TabPanel_13)$2).getBlockId());} setter body: null
 
[ +/- ] Exception: Unable to add method java.lang.Object get(ognl.OgnlContext, java.lang.Object) to class ognl.ASTChain30213361Accessor: [source error] ; is missing
org.apache.hivemind.ApplicationRuntimeException
Unable to add method java.lang.Object get(ognl.OgnlContext, java.lang.Object) to class ognl.ASTChain30213361Accessor: [source error] ; is missing
 
[ +/- ] Exception: [source error] ; is missing
javassist.CannotCompileException
[source error] ; is missing
 
[ +/- ] Exception: ; is missing
javassist.compiler.CompileError
; is missing
lex: javassist.compiler.Lex@373a9c
Stack Trace:

    * javassist.compiler.Parser.parseReturn(Parser.java:509)
    * javassist.compiler.Parser.parseStatement(Parser.java:268)
    * javassist.compiler.Parser.parseBlock(Parser.java:288)
    * javassist.compiler.Parser.parseStatement(Parser.java:242)
    * javassist.compiler.Javac.compileBody(Javac.java:203)
    * javassist.CtBehavior.setBody(CtBehavior.java:341)
    * javassist.CtBehavior.setBody(CtBehavior.java:316)
    * org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:272)
    * org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:221)
    * ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:388)
    * ognl.Ognl.compileExpression(Ognl.java:123)
    * org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:129)
    * org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:91)
    * $ExpressionCache_111907373cc.getCompiledExpression($ExpressionCache_111907373cc.java)
    * org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:120)
    * org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:111)
    * org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
    * $Insert_5.getValue($Insert_5.java)
    * org.apache.tapestry.components.Insert.renderComponent(Insert.java:48)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:525)
    * org.apache.tapestry.link.DefaultLinkRenderer.renderLink(DefaultLinkRenderer.java:97)
    * org.apache.tapestry.link.AbstractLinkComponent.renderComponent(AbstractLinkComponent.java:94)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:525)
    * org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:96)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:525)
    * org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:181)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:525)
    * org.apache.tapestry.components.Any.renderComponent(Any.java:53)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:92)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:92)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:525)
    * org.apache.tapestry.components.Block.renderForComponent(Block.java:65)
    * org.apache.tapestry.components.RenderBlock.renderComponent(RenderBlock.java:65)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:525)
    * org.apache.tapestry.html.Body.renderComponent(Body.java:38)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:525)
    * org.apache.tapestry.html.Shell.renderComponent(Shell.java:64)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:92)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
    * org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:92)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:712)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:182)
    * org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:237)
    * org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:397)
    * org.apache.tapestry.services.impl.DefaultResponseBuilder.renderResponse(DefaultResponseBuilder.java:158)
    * org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse(ResponseRendererImpl.java:33)
    * $ResponseRenderer_11190737293.renderResponse($ResponseRenderer_11190737293.java)
    * $ResponseRenderer_11190737292.renderResponse($ResponseRenderer_11190737292.java)
    * org.apache.tapestry.engine.HomeService.service(HomeService.java:68)
    * $IEngineService_11190737310.service($IEngineService_11190737310.java)
    * org.apache.tapestry.services.impl.EngineServiceInnerProxy.service(EngineServiceInnerProxy.java:77)
    * org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:72)
    * org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:246)
    * org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54)
    * $WebRequestServicer_111907372e8.service($WebRequestServicer_111907372e8.java)
    * org.apache.tapestry.services.impl.DisableCachingFilter.service(DisableCachingFilter.java:54)
    * $WebRequestServicerFilter_111907372ea.service($WebRequestServicerFilter_111907372ea.java)
    * $WebRequestServicer_111907372ec.service($WebRequestServicer_111907372ec.java)
    * $WebRequestServicer_111907372e4.service($WebRequestServicer_111907372e4.java)
    * org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61)
    * $ServletRequestServicer_111907372ca.service($ServletRequestServicer_111907372ca.java)
    * org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
    * $ServletRequestServicerFilter_111907372c6.service($ServletRequestServicerFilter_111907372c6.java)
    * $ServletRequestServicer_111907372cc.service($ServletRequestServicer_111907372cc.java)
    * org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
    * $ServletRequestServicerFilter_111907372c4.service($ServletRequestServicerFilter_111907372c4.java)
    * $ServletRequestServicer_111907372cc.service($ServletRequestServicer_111907372cc.java)
    * org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
    * $ServletRequestServicerFilter_111907372c8.service($ServletRequestServicerFilter_111907372c8.java)
    * $ServletRequestServicer_111907372cc.service($ServletRequestServicer_111907372cc.java)
    * $ServletRequestServicer_111907372be.service($ServletRequestServicer_111907372be.java)
    * org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123)
    * org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:104)
    * javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    * javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    * org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:459)
    * org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    * org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:231)
    * org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:629)
    * org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:453)
    * org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
    * org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
    * org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
    * org.mortbay.jetty.Server.handle(Server.java:303)
    * org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:452)
    * org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:721)
    * org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:509)
    * org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
    * org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:349)
    * org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:320)
    * org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)