OGNL or expression problem - here it is again

2007-11-15 Thread Bastian Voigt
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi,
just upgraded to Tapestry 4.1.3 I have the following problem:

I am using an @If component with the following conditional expression:

ognl:user==null or (!user.hasPermission(@theClass.THE_PERMISSION))

which should evaluate to true, if there is no user logged in
(user==null) or a user without sufficient permissions is logged in.

It works, but I get a nasty exception stacktrace in my server.log every
time this expression is evaluated (see below).

I already had this problem earlier with Tap 4.1.2 but then it was even
worse because it actually broke my pages.

Any possible solution?

Regards
Bastian



[#|2007-11-15T13:23:24.320+0100|WARNING|sun-appserver9.1|javax.enterprise.system.stream.err|_ThreadID=24;_ThreadName=httpSSLWorkerThread-8080-1;_RequestID=22c86aaa-e31c-4091-a4e5-de65f776e663;|
java.lang.NullPointerException: target is null for method hasPermission
at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1128)
at ognl.ASTMethod.getValueBody(ASTMethod.java:90)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:202)
at ognl.SimpleNode.getValue(SimpleNode.java:246)
at ognl.ASTChain.getValueBody(ASTChain.java:137)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:202)
at ognl.SimpleNode.getValue(SimpleNode.java:246)
at ognl.ASTNot.getValueBody(ASTNot.java:49)
at
ognl.BooleanExpression.toGetSourceString(BooleanExpression.java:41)
at ognl.ASTNot.toGetSourceString(ASTNot.java:61)
at ognl.OgnlRuntime.getChildSource(OgnlRuntime.java:2415)
at ognl.OgnlRuntime.getChildSource(OgnlRuntime.java:2374)
at ognl.ASTOr.toGetSourceString(ASTOr.java:104)
at
org.apache.tapestry.services.impl.HiveMindExpressionCompiler.generateGetter(HiveMindExpressionCompiler.java:314)
at
org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:157)
at ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:523)
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_11643435063.getCompiledExpression($ExpressionCache_11643435063.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_3.getCondition($IfBean_3.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:179)
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:179)
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:179)
at
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
at org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
at
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179)
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:179)
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:177)
at
org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:249)
at
org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:397)

Re: OGNL or expression problem - here it is again

2007-11-15 Thread Alejandro Scandroli
Hi Bastian

Two suggestions that might help
1)  In ognl you don't necesarily need to ask if something is null using ==null
you can use ognl:!user
http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/coercion.html

ognl:!user or (!user.hasPermission(@theClass.THE_PERMISSION))

2) Given that it's a classic !A OR !B, flip it applying De Morgan's
ognl:!(user and user.hasPermission(@theClass.THE_PERMISSION)))

You can try them just to see if you get the same results.

Alejandro.

On Nov 15, 2007 1:38 PM, Bastian Voigt [EMAIL PROTECTED] wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Hi,
 just upgraded to Tapestry 4.1.3 I have the following problem:

 I am using an @If component with the following conditional expression:

 ognl:user==null or (!user.hasPermission(@theClass.THE_PERMISSION))

 which should evaluate to true, if there is no user logged in
 (user==null) or a user without sufficient permissions is logged in.

 It works, but I get a nasty exception stacktrace in my server.log every
 time this expression is evaluated (see below).

 I already had this problem earlier with Tap 4.1.2 but then it was even
 worse because it actually broke my pages.

 Any possible solution?

 Regards
 Bastian



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]