[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