Yeap, you are absolutely right Jesse, the unit test succeeds. Must have had the wrong snapshot version in the classpath. However, a more complex case still fails in latest 2.7.1, opened http://jira.opensymphony.com/browse/OGNL-105 for it with a unit test to show the problem (sorry for the trouble!).
Kalle On 7/2/07, Kalle Korhonen <[EMAIL PROTECTED]> wrote:
The unit test doesn't succeed for me (and neither does the real world example, which is slightly different, but I assume the unit test would cover for it). Well, if you say the unit test should pass now, I'll double-check I have the right version and get back to you. Kalle On 7/2/07, Jesse Kuhnert <[EMAIL PROTECTED]> wrote: > > That looks like the right one to me. The code you provided in the test > case was re-produced / fixed. You did mention something about > "object[linkProperty]" not working before you provided a code example > but > I'm assuming the code example was what was intended to be fixed.... > > Does the same test case not work for you? > > On 7/2/07, Kalle Korhonen <[EMAIL PROTECTED] > wrote: > > > > Hey Jesse - saw you had marked > > http://jira.opensymphony.com/browse/OGNL-97as resolved so I assumed > > the fix might be in the latest snapshot > > ognl-2.7.1-20070630.205921-4 posted later but there were no changes as > far > > as I could notice. Certainly don't want to sound impatient as you are > > doing > > superb job in fixing these, but how do I know in which snapshot the > fix > > might be? > > > > Kalle > > > > > > On 6/26/07, Kalle Korhonen <[EMAIL PROTECTED]> wrote: > > > > > > Thanks. I wasn't 100% how legitimate, but filed as > > > http://jira.opensymphony.com/browse/OGNL-97 > > > > > > Kalle > > > > > > On 6/26/07, Jesse Kuhnert < [EMAIL PROTECTED]> wrote: > > > > > > > > No time to look at this right now, but if you file a jira report > > here: > > > > > > > > http://jira.opensymphony.com/browse/OGNL > > > > > > > > it can be looked in to for the next 2.7.1 release. > > > > > > > > The forums are here: > > > > > > > > http://forums.opensymphony.com/category.jspa?categoryID=10 > > > > > > > > (though I'm thinking of moving them to google groups as well) > > > > > > > > On 6/26/07, Kalle Korhonen <[EMAIL PROTECTED]> wrote: > > > > > > > > > > Hi Jesse et al, > > > > > > > > > > while trying to migrate to Tap 4.1.2 we started getting lots of > > > > > 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. I realize this is probably much more > to do > > > > with > > > > > enhanced Ognl than Tapestry, so I would have taken the > discussion to > > > > ognl > > > > > list, but subscribing to ognl-interest failed with > > lists.ognl.orgdomain > > > > > not > > > > > found. Anyway, an example of failing expression is: > > > > > ognl:object[linkProperty] > > > > > > > > > > that now only works with: > > > > > ognl:object[#this.linkProperty] > > > > > > > > > > Without knowing anything about how compiled OGNL works, just > > following > > > > the > > > > > ExpressionEvaluatorImpl.java source I tried to make a test case > that > > > > > fails: > > > > > 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 (like I said, I don't know anything > about it > > > > :), > > > > > 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). > > > > > > > > > > Since 2.7 is already released and I can see Jesse has even > tagged > > > > Tap4.1.2a > > > > > few hours ago, I was mostly looking for a quick explanation, > maybe a > > > > > better > > > > > workaround if possible. If this (pun intended) is the price to > pay > > for > > > > > > > > > faster OGNL, here's my check and huge thanks to Jesse for all > the > > hard > > > > > work! > > > > > > > > > > Kalle > > > > > > > > > > > > > > > > > > > > > -- > > > > Jesse Kuhnert > > > > Tapestry/Dojo team member/developer > > > > > > > > Open source based consulting work centered around > > > > dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com > > > > > > > > > > > > > > > > -- > Jesse Kuhnert > Tapestry/Dojo team member/developer > > Open source based consulting work centered around > dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com >