[cvs]
expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller
Transition.java
JCorporate Ltd
jcorp at jcorp2.servlets.net
Fri Jun 18 18:53:56 PDT 2004
Update of /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller
In directory jcorp2.servlets.net:/tmp/cvs-serv24828/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller
Modified Files:
Transition.java
Log Message:
fix param cache which ignored boolean for 'includeControllerParam'
Index: Transition.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Transition.java,v
retrieving revision 1.52
retrieving revision 1.53
diff -C2 -d -r1.52 -r1.53
*** Transition.java 17 Jun 2004 08:08:27 -0000 1.52
--- Transition.java 19 Jun 2004 01:53:54 -0000 1.53
***************
*** 146,150 ****
* re-constructing multiple times.
*/
! private transient String constructedParamString = null;
--- 146,156 ----
* re-constructing multiple times.
*/
! private transient String cacheParamStringSansController = null;
!
! /**
! * This is used to store a constructed parameter string to save on
! * re-constructing multiple times.
! */
! private transient String cacheParamStringWithController = null;
***************
*** 274,278 ****
*/
public void addParam(String paramCode, String paramValue) {
! constructedParamString = null;
if (paramCode.equals("state")) {
setState(StringUtil.notNull(paramValue));
--- 280,284 ----
*/
public void addParam(String paramCode, String paramValue) {
! clearCache();
if (paramCode.equals("state")) {
setState(StringUtil.notNull(paramValue));
***************
*** 289,292 ****
--- 295,303 ----
} /* addParam(String, String) */
+ private void clearCache() {
+ cacheParamStringWithController = null;
+ cacheParamStringSansController = null;
+ }
+
/**
* Sets the target state to transition to.
***************
*** 295,299 ****
*/
public void setState(String newState) {
! constructedParamString = null;
myState = newState;
}
--- 306,310 ----
*/
public void setState(String newState) {
! clearCache();
myState = newState;
}
***************
*** 448,496 ****
*/
public String getParamString(boolean includeControllerParameter) {
! if (constructedParamString == null) {
FastStringBuffer paramString = FastStringBuffer.getInstance();
try {
! if (controllerObject != null && includeControllerParameter) {
paramString.append("controller=");
paramString.append(controllerObject);
}
! if (this.params != null) {
! if (!this.params.isEmpty()) {
! String oneKey = null;
!
! for (Enumeration e = this.params.keys(); e.hasMoreElements();) {
! if (paramString.length() != 0) {
! paramString.append("&");
! }
! oneKey = (String) e.nextElement();
! //Encode user's Transition parameters otherwise is ueer's parameters has '&' then
! //it will mess up the addButtonParams() method when using Tokenizer.
! FastStringBuffer fsb = FastStringBuffer.getInstance();
! try {
! fsb.append(oneKey);
! fsb.append("=");
! fsb.append(URLUTF8Encoder.encode((String) this.params.get(oneKey)));
! paramString.append(fsb.toString());
! } finally {
! fsb.release();
! fsb = null;
! }
! }
! }
! }
! String stateString = StringUtil.notNull(getState());
! if (stateString.length() != 0) {
! if (paramString.length() != 0) {
! paramString.append("&");
! }
! paramString.append("state=");
! paramString.append(stateString);
! }
! constructedParamString = paramString.toString();
} finally {
paramString.release();
--- 459,486 ----
*/
public String getParamString(boolean includeControllerParameter) {
! if (includeControllerParameter && cacheParamStringWithController == null) {
FastStringBuffer paramString = FastStringBuffer.getInstance();
try {
! if (controllerObject != null ) {
paramString.append("controller=");
paramString.append(controllerObject);
}
! addNonControllerParams(paramString);
! cacheParamStringWithController = paramString.toString();
! } finally {
! paramString.release();
! paramString = null;
! }
! }
! if (!includeControllerParameter && cacheParamStringSansController == null) {
! FastStringBuffer paramString = FastStringBuffer.getInstance();
! try {
! addNonControllerParams(paramString);
! cacheParamStringSansController = paramString.toString();
} finally {
paramString.release();
***************
*** 500,505 ****
}
- return constructedParamString;
}
--- 490,537 ----
}
+ if ( includeControllerParameter )
+ return cacheParamStringWithController;
+ else
+ return cacheParamStringSansController;
+
+ }
+
+ private void addNonControllerParams(FastStringBuffer paramString) {
+ if (this.params != null) {
+ if (!this.params.isEmpty()) {
+ String oneKey = null;
+
+ for (Enumeration e = this.params.keys(); e.hasMoreElements();) {
+ if (paramString.length() != 0) {
+ paramString.append("&");
+ }
+ oneKey = (String) e.nextElement();
+
+ //Encode user's Transition parameters otherwise is ueer's parameters has '&' then
+ //it will mess up the addButtonParams() method when using Tokenizer.
+ FastStringBuffer fsb = FastStringBuffer.getInstance();
+ try {
+ fsb.append(oneKey);
+ fsb.append("=");
+ fsb.append(URLUTF8Encoder.encode((String) this.params.get(oneKey)));
+ paramString.append(fsb.toString());
+ } finally {
+ fsb.release();
+ fsb = null;
+ }
+
+ }
+ }
+ }
+
+ String stateString = StringUtil.notNull(getState());
+ if (stateString.length() != 0) {
+ if (paramString.length() != 0) {
+ paramString.append("&");
+ }
+ paramString.append("state=");
+ paramString.append(stateString);
+ }
}
***************
*** 681,685 ****
*/
public void setControllerObject(String newObject) {
! constructedParamString = null;
controllerObject = newObject;
} /* setControllerObject(String) */
--- 713,717 ----
*/
public void setControllerObject(String newObject) {
! clearCache();
controllerObject = newObject;
} /* setControllerObject(String) */
***************
*** 696,700 ****
*/
public void setControllerObject(Class c) {
! constructedParamString = null;
if (c != null) {
setControllerObject(c.getName());
--- 728,732 ----
*/
public void setControllerObject(Class c) {
! clearCache();
if (c != null) {
setControllerObject(c.getName());
***************
*** 711,715 ****
*/
public void setOwnerController(String newController) {
! constructedParamString = null;
ownerObject = newController;
}
--- 743,747 ----
*/
public void setOwnerController(String newController) {
! clearCache();
ownerObject = newController;
}
***************
*** 721,725 ****
*/
public void setParams(Hashtable newParams) {
! constructedParamString = null;
params = new Hashtable(newParams);
}
--- 753,757 ----
*/
public void setParams(Hashtable newParams) {
! clearCache();
params = new Hashtable(newParams);
}
***************
*** 734,738 ****
*/
public void setReturnToSenderParms(ControllerRequest newReturnToSenderRequest) {
! constructedParamString = null;
String oneParamName = null;
Object oneParamValue = null;
--- 766,770 ----
*/
public void setReturnToSenderParms(ControllerRequest newReturnToSenderRequest) {
! clearCache();
String oneParamName = null;
Object oneParamValue = null;
More information about the cvs
mailing list