You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by ju...@apache.org on 2003/02/25 17:34:21 UTC
cvs commit: jakarta-slide/src/share/org/apache/slide/content NodeRevisionNumber.java
juergen 2003/02/25 08:34:21
Modified: src/share/org/apache/slide/content NodeRevisionNumber.java
Log:
mini cache for toString. Thanks to Sven Steiniger [Sven.Steiniger@newtron.net]
Revision Changes Path
1.7 +33 -7 jakarta-slide/src/share/org/apache/slide/content/NodeRevisionNumber.java
Index: NodeRevisionNumber.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionNumber.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- NodeRevisionNumber.java 11 Jul 2002 14:56:53 -0000 1.6
+++ NodeRevisionNumber.java 25 Feb 2003 16:34:21 -0000 1.7
@@ -162,6 +162,8 @@
/**
* Number storage.
+ * <b>Note: when this array or it's content is modified, you must reset
+ * {@link #cachedToString} to null!</b>
*/
private int[] number;
@@ -228,10 +230,12 @@
for (int i=0; i<nbDigits; i++) {
number[i] = (new Integer(tokenizer.nextToken())).intValue();
}
+ cachedToString=null; // reset cache
} else {
number = new int[2];
number[MAJOR] = 1;
number[MINOR] = 0;
+ cachedToString=null; // reset cache
}
}
@@ -242,25 +246,47 @@
private void next() {
if (number.length > 0) {
number[number.length - 1] += 1;
+ cachedToString=null; // reset cache
}
}
// --------------------------------------------------------- Public Methods
-
-
+
+
+ /**
+ * Caches the result of last toString()-call. This will also heavily improve
+ * hashCode() as the String.hashCode() method is also buffered.
+ * This imust be resetet to null whenever the {@link #number} array changes.
+ */
+ private String cachedToString;
+
/**
* Get a String representation of the revision number.
*
* @return String
*/
public String toString() {
+ if(cachedToString!=null) return cachedToString;
+ int count=number.length;
+ if(count==2) cachedToString=(number[MAJOR]+"."+number[MINOR]);
+ else
+ {
+ StringBuffer buf = new StringBuffer();
+ buf.append(number[MAJOR]);
+ for (int i=1; i<count; i++) {
+ buf.append('.').append(number[i]);
+ }
+ cachedToString=buf.toString();
+ }
+ return cachedToString;
+ /* old code being replaced by the cached one
StringBuffer buf = new StringBuffer();
buf.append(number[MAJOR]);
for (int i=1; i<number.length; i++) {
buf.append(".").append(number[i]);
}
- return buf.toString();
+ return buf.toString();*/
}
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org