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: Ascending order - Click to sort in descending order
Kalle Korhonen added a comment - 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 added a comment - 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 added a comment - 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 added a comment - 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