[jboss-cvs] JBossAS SVN: r73576 - projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/vfs/helpers.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu May 22 07:39:47 EDT 2008
Author: alesj
Date: 2008-05-22 07:39:47 -0400 (Thu, 22 May 2008)
New Revision: 73576
Modified:
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/vfs/helpers/PathTokenizer.java
Log:
[JBVFS-26]; Path tokenization optimization.
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/vfs/helpers/PathTokenizer.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/vfs/helpers/PathTokenizer.java 2008-05-22 10:05:34 UTC (rev 73575)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/vfs/helpers/PathTokenizer.java 2008-05-22 11:39:47 UTC (rev 73576)
@@ -21,8 +21,9 @@
*/
package org.jboss.virtual.plugins.vfs.helpers;
-import java.util.StringTokenizer;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
/**
* PathTokenizer.
@@ -31,6 +32,7 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
+ at SuppressWarnings({"StringEquality"})
public class PathTokenizer
{
/** The reverse path const */
@@ -87,23 +89,54 @@
if (path == null)
throw new IllegalArgumentException("Null path");
- StringTokenizer tokenizer = new StringTokenizer(path, "/");
- int count = tokenizer.countTokens();
- if (count == 0)
- return null;
+ char[] chars = path.toCharArray();
+ StringBuilder buffer = new StringBuilder();
+ List<String> list = new ArrayList<String>();
+ String specialToken = null;
- String[] tokens = new String[count];
- int i = 0;
- while (tokenizer.hasMoreTokens())
+ for (int index=0; index < chars.length; index++)
{
- String token = tokenizer.nextToken();
+ char ch = chars[index];
- if ("".equals(token))
- throw new IllegalArgumentException("A path element is empty: " + path);
+ if (ch == '/')
+ {
+ if (index > 0)
+ {
+ if (buffer.length() == 0 && specialToken == null)
+ throw new IllegalArgumentException("A path element is empty: " + path);
- tokens[i++] = token;
+ if (specialToken != null)
+ list.add(specialToken);
+ else
+ list.add(buffer.toString());
+
+ // reset
+ buffer.setLength(0);
+ specialToken = null;
+ }
+ }
+ else if (ch == '.')
+ {
+ if (specialToken == null && buffer.length() == 0)
+ specialToken = CURRENT_PATH;
+ else if (specialToken == CURRENT_PATH && buffer.length() == 0)
+ specialToken = REVERSE_PATH;
+ else
+ buffer.append(ch);
+ }
+ else
+ {
+ buffer.append(ch);
+ }
}
- return tokens;
+
+ // add last token
+ if (specialToken != null)
+ list.add(specialToken);
+ else if (buffer.length() > 0)
+ list.add(buffer.toString());
+
+ return list.toArray(new String[list.size()]);
}
/**
@@ -161,7 +194,7 @@
*/
public static boolean isCurrentToken(String token)
{
- return CURRENT_PATH.equals(token);
+ return CURRENT_PATH == token;
}
/**
@@ -172,6 +205,6 @@
*/
public static boolean isReverseToken(String token)
{
- return REVERSE_PATH.equals(token);
+ return REVERSE_PATH == token;
}
}
More information about the jboss-cvs-commits
mailing list