You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sv...@apache.org on 2005/05/04 04:17:07 UTC
svn commit: r168045 - in /myfaces/trunk: doc/release-notes.txt
src/components/org/apache/myfaces/custom/aliasbean/AliasBean.java
Author: svieujot
Date: Tue May 3 19:17:06 2005
New Revision: 168045
URL: http://svn.apache.org/viewcvs?rev=168045&view=rev
Log:
Avoid evaluating expression on each phase (quite an efficiency improvement when your aliased object is a DAO method).
Modified:
myfaces/trunk/doc/release-notes.txt
myfaces/trunk/src/components/org/apache/myfaces/custom/aliasbean/AliasBean.java
Modified: myfaces/trunk/doc/release-notes.txt
URL: http://svn.apache.org/viewcvs/myfaces/trunk/doc/release-notes.txt?rev=168045&r1=168044&r2=168045&view=diff
==============================================================================
--- myfaces/trunk/doc/release-notes.txt (original)
+++ myfaces/trunk/doc/release-notes.txt Tue May 3 19:17:06 2005
@@ -4,6 +4,7 @@
----------------------------------------------------------------------
Changes in Release 1.0.10
* added renderFacetsIfSinglePage to x:dataScroller
+* aliasBean : avoid evaluating expressions on each phase
* closed MYFACES-177
* closed MYFACES-199
* closed MYFACES-209
Modified: myfaces/trunk/src/components/org/apache/myfaces/custom/aliasbean/AliasBean.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/components/org/apache/myfaces/custom/aliasbean/AliasBean.java?rev=168045&r1=168044&r2=168045&view=diff
==============================================================================
--- myfaces/trunk/src/components/org/apache/myfaces/custom/aliasbean/AliasBean.java (original)
+++ myfaces/trunk/src/components/org/apache/myfaces/custom/aliasbean/AliasBean.java Tue May 3 19:17:06 2005
@@ -90,6 +90,7 @@
private String _aliasBeanExpression = null;
private transient FacesContext _context = null;
+ private transient Object evaluatedExpression = null;
public AliasBean() {
setRendererType(DEFAULT_RENDERER_TYPE);
@@ -248,12 +249,12 @@
_context = context;
makeAlias();
}
-
- private void makeAlias() {
- // First, compute the value or reference
- Object value;
-
- ValueBinding valueVB = null;
+
+ private void computeEvaluatedExpression(){
+ if( evaluatedExpression != null )
+ return;
+
+ ValueBinding valueVB = null;
if (_valueExpression == null) {
valueVB = getValueBinding("value");
_valueExpression = valueVB.getExpressionString();
@@ -262,13 +263,18 @@
if( valueVB == null ){
if( _valueExpression.startsWith("#{") ){
valueVB = _context.getApplication().createValueBinding(_valueExpression);
- value = valueVB.getValue(_context);
+ evaluatedExpression = valueVB.getValue(_context);
}else{
- value = _valueExpression;
+ evaluatedExpression = _valueExpression;
}
}else{
- value = valueVB.getValue(_context);
+ evaluatedExpression = valueVB.getValue(_context);
}
+ }
+
+ private void makeAlias() {
+ // First, compute the value or reference
+ computeEvaluatedExpression();
// Then set the alias to this value
ValueBinding aliasVB;
@@ -279,7 +285,7 @@
aliasVB = _context.getApplication().createValueBinding(_aliasBeanExpression);
}
- aliasVB.setValue(_context, value);
+ aliasVB.setValue(_context, evaluatedExpression);
log.debug("makeAlias: " + _valueExpression + " = " + _aliasBeanExpression);
}