Hi Sorry for the late response, but I was looking other important issues (I usually review issues with JSR-314 component first). I reviewed your patches and I committed some of them, and made comments on the others.
> On the other hand, regarding serialization vs implements >> PartialStateHolder, >> > I've looked for some more externalizable objects: the >> TagMethodExpression >> > class is used in the MethodExpressionValueChangeListener, which >> implements >> > StateHolder and PartialMethodExpressionValueChangeListener, which >> implements >> > PartialStateHolder. >> >> > So maybe instead of being Externalizable, >> > TagMethodExpression should also implement PartialStateHolder. There is a >> > similar situation with TagValueExpression. >> >> I guess - Leonardo should clarify. >> >> To save ValueExpressions, javax.faces.component._DeltaStateHelper uses an InternalMap, but that one does not take into account PartialStateHolder interface. So in this case does not apply. In MethodExpression it is possible, but to do that, we need to solve two questions: - If we have an immutable object that implements Serializable interface and a similar one that implements PartialStateHolder, which one is saved / restored faster? which one has bigger state size? It is worth to implement PartialStateHolder or keep it as Serializable?. To solve that we need to try some simple performance tests with possible candidates. - Does all methods that store MethodExpression variables ( UICommand.actionExpression) should handle PartialStateHolder interfaces? In theory yes (I add this support before but then I revert it to the current behavior because there is no evidence why use PartialStateHolder in this case), but if we don't expect MethodExpression implementations implements PartialStateHolder, just let it as is. Look this class: org.apache.myfaces.view.facelets.tag.jsf.core.SetPropertyActionListenerHandler . It has a inner class called SetPropertyListener that implements Serializable. javax.faces.component._DeltaList is used to store FacesListeners and that one handles PartialStateHolder instances. That one is other valid case. best regards, Leonardo Uribe
