[richfaces-svn-commits] JBoss Rich Faces SVN: r5906 - in trunk/framework: api/src/main/java/org/richfaces/model and 1 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Thu Feb 7 07:45:55 EST 2008


Author: konstantin.mishin
Date: 2008-02-07 07:45:55 -0500 (Thu, 07 Feb 2008)
New Revision: 5906

Added:
   trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/MethodBindingExpression.java
Modified:
   trunk/framework/api/src/main/java/org/richfaces/component/Column.java
   trunk/framework/api/src/main/java/org/richfaces/model/Field.java
   trunk/framework/api/src/main/java/org/richfaces/model/FilterField.java
   trunk/framework/api/src/main/java/org/richfaces/model/SortField2.java
   trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/ObjectWrapperFactory.java
   trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/WrappedBeanComparator2.java
Log:
RF-1741

Modified: trunk/framework/api/src/main/java/org/richfaces/component/Column.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/component/Column.java	2008-02-07 12:02:18 UTC (rev 5905)
+++ trunk/framework/api/src/main/java/org/richfaces/component/Column.java	2008-02-07 12:45:55 UTC (rev 5906)
@@ -21,6 +21,8 @@
 
 package org.richfaces.component;
 
+import javax.el.MethodExpression;
+
 import org.richfaces.model.Ordering;
 
 /**
@@ -68,4 +70,7 @@
 	 */
 	public abstract void setSortOrder(Ordering sortOrder);
 	public abstract Ordering getSortOrder();
+	
+	public abstract void setFilterMethod(MethodExpression methodExpression);
+	public abstract MethodExpression getFilterMethod();
 }

Modified: trunk/framework/api/src/main/java/org/richfaces/model/Field.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/Field.java	2008-02-07 12:02:18 UTC (rev 5905)
+++ trunk/framework/api/src/main/java/org/richfaces/model/Field.java	2008-02-07 12:45:55 UTC (rev 5906)
@@ -5,7 +5,7 @@
 
 import java.io.Serializable;
 
-import javax.el.ValueExpression;
+import javax.el.Expression;
 
 /**
  * @author Konstantin Mishin
@@ -15,9 +15,9 @@
 
 	private static final long serialVersionUID = 7576046308828980778L;
 	
-	private ValueExpression expression;
+	private Expression expression;
 	
-	public Field(ValueExpression expression) {
+	public Field(Expression expression) {
 		this.expression = expression;
 	}
 
@@ -39,7 +39,7 @@
 		return true;
 	}
 	
-	public ValueExpression getExpression() {
+	public Expression getExpression() {
 		return expression;
 	}
 	
@@ -52,7 +52,7 @@
 		return result;
 	}
 
-	public void setExpression(ValueExpression expression) {
+	public void setExpression(Expression expression) {
 		this.expression = expression;
 	}	
 }

Modified: trunk/framework/api/src/main/java/org/richfaces/model/FilterField.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/FilterField.java	2008-02-07 12:02:18 UTC (rev 5905)
+++ trunk/framework/api/src/main/java/org/richfaces/model/FilterField.java	2008-02-07 12:45:55 UTC (rev 5906)
@@ -3,7 +3,7 @@
  */
 package org.richfaces.model;
 
-import javax.el.ValueExpression;
+import javax.el.Expression;
 
 /**
  * @author Konstantin Mishin
@@ -13,7 +13,7 @@
 
 	private static final long serialVersionUID = -5453359866996963829L;
 
-	public FilterField(ValueExpression expression) {
+	public FilterField(Expression expression) {
 		super(expression);
 	}
 

Modified: trunk/framework/api/src/main/java/org/richfaces/model/SortField2.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/SortField2.java	2008-02-07 12:02:18 UTC (rev 5905)
+++ trunk/framework/api/src/main/java/org/richfaces/model/SortField2.java	2008-02-07 12:45:55 UTC (rev 5906)
@@ -3,7 +3,7 @@
  */
 package org.richfaces.model;
 
-import javax.el.ValueExpression;
+import javax.el.Expression;
 
 /**
  * @author Maksim Kaszynski
@@ -15,11 +15,11 @@
 	
 	private Ordering ordering;
 	
-	public SortField2(ValueExpression expression) {
+	public SortField2(Expression expression) {
 		super(expression);
 	}
 	
-	public SortField2(ValueExpression expression, Ordering ordering) {
+	public SortField2(Expression expression, Ordering ordering) {
 		super(expression);
 		this.ordering = ordering;
 	}

Added: trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/MethodBindingExpression.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/MethodBindingExpression.java	                        (rev 0)
+++ trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/MethodBindingExpression.java	2008-02-07 12:45:55 UTC (rev 5906)
@@ -0,0 +1,26 @@
+package org.richfaces.model.impl.expressive;
+
+import javax.el.ELContext;
+import javax.el.MethodExpression;
+import javax.faces.context.FacesContext;
+
+/**
+ * 
+ * @author Konstantin Mishin
+ *
+ */
+final public class MethodBindingExpression extends Expression {
+
+	private ELContext context;
+	private MethodExpression methodExpression;
+
+	MethodBindingExpression(FacesContext faces, MethodExpression methodExpression) {
+		super(methodExpression.getExpressionString());
+		this.context = faces.getELContext();
+		this.methodExpression = methodExpression;
+	}
+
+	public Object evaluate(Object base) {
+		return methodExpression.invoke(context, new Object[]{base});
+	}
+}
\ No newline at end of file

Modified: trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/ObjectWrapperFactory.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/ObjectWrapperFactory.java	2008-02-07 12:02:18 UTC (rev 5905)
+++ trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/ObjectWrapperFactory.java	2008-02-07 12:45:55 UTC (rev 5906)
@@ -27,6 +27,7 @@
 
 import javax.el.ELContext;
 import javax.el.ELResolver;
+import javax.el.MethodExpression;
 import javax.el.ValueExpression;
 import javax.el.VariableMapper;
 import javax.faces.application.Application;
@@ -102,21 +103,28 @@
 		
 		int i = 0;
 		for (Field field : sortOrder) {
-			ValueExpression valueExpression = field.getExpression();
+			javax.el.Expression elExpression = field.getExpression();
 			Expression expression;
 			
-			if (valueExpression.isLiteralText()) {
-				String expressionString = valueExpression.getExpressionString();
+			if (elExpression instanceof ValueExpression) {
+				ValueExpression valueExpression = (ValueExpression) elExpression;
 				
-				if (expressionString.startsWith(UIViewRoot.UNIQUE_ID_PREFIX)) {
-					expression = new NullExpression(expressionString);
+				if (valueExpression.isLiteralText()) {
+					String expressionString = valueExpression.getExpressionString();
+					
+					if (expressionString.startsWith(UIViewRoot.UNIQUE_ID_PREFIX)) {
+						expression = new NullExpression(expressionString);
+					} else {
+						expression = new SimplePropertyExpression(expressionString, elContext, resolver);
+					}
 				} else {
-					expression = new SimplePropertyExpression(expressionString, elContext, resolver);
+					expression = new ValueBindingExpression(context, valueExpression, var);
 				}
+			} else if(elExpression instanceof MethodExpression){
+				expression = new MethodBindingExpression(context, (MethodExpression)elExpression);
 			} else {
-				expression = new ValueBindingExpression(context, valueExpression, var);
+				throw new IllegalArgumentException();
 			}
-			
 			expressions[i++] = expression;
 		}
 		

Modified: trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/WrappedBeanComparator2.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/WrappedBeanComparator2.java	2008-02-07 12:02:18 UTC (rev 5905)
+++ trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/WrappedBeanComparator2.java	2008-02-07 12:45:55 UTC (rev 5906)
@@ -4,9 +4,8 @@
 import java.util.Iterator;
 import java.util.List;
 
-import javax.el.ValueExpression;
+import javax.el.Expression;
 
-import org.richfaces.model.Field;
 import org.richfaces.model.Ordering;
 import org.richfaces.model.SortField2;
 
@@ -37,7 +36,7 @@
 		
 		for (Iterator<SortField2> iterator = sortFields.iterator(); iterator.hasNext() && result == 0;) {
 			SortField2 field = iterator.next();
-			ValueExpression expression = field.getExpression();
+			Expression expression = field.getExpression();
 			String prop = expression.getExpressionString();
 			Ordering ordering = field.getOrdering();
 			if (ordering != null) {




More information about the richfaces-svn-commits mailing list