Hi,

Tapestry 4.1.2 here.

We're having a problem involving ognl expression compilation.

We have a page with a simple parameter assignation expression, something
like:

<span jwcid="@general/configaration/ProductListing"
products="ognl:activity.products"/>

products is a property of type: java.util.Set and sometimes its an instance
of java.util.HashSet other times
its an instance of Hibernate's: org.hibernate.collection.PersistentSet. At
development and test environments
works fine most of the time but sometimes we get the following exception:


java.lang.ClassCastException: java.util.HashSet cannot be cast to
org.hibernate.collection.PersistentCollection
$ASTAnd_11b90020cfa.get($ASTAnd_11b90020cfa.java)
org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.read(ExpressionEvaluatorImpl.java:142)
$ExpressionEvaluator_11b90020bbb.read($ExpressionEvaluator_11b90020bbb.java)
org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:139)
org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)

Then the page becomes useless and only restarting the webapp or server fixes
it.

Turns out the problem is related with ognl compilation. If ognl compiles the
expression with products being an
instance of PersistentSet and it later changes to HashSet, such compiled
exception isn't updated and ExpressionEvaluatorImpl keeps trying to cast the
HashSet's instance into a PersistentSet's.

Has anybody encounter such a problem?
Any ideas on how to solve it?
Is there anyway to disable ognl compilation?
Or to use tapestry-prop in Tap4.1.2?

Thanks in advance,

Miguel Hernandez

Reply via email to