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

Key: OGNL-97
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Jesse Kuhnert
Reporter: Kalle Korhonen
Votes: 0
Watchers: 3
Operations

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

Compile OGNL expressions often require #this

Created: 27/Jun/07 01:50 AM   Updated: 24/Jul/07 08:51 AM
Component/s: ExpressionCompiler
Affects Version/s: 2.7
Fix Version/s: 2.7.1

Environment: Any - but noticed in a Tapestry application (trailsframework.org) with all OGNL expressions working on pre-2.7 OGNL version.


 Description  « Hide
After upgrading to 2.7, using compiled expressions, noticed frequent OgnlExceptions with message "source is null" from OgnlRuntime.getProperty. The workaround was to add #this to a lot of places where we used more complex OGNL expressions. An example of failing expression is:
ognl:object[linkProperty]

that now only works with:
ognl:object[#this.linkProperty]

Below a simple Junit test case that according to my understanding should succeed.

public class OgnlTest extends TestCase {
    private Map map;
    public String getKey() {
        return "key";
    }
   
    public void testEnhancedOgnl() throws Exception {
        map = new HashMap();
        map.put("key", "value");
        ClassResolver ognlResolver = new OgnlClassResolver();
        OgnlContext context = (OgnlContext)Ognl.createDefaultContext(this, ognlResolver);
        Node expression = Ognl.compileExpression(context, map, "key");
        assertEquals(map.get("key"), Ognl.getValue(expression.getAccessor(), context, map)) ;
       
        context = (OgnlContext)Ognl.createDefaultContext(this, ognlResolver);
        expression = Ognl.compileExpression(context, this, "#this[key]");
        assertEquals("key", Ognl.getValue(expression.getAccessor(), context, this)) ;
       
        context = (OgnlContext)Ognl.createDefaultContext(this, ognlResolver);
        expression = Ognl.compileExpression(context, this, "#this.key");
        assertEquals("key", Ognl.getValue(expression.getAccessor(), context, this)) ;

        // Fails
        context = (OgnlContext)Ognl.createDefaultContext(this, ognlResolver);
        expression = Ognl.compileExpression(context, this, "key");
        assertEquals("key", Ognl.getValue(expression.getAccessor(), context, this)) ;
    }
}

I might be way off here (don't know much about compiled OGNL), but the last assert fails (on CannotCompileException) even though to me the expression is equal to the two above it (the first one's just me figuring out how it works).


 All   Comments   Change History      Sort Order:
Kalle Korhonen - [01/Jul/07 05:54 PM ]
Tested this on ognl-2.7.1-20070630.205921-4, but neither the sample expression ognl:object[linkProperty] nor the unit test worked any better. Maybe the fix for this one didn't quite make it to the specified snapshot?

Ken - [24/Jul/07 08:28 AM ]
Well I checked out ognl latest snapshot, and tapestry latest 4.1.2 snapshot, built and deployed everything. I confirmed the ognl-2.7.1-SNAPSHOT in the war module of my web app and that it is in my local repo... also before all of this I wiped out my local repo and repopulated it just to be sure on clean slate.

I cannot get ognl to work over these blocks either...

I did post a note to tapestry user group without any response as of yet.

Any assistance is appreciated and I will be ready to test any new patch.

============== cut here ==============
From: Ken nashua <nhhockeyplayer <at> hotmail.com>
Subject: 0gnl-2.7.1-SNAPSHOT bug... please help
Newsgroups: gmane.comp.java.tapestry.user
Date: 2007-07-23 22:38:12 GMT (14 hours and 40 minutes ago)

Folks,

My java code is fine... this template keeps failing. It seems OGNL cannot
negotiate/articulate propertyDescriptor for my contrib:table column.

<span jwcid="$content$">
<table jwcid="table">
<div jwcid="linkColumnValue <at> Block">
<a jwcid="editLink <at> EditLink" model="ognl:object" href="#">
<span jwcid="linkInsert <at> Insert"
value="ognl:object[#this.linkProperty]"/></a>
</div>

<div jwcid="blobColumnValue <at> Block">
<span jwcid=" <at> TrailsDownload"
propertyDescriptor="ognl:column.propertyDescriptor"
model="ognl:object"
bytes="ognl:object[#this.column.propertyDescriptor.name]"
/>
</div>
</table>
</span>

This is the problem component... blobColumnValue <at> Block
This is the problem line propertyDescriptor="ognl:column.propertyDescriptor"

Any attempts to reference PropertyDescriptor produce bindingexception.

Stack trace below...

Does anyone know of an OGNL workaround? OGNL seems to work ok if I omit the
second block. It does not seem to be able to operate across blocks.

Thanks for your attention. Just really stuck.

Best regards
Ken in nashua

An exception has occurred.
You may continue by restarting the session.

[ +/- ] Exception:
Unable to parse OGNL expression 'blobDescriptorExtension.renderType.image':
blobDescriptorExtension org.apache.tapestry.BindingException
Unable to parse OGNL expression 'blobDescriptorExtension.renderType.image':
blobDescriptorExtension
binding: ExpressionBinding[DefaultList/$ObjectTable.$TrailsDownload
blobDescriptorExtension.renderType.image] location:
classpath:/org/trails/component/blob/TrailsDownload.html, line 2
1 <span jwcid="$content$">
2 <span jwcid=" <at> If"
condition="ognl:blobDescriptorExtension.renderType.image">
3 <a jwcid=" <at> ServiceLink" service="BlobService"
parameters="ognl:byteArrayAsset">
4 <img jwcid=" <at> MimedImage"
5 propertyDescriptor="ognl:propertyDescriptor"
6 model="ognl:model"
7 image="ognl:byteArrayAsset"

[ +/- ] Exception:
Unable to parse OGNL expression 'blobDescriptorExtension.renderType.image':
blobDescriptorExtension org.apache.hivemind.ApplicationRuntimeException
Unable to parse OGNL expression 'blobDescriptorExtension.renderType.image':
blobDescriptorExtension

[ +/- ] Exception:
blobDescriptorExtension ognl.OgnlException
blobDescriptorExtension

[ +/- ] Exception:
Unable to parse OGNL expression
'object[#this.column.propertyDescriptor.name]': source is null for
getProperty(null, "propertyDescriptor") org.apache.tapestry.BindingException
Unable to parse OGNL expression
'object[#this.column.propertyDescriptor.name]': source is null for
getProperty(null, "propertyDescriptor")
binding: ExpressionBinding[DefaultList/$ObjectTable
object[#this.column.propertyDescriptor.name]] location:
classpath:/org/trails/component/ObjectTable.html, line 11
6 <span jwcid="linkInsert <at> Insert"
7 value="ognl:object[#this.linkProperty]"/></a>
8 </div>
9
10 <div jwcid="blobColumnValue <at> Block">
11 <span jwcid=" <at> TrailsDownload"
12 propertyDescriptor="ognl:object[#this.column.propertyDescriptor.name]"
13 model="ognl:object"
14 bytes="ognl:object[#this.column.propertyDescriptor.name]"
15 />
16 </div>

[ +/- ] Exception:
Unable to parse OGNL expression
'object[#this.column.propertyDescriptor.name]': source is null for
getProperty(null, "propertyDescriptor")
org.apache.hivemind.ApplicationRuntimeException
Unable to parse OGNL expression
'object[#this.column.propertyDescriptor.name]': source is null for
getProperty(null, "propertyDescriptor")

[ +/- ] Exception:
source is null for getProperty(null, "propertyDescriptor")
ognl.OgnlException
source is null for getProperty(null, "propertyDescriptor")
Stack Trace:
ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1908)
ognl.ASTProperty.getValueBody(ASTProperty.java:109)
ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:200)
ognl.SimpleNode.getValue(SimpleNode.java:244)
ognl.ASTChain.getValueBody(ASTChain.java:137)
ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:200)
ognl.SimpleNode.getValue(SimpleNode.java:244)
ognl.ASTProperty.getProperty(ASTProperty.java:99)
ognl.ASTProperty.getValueBody(ASTProperty.java:107)
ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:200)
ognl.SimpleNode.getValue(SimpleNode.java:244)
ognl.ASTChain.getValueBody(ASTChain.java:137)
ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:200)
ognl.SimpleNode.getValue(SimpleNode.java:244)
ognl.Ognl.getValue(Ognl.java:494) ognl.Ognl.getValue(Ognl.java:458)

org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:148)
ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:524)
ognl.Ognl.compileExpression(Ognl.java:141)
org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152)

org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115)
$ExpressionCache_113f530338c.getCompiledExpression($ExpressionCache_113f530338c.java)

org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)
org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
$TrailsDownload_34.getPropertyDescriptor($TrailsDownload_34.java)

org.trails.component.blob.TrailsDownload.getBlobDescriptorExtension(TrailsDownload.java:53)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:769)
ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:1193)
ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:60)
ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:142)
ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1914)
ognl.ASTProperty.getValueBody(ASTProperty.java:109)
ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:200)
ognl.SimpleNode.getValue(SimpleNode.java:244)
ognl.ASTChain.getValueBody(ASTChain.java:137)
ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:200)
ognl.SimpleNode.getValue(SimpleNode.java:244)
ognl.Ognl.getValue(Ognl.java:494) ognl.Ognl.getValue(Ognl.java:458)

org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:148)
ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:524)
ognl.Ognl.compileExpression(Ognl.java:141)
org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152)

org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115)
$ExpressionCache_113f530338c.getCompiledExpression($ExpressionCache_113f530338c.java)

org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)
org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
org.apache.tapestry.enhance.EnhanceUtils.toBoolean(EnhanceUtils.java:173)
$IfBean_7.getCondition($IfBean_7.java)
org.apache.tapestry.components.IfBean.evaluateCondition(IfBean.java:128)
org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:66)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.components.BlockRenderer.render(BlockRenderer.java:77)
org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:41)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.components.Any.renderComponent(Any.java:44)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:181)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.components.Any.renderComponent(Any.java:44)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:181)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
org.apache.tapestry.contrib.table.components.TableRows.renderComponent(TableRows.java:136)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.components.Any.renderComponent(Any.java:44)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.components.Any.renderComponent(Any.java:44)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
org.apache.tapestry.contrib.table.components.TableView.renderComponent(TableView.java:511)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.apache.tapestry.html.Body.renderComponent(Body.java:38)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
org.trails.demo.components.CustomHead.renderComponent(CustomHead.java:205)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:178)
org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:249)
org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:397)

org.apache.tapestry.services.impl.DefaultResponseBuilder.renderResponse(DefaultResponseBuilder.java:152)

org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse(ResponseRendererImpl.java:33)
$ResponseRenderer_113f530325e.renderResponse($ResponseRenderer_113f530325e.java)
org.apache.tapestry.engine.ExternalService.service(ExternalService.java:163)
$IEngineService_113f53032dd.service($IEngineService_113f53032dd.java)

org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:72)
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:237)

org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54)
$WebRequestServicer_113f53032aa.service($WebRequestServicer_113f53032aa.java)
org.trails.i18n.LocaleFilter.service(LocaleFilter.java:26)
$WebRequestServicerFilter_113f53032a8.service($WebRequestServicerFilter_113f53032a8.java)
$WebRequestServicer_113f53032ac.service($WebRequestServicer_113f53032ac.java)
$WebRequestServicer_113f53032a4.service($WebRequestServicer_113f53032a4.java)

org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61)
$ServletRequestServicer_113f530328a.service($ServletRequestServicer_113f530328a.java)
org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)

$ServletRequestServicerFilter_113f5303286.service($ServletRequestServicerFilter_113f5303286.java)
$ServletRequestServicer_113f530328c.service($ServletRequestServicer_113f530328c.java)

org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)

$ServletRequestServicerFilter_113f5303284.service($ServletRequestServicerFilter_113f5303284.java)
$ServletRequestServicer_113f530328c.service($ServletRequestServicer_113f530328c.java)

org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)

$ServletRequestServicerFilter_113f5303288.service($ServletRequestServicerFilter_113f5303288.java)
$ServletRequestServicer_113f530328c.service($ServletRequestServicer_113f530328c.java)
$ServletRequestServicer_113f530327e.service($ServletRequestServicer_113f530327e.java)
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:126)
org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:103)
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1074)

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)

org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)

org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:229)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:286)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)

org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146)
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
org.mortbay.jetty.Server.handle(Server.java:285)
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:751)
org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:500)
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)



Ken - [24/Jul/07 08:42 AM ]
Ok, I just noticed a new rev... and relevent modules added/updated.

I will test this right now and provide feedback.

Ken - [24/Jul/07 08:51 AM ]
Sorry to report,

After rebuilding, deploying and testing I receive the same exception.

I am willing to try anything to operate this in workaround manner.

Please advise... nhhockeyplayer@hotmail.com

org.apache.tapestry.BindingException: Unable to parse OGNL expression 'column.propertyDescriptor': source is null for getProperty(null, "propertyDescriptor") [classpath:/org/trails/component/ObjectTable.html, line 11]
at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:145)
at org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)
at org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
at $TrailsDownload_34.getPropertyDescriptor($TrailsDownload_34.java)
at org.trails.component.blob.TrailsDownload.getBlobDescriptorExtension(TrailsDownload.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:769)
at ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:1214)
at ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:60)
at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:142)
at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1935)
at ognl.ASTProperty.getValueBody(ASTProperty.java:109)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:200)
at ognl.SimpleNode.getValue(SimpleNode.java:244)
at ognl.ASTChain.getValueBody(ASTChain.java:137)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:200)
at ognl.SimpleNode.getValue(SimpleNode.java:244)
at ognl.Ognl.getValue(Ognl.java:494)
at ognl.Ognl.getValue(Ognl.java:458)
at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:148)
at ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:524)
at ognl.Ognl.compileExpression(Ognl.java:141)
at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152)
at org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115)
at $ExpressionCache_113f87bf124.getCompiledExpression($ExpressionCache_113f87bf124.java)
at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
at org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)
at org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
at org.apache.tapestry.enhance.EnhanceUtils.toBoolean(EnhanceUtils.java:173)
at $IfBean_7.getCondition($IfBean_7.java)
at org.apache.tapestry.components.IfBean.evaluateCondition(IfBean.java:128)
at org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:66)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.components.BlockRenderer.render(BlockRenderer.java:77)
at org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:41)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.components.Any.renderComponent(Any.java:44)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:181)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.components.Any.renderComponent(Any.java:44)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:181)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
at org.apache.tapestry.contrib.table.components.TableRows.renderComponent(TableRows.java:136)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.components.Any.renderComponent(Any.java:44)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.components.Any.renderComponent(Any.java:44)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
at org.apache.tapestry.contrib.table.components.TableView.renderComponent(TableView.java:511)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.html.Body.renderComponent(Body.java:38)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.trails.demo.components.CustomHead.renderComponent(CustomHead.java:205)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:178)
at org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:249)
at org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:397)
at org.apache.tapestry.services.impl.DefaultResponseBuilder.renderResponse(DefaultResponseBuilder.java:152)
at org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse(ResponseRendererImpl.java:33)
at $ResponseRenderer_113f87beff6.renderResponse($ResponseRenderer_113f87beff6.java)
at org.apache.tapestry.engine.ExternalService.service(ExternalService.java:163)
at $IEngineService_113f87bf075.service($IEngineService_113f87bf075.java)
at org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:72)
at org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:237)
at org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54)
at $WebRequestServicer_113f87bf042.service($WebRequestServicer_113f87bf042.java)
at org.trails.i18n.LocaleFilter.service(LocaleFilter.java:26)
at $WebRequestServicerFilter_113f87bf040.service($WebRequestServicerFilter_113f87bf040.java)
at $WebRequestServicer_113f87bf044.service($WebRequestServicer_113f87bf044.java)
at $WebRequestServicer_113f87bf03c.service($WebRequestServicer_113f87bf03c.java)
at org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61)
at $ServletRequestServicer_113f87bf022.service($ServletRequestServicer_113f87bf022.java)
at org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
at $ServletRequestServicerFilter_113f87bf01e.service($ServletRequestServicerFilter_113f87bf01e.java)
at $ServletRequestServicer_113f87bf024.service($ServletRequestServicer_113f87bf024.java)
at org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
at $ServletRequestServicerFilter_113f87bf01c.service($ServletRequestServicerFilter_113f87bf01c.java)
at $ServletRequestServicer_113f87bf024.service($ServletRequestServicer_113f87bf024.java)
at org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
at $ServletRequestServicerFilter_113f87bf020.service($ServletRequestServicerFilter_113f87bf020.java)
at $ServletRequestServicer_113f87bf024.service($ServletRequestServicer_113f87bf024.java)
at $ServletRequestServicer_113f87bf016.service($ServletRequestServicer_113f87bf016.java)
at org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:126)
at org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1074)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:229)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:286)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:285)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:751)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:500)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Caused by: org.apache.hivemind.ApplicationRuntimeException: Unable to parse OGNL expression 'column.propertyDescriptor': source is null for getProperty(null, "propertyDescriptor")
at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:156)
at org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115)
at $ExpressionCache_113f87bf124.getCompiledExpression($ExpressionCache_113f87bf124.java)
at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
... 180 more
Caused by: ognl.OgnlException: source is null for getProperty(null, "propertyDescriptor")
at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1929)
at ognl.ASTProperty.getValueBody(ASTProperty.java:109)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:200)
at ognl.SimpleNode.getValue(SimpleNode.java:244)
at ognl.ASTChain.getValueBody(ASTChain.java:137)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:200)
at ognl.SimpleNode.getValue(SimpleNode.java:244)
at ognl.Ognl.getValue(Ognl.java:494)
at ognl.Ognl.getValue(Ognl.java:458)
at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:148)
at ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:524)
at ognl.Ognl.compileExpression(Ognl.java:141)
at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152)
... 183 more