You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2008/10/08 09:11:18 UTC
svn commit: r702742 - in
/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean:
FacesBeanImpl.java ValueBindingValueExpression.java
ValueExpressionValueBinding.java
Author: matzew
Date: Wed Oct 8 00:11:17 2008
New Revision: 702742
URL: http://svn.apache.org/viewvc?rev=702742&view=rev
Log:
TRINIDAD-1253 - Problems with ValueBindingValueExpression and ValueExpressionValueBinding
Thx to Blake Sullivan for the patch
Modified:
myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/FacesBeanImpl.java
myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/ValueBindingValueExpression.java
myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/ValueExpressionValueBinding.java
Modified: myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/FacesBeanImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/FacesBeanImpl.java?rev=702742&r1=702741&r2=702742&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/FacesBeanImpl.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/FacesBeanImpl.java Wed Oct 8 00:11:17 2008
@@ -149,7 +149,7 @@
if (ve instanceof ValueBindingValueExpression)
return ((ValueBindingValueExpression) ve).getValueBinding();
- return new ValueExpressionValueBinding(ve);
+ return ValueExpressionValueBinding.newValueExpressionValueBinding(ve);
}
final public void setValueBinding(PropertyKey key, ValueBinding binding)
@@ -162,7 +162,7 @@
}
else
{
- ve = new ValueBindingValueExpression(binding);
+ ve = ValueBindingValueExpression.newValueBindingValueExpression(binding);
}
setValueExpression(key, ve);
Modified: myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/ValueBindingValueExpression.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/ValueBindingValueExpression.java?rev=702742&r1=702741&r2=702742&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/ValueBindingValueExpression.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/ValueBindingValueExpression.java Wed Oct 8 00:11:17 2008
@@ -24,19 +24,39 @@
import javax.el.ELException;
import javax.el.ValueExpression;
+import javax.faces.component.StateHolder;
import javax.faces.context.FacesContext;
import javax.faces.el.EvaluationException;
import javax.faces.el.ValueBinding;
@Deprecated
-class ValueBindingValueExpression
- extends ValueExpression implements Serializable
+class ValueBindingValueExpression extends ValueExpression
{
-
- // TODO implement serialization correctly?
- public ValueBindingValueExpression(ValueBinding binding)
+ public static ValueBindingValueExpression newValueBindingValueExpression(ValueBinding binding)
+ {
+ if (binding instanceof StateHolder)
+ {
+ if (binding instanceof Serializable)
+ return new SerializableStateHolderValueBindingValueExpression(binding);
+ else
+ return new StateHolderValueBindingValueExpression(binding);
+ }
+ else if (binding instanceof Serializable)
+ {
+ return new SerializableValueBindingValueExpression(binding);
+ }
+ else
+ {
+ return new ValueBindingValueExpression(binding);
+ }
+ }
+
+ private ValueBindingValueExpression(ValueBinding binding)
{
+ if (binding == null)
+ throw new NullPointerException();
+
_binding = binding;
}
@@ -127,6 +147,63 @@
{
return _binding.hashCode();
}
+
+ public String toString()
+ {
+ return super.toString() + ", binding=" + _binding;
+ }
+
+ private static class SerializableValueBindingValueExpression extends ValueBindingValueExpression
+ implements Serializable
+ {
+ public SerializableValueBindingValueExpression(ValueBinding binding)
+ {
+ super(binding);
+ }
+ }
+
+ private static class StateHolderValueBindingValueExpression extends ValueBindingValueExpression
+ implements StateHolder
+ {
+ public StateHolderValueBindingValueExpression(ValueBinding binding)
+ {
+ super(binding);
+ _stateHolder = (StateHolder)binding;
+ }
+
+ public Object saveState(FacesContext facesContext)
+ {
+ return _stateHolder.saveState(facesContext);
+ }
+
+ public void restoreState(FacesContext facesContext, Object object)
+ {
+ _stateHolder.restoreState(facesContext, object);
+ }
+
+ public boolean isTransient()
+ {
+ return _stateHolder.isTransient();
+ }
+
+ public void setTransient(boolean b)
+ {
+ _stateHolder.setTransient(b);
+ }
+
+ private final StateHolder _stateHolder;
+ }
+
+ private static class SerializableStateHolderValueBindingValueExpression extends
+ StateHolderValueBindingValueExpression
+ implements Serializable
+ {
+ public SerializableStateHolderValueBindingValueExpression(ValueBinding binding)
+ {
+ super(binding);
+ }
+ }
private final ValueBinding _binding;
}
+
Modified: myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/ValueExpressionValueBinding.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/ValueExpressionValueBinding.java?rev=702742&r1=702741&r2=702742&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/ValueExpressionValueBinding.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/ValueExpressionValueBinding.java Wed Oct 8 00:11:17 2008
@@ -18,19 +18,43 @@
*/
package org.apache.myfaces.trinidad.bean;
+import java.io.Serializable;
+
import javax.el.ELException;
import javax.el.ValueExpression;
+import javax.faces.component.StateHolder;
import javax.faces.context.FacesContext;
import javax.faces.el.EvaluationException;
import javax.faces.el.ValueBinding;
@Deprecated
-public class ValueExpressionValueBinding
- extends ValueBinding
+public class ValueExpressionValueBinding extends ValueBinding
{
- public ValueExpressionValueBinding(ValueExpression ve)
+ public static ValueExpressionValueBinding newValueExpressionValueBinding(ValueExpression ve)
+ {
+ if (ve instanceof StateHolder)
+ {
+ if (ve instanceof Serializable)
+ return new SerializableStateHolderValueExpressionValueBinding(ve);
+ else
+ return new StateHolderValueExpressionValueBinding(ve);
+ }
+ else if (ve instanceof Serializable)
+ {
+ return new SerializableValueExpressionValueBinding(ve);
+ }
+ else
+ {
+ return new ValueExpressionValueBinding(ve);
+ }
+ }
+
+ private ValueExpressionValueBinding(ValueExpression ve)
{
+ if (ve == null)
+ throw new NullPointerException();
+
_ve = ve;
}
@@ -90,6 +114,79 @@
throw new EvaluationException(ee.getMessage(), ee.getCause());
}
}
+
+ public boolean equals(Object o)
+ {
+ if (o == this)
+ return true;
+
+ if (!(o instanceof ValueExpressionValueBinding))
+ return false;
+
+ ValueExpressionValueBinding that = (ValueExpressionValueBinding) o;
+ return that._ve.equals(_ve);
+ }
+
+ public int hashCode()
+ {
+ return _ve.hashCode();
+ }
+ public String toString()
+ {
+ return super.toString() + ", expression=" + _ve;
+ }
+
+ private static class SerializableValueExpressionValueBinding extends ValueExpressionValueBinding
+ implements Serializable
+ {
+ public SerializableValueExpressionValueBinding(ValueExpression ve)
+ {
+ super(ve);
+ }
+ }
+
+ private static class StateHolderValueExpressionValueBinding extends ValueExpressionValueBinding
+ implements StateHolder
+ {
+ public StateHolderValueExpressionValueBinding(ValueExpression ve)
+ {
+ super(ve);
+ _stateHolder = (StateHolder)ve;
+ }
+
+ public Object saveState(FacesContext facesContext)
+ {
+ return _stateHolder.saveState(facesContext);
+ }
+
+ public void restoreState(FacesContext facesContext, Object object)
+ {
+ _stateHolder.restoreState(facesContext, object);
+ }
+
+ public boolean isTransient()
+ {
+ return _stateHolder.isTransient();
+ }
+
+ public void setTransient(boolean b)
+ {
+ _stateHolder.setTransient(b);
+ }
+
+ private final StateHolder _stateHolder;
+ }
+
+ private static class SerializableStateHolderValueExpressionValueBinding extends
+ StateHolderValueExpressionValueBinding
+ implements Serializable
+ {
+ public SerializableStateHolderValueExpressionValueBinding(ValueExpression ve)
+ {
+ super(ve);
+ }
+ }
+
private final ValueExpression _ve;
}