You are viewing a plain text version of this content. The canonical link for it is here.
Posted to kato-commits@incubator.apache.org by mo...@apache.org on 2009/11/23 15:54:15 UTC

svn commit: r883384 [43/47] - in /incubator/kato/trunk/org.apache.kato: ./ kato.anttasks/src/main/java/org/apache/kato/anttasks/ kato.anttasks/src/main/java/org/apache/kato/anttasks/sitebuilder/ kato.anttasks/src/main/java/org/apache/kato/anttasks/tck/...

Modified: incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/StateToString.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/StateToString.java?rev=883384&r1=883383&r2=883384&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/StateToString.java (original)
+++ incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/StateToString.java Mon Nov 23 15:53:48 2009
@@ -1,157 +1,157 @@
-/*******************************************************************************
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.apache.kato.katoview.commands.helpers;
-
-public class StateToString {
-	
-	private static int JVMTI_THREAD_STATE_ALIVE						=     0x0001;
-	private static int JVMTI_THREAD_STATE_TERMINATED				=     0x0002;
-	private static int JVMTI_THREAD_STATE_RUNNABLE					=     0x0004;
-	private static int JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER	=     0x0400;
-	private static int JVMTI_THREAD_STATE_WAITING					=     0x0080;
-	private static int JVMTI_THREAD_STATE_WAITING_INDEFINITELY		=     0x0010;
-	private static int JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT		=     0x0020;
-	private static int JVMTI_THREAD_STATE_SLEEPING					=     0x0040;
-	private static int JVMTI_THREAD_STATE_IN_OBJECT_WAIT			=     0x0100;
-	private static int JVMTI_THREAD_STATE_PARKED					=     0x0200;
-	private static int JVMTI_THREAD_STATE_SUSPENDED					=   0x100000;
-	private static int JVMTI_THREAD_STATE_INTERRUPTED				=   0x200000;
-	private static int JVMTI_THREAD_STATE_IN_NATIVE					=   0x400000;
-	private static int JVMTI_THREAD_STATE_VENDOR_1					= 0x10000000;
-	private static int JVMTI_THREAD_STATE_VENDOR_2					= 0x20000000;
-	private static int JVMTI_THREAD_STATE_VENDOR_3					= 0x40000000;
-	
-	private static int JVMTI_JAVA_LANG_THREAD_STATE_MASK =
-		JVMTI_THREAD_STATE_TERMINATED |
-		JVMTI_THREAD_STATE_ALIVE |
-		JVMTI_THREAD_STATE_RUNNABLE |
-		JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER |
-		JVMTI_THREAD_STATE_WAITING |
-		JVMTI_THREAD_STATE_WAITING_INDEFINITELY |
-		JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT;
-	private static int JVMTI_JAVA_LANG_THREAD_STATE_NEW =
-		0;
-	private static int JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED =
-		JVMTI_THREAD_STATE_TERMINATED;
-	private static int JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE =
-		JVMTI_THREAD_STATE_ALIVE |
-		JVMTI_THREAD_STATE_RUNNABLE;
-	private static int JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED =
-		JVMTI_THREAD_STATE_ALIVE |
-		JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER;
-	private static int JVMTI_JAVA_LANG_THREAD_STATE_WAITING =
-		JVMTI_THREAD_STATE_ALIVE |
-		JVMTI_THREAD_STATE_WAITING |
-		JVMTI_THREAD_STATE_WAITING_INDEFINITELY;
-	private static int JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING =
-		JVMTI_THREAD_STATE_ALIVE |
-		JVMTI_THREAD_STATE_WAITING |
-		JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT;
-
-	public static String getJVMTIStateString(int state)
-	{
-		String retval = "";
-		
-		if (0 == state) {
-			return "<new or terminated> ";
-		}
-		
-		if ((state & JVMTI_THREAD_STATE_ALIVE) == JVMTI_THREAD_STATE_ALIVE) {
-			retval += "ALIVE ";
-		}
-		if ((state & JVMTI_THREAD_STATE_TERMINATED) == JVMTI_THREAD_STATE_TERMINATED) {
-			retval += "TERMINATED ";
-		}
-		if ((state & JVMTI_THREAD_STATE_RUNNABLE) == JVMTI_THREAD_STATE_RUNNABLE) {
-			retval += "RUNNABLE ";
-		}
-		if ((state & JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) == JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) {
-			retval += "BLOCKED_ON_MONITOR_ENTER ";
-		}
-		if ((state & JVMTI_THREAD_STATE_WAITING) == JVMTI_THREAD_STATE_WAITING) {
-			retval += "WAITING ";
-		}
-		if ((state & JVMTI_THREAD_STATE_WAITING_INDEFINITELY) == JVMTI_THREAD_STATE_WAITING_INDEFINITELY) {
-			retval += "WAITING_INDEFINITELY ";
-		}
-		if ((state & JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) == JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) {
-			retval += "WAITING_WITH_TIMEOUT ";
-		}
-		if ((state & JVMTI_THREAD_STATE_SLEEPING) == JVMTI_THREAD_STATE_SLEEPING) {
-			retval += "SLEEPING ";
-		}
-		if ((state & JVMTI_THREAD_STATE_IN_OBJECT_WAIT) == JVMTI_THREAD_STATE_IN_OBJECT_WAIT) {
-			retval += "IN_OBJECT_WAIT ";
-		}
-		if ((state & JVMTI_THREAD_STATE_PARKED) == JVMTI_THREAD_STATE_PARKED) {
-			retval += "PARKED ";
-		}
-		if ((state & JVMTI_THREAD_STATE_SUSPENDED) == JVMTI_THREAD_STATE_SUSPENDED) {
-			retval += "SUSPENDED ";
-		}
-		if ((state & JVMTI_THREAD_STATE_INTERRUPTED) == JVMTI_THREAD_STATE_INTERRUPTED) {
-			retval += "INTERRUPTED ";
-		}
-		if ((state & JVMTI_THREAD_STATE_IN_NATIVE) == JVMTI_THREAD_STATE_IN_NATIVE) {
-			retval += "IN_NATIVE ";
-		}
-		if ((state & JVMTI_THREAD_STATE_VENDOR_1) == JVMTI_THREAD_STATE_VENDOR_1) {
-			retval += "VENDOR_1 ";
-		}
-		if ((state & JVMTI_THREAD_STATE_VENDOR_2) == JVMTI_THREAD_STATE_VENDOR_2) {
-			retval += "VENDOR_2 ";
-		}
-		if ((state & JVMTI_THREAD_STATE_VENDOR_3) == JVMTI_THREAD_STATE_VENDOR_3) {
-			retval += "VENDOR_3 ";
-		}
-		
-		if (retval.equals("")) {
-			retval = "<no matching state> ";
-		}
-		
-		return retval;
-	}
-	
-	public static String getThreadStateString(int state)
-	{
-		String retval = "";
-		
-		state &= JVMTI_JAVA_LANG_THREAD_STATE_MASK;
-		
-		if (state ==  JVMTI_JAVA_LANG_THREAD_STATE_NEW) {
-			return "NEW ";
-		}
-		if ((state & JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED) == JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED) {
-			retval += "TERMINATED ";
-		}
-		if ((state & JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE) == JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE) {
-			retval += "RUNNABLE ";
-		}
-		if ((state & JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED) == JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED) {
-			retval += "BLOCKED ";
-		}
-		if ((state & JVMTI_JAVA_LANG_THREAD_STATE_WAITING) == JVMTI_JAVA_LANG_THREAD_STATE_WAITING) {
-			retval += "WAITING ";
-		}
-		if ((state & JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING) == JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING) {
-			retval += "TIMED_WAITING ";
-		}
-		
-		if (retval.equals("")) {
-			retval = "<no matching state> ";
-		}
-		
-		return retval;
-	}
-}
+/*******************************************************************************
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+package org.apache.kato.katoview.commands.helpers;
+
+public class StateToString {
+	
+	private static int JVMTI_THREAD_STATE_ALIVE						=     0x0001;
+	private static int JVMTI_THREAD_STATE_TERMINATED				=     0x0002;
+	private static int JVMTI_THREAD_STATE_RUNNABLE					=     0x0004;
+	private static int JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER	=     0x0400;
+	private static int JVMTI_THREAD_STATE_WAITING					=     0x0080;
+	private static int JVMTI_THREAD_STATE_WAITING_INDEFINITELY		=     0x0010;
+	private static int JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT		=     0x0020;
+	private static int JVMTI_THREAD_STATE_SLEEPING					=     0x0040;
+	private static int JVMTI_THREAD_STATE_IN_OBJECT_WAIT			=     0x0100;
+	private static int JVMTI_THREAD_STATE_PARKED					=     0x0200;
+	private static int JVMTI_THREAD_STATE_SUSPENDED					=   0x100000;
+	private static int JVMTI_THREAD_STATE_INTERRUPTED				=   0x200000;
+	private static int JVMTI_THREAD_STATE_IN_NATIVE					=   0x400000;
+	private static int JVMTI_THREAD_STATE_VENDOR_1					= 0x10000000;
+	private static int JVMTI_THREAD_STATE_VENDOR_2					= 0x20000000;
+	private static int JVMTI_THREAD_STATE_VENDOR_3					= 0x40000000;
+	
+	private static int JVMTI_JAVA_LANG_THREAD_STATE_MASK =
+		JVMTI_THREAD_STATE_TERMINATED |
+		JVMTI_THREAD_STATE_ALIVE |
+		JVMTI_THREAD_STATE_RUNNABLE |
+		JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER |
+		JVMTI_THREAD_STATE_WAITING |
+		JVMTI_THREAD_STATE_WAITING_INDEFINITELY |
+		JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT;
+	private static int JVMTI_JAVA_LANG_THREAD_STATE_NEW =
+		0;
+	private static int JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED =
+		JVMTI_THREAD_STATE_TERMINATED;
+	private static int JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE =
+		JVMTI_THREAD_STATE_ALIVE |
+		JVMTI_THREAD_STATE_RUNNABLE;
+	private static int JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED =
+		JVMTI_THREAD_STATE_ALIVE |
+		JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER;
+	private static int JVMTI_JAVA_LANG_THREAD_STATE_WAITING =
+		JVMTI_THREAD_STATE_ALIVE |
+		JVMTI_THREAD_STATE_WAITING |
+		JVMTI_THREAD_STATE_WAITING_INDEFINITELY;
+	private static int JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING =
+		JVMTI_THREAD_STATE_ALIVE |
+		JVMTI_THREAD_STATE_WAITING |
+		JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT;
+
+	public static String getJVMTIStateString(int state)
+	{
+		String retval = "";
+		
+		if (0 == state) {
+			return "<new or terminated> ";
+		}
+		
+		if ((state & JVMTI_THREAD_STATE_ALIVE) == JVMTI_THREAD_STATE_ALIVE) {
+			retval += "ALIVE ";
+		}
+		if ((state & JVMTI_THREAD_STATE_TERMINATED) == JVMTI_THREAD_STATE_TERMINATED) {
+			retval += "TERMINATED ";
+		}
+		if ((state & JVMTI_THREAD_STATE_RUNNABLE) == JVMTI_THREAD_STATE_RUNNABLE) {
+			retval += "RUNNABLE ";
+		}
+		if ((state & JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) == JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) {
+			retval += "BLOCKED_ON_MONITOR_ENTER ";
+		}
+		if ((state & JVMTI_THREAD_STATE_WAITING) == JVMTI_THREAD_STATE_WAITING) {
+			retval += "WAITING ";
+		}
+		if ((state & JVMTI_THREAD_STATE_WAITING_INDEFINITELY) == JVMTI_THREAD_STATE_WAITING_INDEFINITELY) {
+			retval += "WAITING_INDEFINITELY ";
+		}
+		if ((state & JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) == JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) {
+			retval += "WAITING_WITH_TIMEOUT ";
+		}
+		if ((state & JVMTI_THREAD_STATE_SLEEPING) == JVMTI_THREAD_STATE_SLEEPING) {
+			retval += "SLEEPING ";
+		}
+		if ((state & JVMTI_THREAD_STATE_IN_OBJECT_WAIT) == JVMTI_THREAD_STATE_IN_OBJECT_WAIT) {
+			retval += "IN_OBJECT_WAIT ";
+		}
+		if ((state & JVMTI_THREAD_STATE_PARKED) == JVMTI_THREAD_STATE_PARKED) {
+			retval += "PARKED ";
+		}
+		if ((state & JVMTI_THREAD_STATE_SUSPENDED) == JVMTI_THREAD_STATE_SUSPENDED) {
+			retval += "SUSPENDED ";
+		}
+		if ((state & JVMTI_THREAD_STATE_INTERRUPTED) == JVMTI_THREAD_STATE_INTERRUPTED) {
+			retval += "INTERRUPTED ";
+		}
+		if ((state & JVMTI_THREAD_STATE_IN_NATIVE) == JVMTI_THREAD_STATE_IN_NATIVE) {
+			retval += "IN_NATIVE ";
+		}
+		if ((state & JVMTI_THREAD_STATE_VENDOR_1) == JVMTI_THREAD_STATE_VENDOR_1) {
+			retval += "VENDOR_1 ";
+		}
+		if ((state & JVMTI_THREAD_STATE_VENDOR_2) == JVMTI_THREAD_STATE_VENDOR_2) {
+			retval += "VENDOR_2 ";
+		}
+		if ((state & JVMTI_THREAD_STATE_VENDOR_3) == JVMTI_THREAD_STATE_VENDOR_3) {
+			retval += "VENDOR_3 ";
+		}
+		
+		if (retval.equals("")) {
+			retval = "<no matching state> ";
+		}
+		
+		return retval;
+	}
+	
+	public static String getThreadStateString(int state)
+	{
+		String retval = "";
+		
+		state &= JVMTI_JAVA_LANG_THREAD_STATE_MASK;
+		
+		if (state ==  JVMTI_JAVA_LANG_THREAD_STATE_NEW) {
+			return "NEW ";
+		}
+		if ((state & JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED) == JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED) {
+			retval += "TERMINATED ";
+		}
+		if ((state & JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE) == JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE) {
+			retval += "RUNNABLE ";
+		}
+		if ((state & JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED) == JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED) {
+			retval += "BLOCKED ";
+		}
+		if ((state & JVMTI_JAVA_LANG_THREAD_STATE_WAITING) == JVMTI_JAVA_LANG_THREAD_STATE_WAITING) {
+			retval += "WAITING ";
+		}
+		if ((state & JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING) == JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING) {
+			retval += "TIMED_WAITING ";
+		}
+		
+		if (retval.equals("")) {
+			retval = "<no matching state> ";
+		}
+		
+		return retval;
+	}
+}

Propchange: incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/StateToString.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/ThreadData.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/ThreadData.java?rev=883384&r1=883383&r2=883384&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/ThreadData.java (original)
+++ incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/ThreadData.java Mon Nov 23 15:53:48 2009
@@ -1,36 +1,36 @@
-/*******************************************************************************
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.apache.kato.katoview.commands.helpers;
-
-import javax.tools.diagnostics.runtime.java.JavaRuntime;
-import javax.tools.diagnostics.runtime.java.JavaThread;
-
-public class ThreadData {
-	
-	private JavaThread jt;
-	private JavaRuntime jr;
-
-	public ThreadData(JavaThread _jt, JavaRuntime _jr) {
-		jt = _jt;
-		jr = _jr;
-	}
-	
-	public JavaThread getThread() {
-		return jt;
-	}
-	
-	public JavaRuntime getRuntime() {
-		return jr;
-	}
-}
+/*******************************************************************************
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+package org.apache.kato.katoview.commands.helpers;
+
+import javax.tools.diagnostics.runtime.java.JavaRuntime;
+import javax.tools.diagnostics.runtime.java.JavaThread;
+
+public class ThreadData {
+	
+	private JavaThread jt;
+	private JavaRuntime jr;
+
+	public ThreadData(JavaThread _jt, JavaRuntime _jr) {
+		jt = _jt;
+		jr = _jr;
+	}
+	
+	public JavaThread getThread() {
+		return jt;
+	}
+	
+	public JavaRuntime getRuntime() {
+		return jr;
+	}
+}

Propchange: incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/ThreadData.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/Utils.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/Utils.java?rev=883384&r1=883383&r2=883384&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/Utils.java (original)
+++ incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/Utils.java Mon Nov 23 15:53:48 2009
@@ -1,820 +1,820 @@
-/*******************************************************************************
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.apache.kato.katoview.commands.helpers;
-
-import java.util.HashMap;
-import java.io.File;
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.Vector;
-import java.util.Stack;
-import java.util.Hashtable;
-import java.util.StringTokenizer;
-import java.lang.reflect.Modifier;
-
-import javax.tools.diagnostics.image.CorruptData;
-import javax.tools.diagnostics.image.CorruptDataException;
-import javax.tools.diagnostics.image.Image;
-import javax.tools.diagnostics.image.ImageAddressSpace;
-import javax.tools.diagnostics.image.ImageProcess;
-import javax.tools.diagnostics.image.MemoryAccessException;
-import javax.tools.diagnostics.runtime.ManagedRuntime;
-import javax.tools.diagnostics.runtime.java.JavaClass;
-import javax.tools.diagnostics.runtime.java.JavaClassLoader;
-import javax.tools.diagnostics.runtime.java.JavaField;
-import javax.tools.diagnostics.runtime.java.JavaObject;
-import javax.tools.diagnostics.runtime.java.JavaRuntime;
-
-import org.apache.kato.katoview.Output;
-
-
-public class Utils {
-
-	public static final String byteToAscii =
-		  "................" +
-		  "................" +
-		  " !\"#$%&'()*+'-./" +
-		  "0123456789:;<=>?" +
-		  "@ABCDEFGHIJKLMNO" +
-		  "PQRSTUVWXYZ[\\]^_"+
-		  "`abcdefghijklmno" +
-		  "pqrstuvwxyz{|}~." +
-		  "................" +
-		  "................" +
-		  "................" +
-		  "................" +
-		  "................" +
-		  "................" +
-		  "................" +
-		  "................"
-		 ;
-	
-	//List of keys used by HashMap object associated with each session 
-	public static final String CURRENT_MEM_ADDRESS = "currentMemPtrAddress";
-	public static final String CURRENT_NUM_BYTES_TO_PRINT = "currentNumBytes";
-	public static final String RootCommand_OBJECT = "RootCommandObject";
-	public static final String FIND_ATTRIBUTES = "FindAttributes";
-	
-	public static Iterator getRuntimes(Image loadedImage)
-	{
-		Vector runtimes = new Vector();
-		Iterator itAddressSpace;
-		Iterator itProcess;
-		Iterator itRuntime;
-		ManagedRuntime mr;
-		ImageAddressSpace ias;
-		ImageProcess ip;
-		
-		itAddressSpace = loadedImage.getAddressSpaces().iterator();
-		while (itAddressSpace.hasNext()) {
-			ias = (ImageAddressSpace)itAddressSpace.next();
-			itProcess = ias.getProcesses().iterator();
-			while (itProcess.hasNext())
-			{
-				ip = (ImageProcess)itProcess.next();
-				itRuntime = ip.getRuntimes().iterator();
-				while (itRuntime.hasNext()) {
-					// this iterator can contain ManagedRuntime or CorruptData objects
-					Object next = itRuntime.next();
-					if (next instanceof CorruptData) {
-						continue; // skip any CorruptData objects
-					} else {
-						mr = (ManagedRuntime)next;
-						if (!runtimes.contains(mr))
-							runtimes.add(mr);
-					}
-				}
-			}
-		}
-		return runtimes.iterator();
-	}
-	
-	public static String toHex(long l)
-	{
-		return "0x" + Long.toHexString(l);
-	}
-	
-	public static String toHex(int i)
-	{
-		return "0x" + Integer.toHexString(i);
-	}
-	
-	public static String toHex(short s)
-	{
-		// bit-wise AND is done to cancel the sign-extension that int casting does;
-		//  if a short's value is -1, its hex representation is 0xffff, which will be
-		//  sign-extended to 0xffffffff when cast to an int, but we want to know the hex
-		//  representation before the short is cast to an int, which the bit-wise AND does
-		return "0x" + Integer.toHexString(s & 0x0000ffff);
-	}
-	
-	public static String toHex(byte b)
-	{
-		// bit-wise AND is done to cancel the sign-extension that int casting does;
-		//  if a byte's value is -1, its hex representation is 0xff, which will be
-		//  sign-extended to 0xffffffff when cast to an int, but we want to know the hex
-		//  representation before the byte is cast to an int, which the bit-wise AND does
-		return "0x" + Integer.toHexString(b & 0x000000ff);
-	}
-	
-	public static String toFixedWidthHex(long l)
-	{
-		return Utils.padWithZeroes(Long.toHexString(l), 16);
-	}
-	
-	public static String toFixedWidthHex(int i)
-	{
-		return Utils.padWithZeroes(Integer.toHexString(i), 8);
-	}
-	
-	public static String toFixedWidthHex(short s)
-	{
-		// bit-wise AND is done to cancel the sign-extension that int casting does;
-		//  if a short's value is -1, its hex representation is 0xffff, which will be
-		//  sign-extended to 0xffffffff when cast to an int, but we want to know the hex
-		//  representation before the short is cast to an int, which the bit-wise AND does
-		return Utils.padWithZeroes(Integer.toHexString(s & 0x0000ffff), 4);
-	}
-	
-	public static String toFixedWidthHex(byte b)
-	{
-		// bit-wise AND is done to cancel the sign-extension that int casting does;
-		//  if a byte's value is -1, its hex representation is 0xff, which will be
-		//  sign-extended to 0xffffffff when cast to an int, but we want to know the hex
-		//  representation before the byte is cast to an int, which the bit-wise AND does
-		return Utils.padWithZeroes(Integer.toHexString(b & 0x000000ff), 2);
-	}
-	
-	public static Stack constructStackFromString(String args)
-	{
-		String[] argsArray = args.split("\\s+");
-		return constructStackFromStringArray(argsArray);
-	}
-	
-	public static Stack constructStackFromStringArray(String[] argsArray){
-		Stack s = new Stack();
-		for (int i = argsArray.length - 1; i >= 0; i--){
-			s.push(argsArray[i]);
-		}
-		return s;
-	}
-	
-	public static String concatArgsFromStack(Stack args){
-		String s = "";
-		while(!args.empty()){
-			s = s.concat((String)args.pop());
-		}
-		return s;
-	}
-	
-	public static ImageAddressSpace _extractAddressSpace(Image loadedImage)
-	{
-		ImageAddressSpace space = null;
-		Iterator spaces = loadedImage.getAddressSpaces().iterator();
-		
-		while ((null == space) && (spaces.hasNext())) {
-			space = (ImageAddressSpace) spaces.next();
-		}
-		return space;
-	}
-	
-	public static Long longFromString(String value)
-	{
-		Long translated = null;
-		
-		if (null != value) {
-			if (value.startsWith("0x")) {
-				value = value.substring(2);
-			}
-			try {
-				translated = new Long(Long.parseLong(value, 16));
-			} catch (NumberFormatException e) {
-				translated = null;
-			}
-		}
-		return translated;
-	}
-	
-	public static Long longFromStringWithPrefix(String value)
-	{
-		Long translated = null;
-		
-		if (value.startsWith("0x"))
-		{
-			translated = longFromString(value);
-		}
-		
-		return translated;
-	}
-	
-	public static String getSignatureName(String signature)
-	{
-		Hashtable table = new Hashtable();
-		String retval = null;
-		
-		table.put("Z", "boolean");
-		table.put("B", "byte");
-		table.put("C", "char");
-		table.put("S", "short");
-		table.put("I", "int");
-		table.put("J", "long");
-		table.put("F", "float");
-		table.put("D", "double");
-		table.put("V", "void");
-		
-		if (signature.startsWith("L"))
-		{
-			StringTokenizer st = new StringTokenizer(signature.substring(1), ";");
-			String className;
-			if (st.hasMoreTokens()) {
-				className = st.nextToken();
-				if (className.startsWith("java/lang/"))
-				{
-					className = className.substring(10);
-				}
-				retval = className.replaceAll("/", ".");
-			} else {
-				// nothing or only ";"s after opening "L"
-				return null;
-			}
-		}
-		else if (signature.startsWith("["))
-		{
-			String currSig = new String(signature);
-			String arraySuffix = "";
-			
-			while (currSig.startsWith("["))
-			{
-				arraySuffix += "[]";
-				currSig = currSig.substring(1);
-			}
-			
-			retval = Utils.getSignatureName(currSig) + arraySuffix;
-		}
-		else
-		{
-			retval = (String)table.get(signature.substring(0,1));
-		}
-		
-		return retval;
-	}
-	
-	public static String getMethodSignatureName(String signature)
-	{
-		Hashtable table = new Hashtable();
-		String retval = "";
-		
-		table.put("Z", "boolean");
-		table.put("B", "byte");
-		table.put("C", "char");
-		table.put("S", "short");
-		table.put("I", "int");
-		table.put("J", "long");
-		table.put("F", "float");
-		table.put("D", "double");
-		
-		if (signature.startsWith("("))
-		{
-			StringTokenizer st = new StringTokenizer(signature.substring(1), ")");
-			if (st.hasMoreTokens()) {
-				String parameters = st.nextToken();
-				if (st.hasMoreTokens()) {
-					retval = "(" + Utils.getMethodSignatureName(parameters) + ")";
-				} else {
-					// there is nothing between "(" and ")"
-					retval = "()";
-				}
-			} else {
-				// there is no ")" after opening "("
-				retval = null;
-			}
-		}
-		else if (signature.startsWith("L"))
-		{
-			StringTokenizer st = new StringTokenizer(signature.substring(1), ";");
-			String className;
-			if (st.hasMoreTokens()) {
-				className = st.nextToken();
-				if (className.startsWith("java/lang/"))
-				{
-					className = className.substring(10);
-				}
-				retval = className.replaceAll("/", ".");
-				if (st.hasMoreTokens()) {
-					retval += ", " + Utils.getMethodSignatureName(
-								signature.substring(signature.indexOf(';') + 1)
-							);
-				}
-			} else {
-				// nothing or only ";"s after opening "L"
-				retval = null;
-			}
-		}
-		else if (signature.startsWith("["))
-		{
-			String currSig = new String(signature);
-			String arraySuffix = "";
-			
-			while (currSig.startsWith("["))
-			{
-				arraySuffix += "[]";
-				currSig = currSig.substring(1);
-			}
-			
-			if (currSig.startsWith("L")) {
-				if (currSig.indexOf(';') + 1 == currSig.length()) {
-					retval = Utils.getSignatureName(currSig) + arraySuffix;
-				} else {
-					retval = Utils.getMethodSignatureName(
-							currSig.substring(0, currSig.indexOf(';') + 1)
-						);
-					retval += arraySuffix + ", ";
-					retval += Utils.getMethodSignatureName(
-							currSig.substring(currSig.indexOf(';') + 1)
-						);
-				}
-			} else {
-				if (1 == currSig.length()) {
-					retval = (String)table.get(currSig) + arraySuffix;
-				} else {
-					retval = (String)table.get(currSig.substring(0,1)) + arraySuffix;
-					retval += ", ";
-					retval += Utils.getMethodSignatureName(currSig.substring(1));
-				}
-			}
-		}
-		else
-		{
-			retval = (String)table.get(signature.substring(0,1));
-			if (signature.length() > 1) {
-				retval += ", " + Utils.getMethodSignatureName(signature.substring(1));
-			}
-		}
-		
-		return retval;
-	}
-	
-	public static String getReturnValueName(String signature)
-	{
-		if (signature.startsWith("("))
-		{
-			StringTokenizer st = new StringTokenizer(signature, ")");
-			if (st.hasMoreTokens()) {
-				st.nextToken();	// we don't care what's inside the brackets
-				if (st.hasMoreTokens()) {
-					String retval = st.nextToken();
-					if (st.hasMoreTokens()) {
-						// there is more than one ")"; that's one too many
-						return null;
-					} else {
-						return Utils.getSignatureName(retval);
-					}
-				} else {
-					// there is no ")" after opening "(" or the ")" is followed by nothing
-					return null;
-				}
-			}
-			else {
-				// nothing after opening "("
-				return null;
-			}
-		}
-		else
-		{
-			return null;
-		}
-	}
-	
-	public static String toString(String s)
-	{
-		if (null == s)
-			return "null";
-		else
-			return s;
-	}
-	
-	public static File absPath(HashMap properties, String path)
-	{
-		File oldPwd = (File)properties.get("pwd");
-		File newPwd = new File(path);
-
-		if (!newPwd.isAbsolute())
-			newPwd = new File(oldPwd, path);
-
-		try {
-			newPwd = newPwd.getCanonicalFile();
-		} catch (IOException e) {
-		
-		}
-		
-		return newPwd;
-	}
-	
-	public static String getVal(Object o)
-	{
-		return Utils.getVal(o, null);
-	}
-	
-/*	public static String getVal(JavaObject jo, JavaRuntime jr)
-	{
-		//try {
-		//	return "\t   object name: " + jo.getJavaClass().getName() + "\n";
-		//} catch (CorruptDataException e) {
-		//	return "\t   bad name \n";
-		//}
-		
-		//JavaField
-		return Utils.getVal(jo, Utils.getField(jo, jr));
-	}
-*/
-
-	// note: this method lets you pass in a null JavaObject, but it _will_ throw a
-	//  NullPointerException if the JavaField is not a static field when you pass it
-	//  a null JavaObject; this is the behavior of jf.get() and jf.getString()
-	public static String getVal(JavaObject jo, JavaField jf)
-	{
-		Object o;
-		String s;
-		
-		if (null == jf)
-		{
-			o = jo;
-			s = null;
-		}
-		else {
-			try {
-				o = jf.get(jo);
-			} catch (CorruptDataException e) {
-				o = null; // FIXME
-			} catch (MemoryAccessException d) {
-				o = null; // FIXME
-			} catch (NumberFormatException nfe) {
-				//out.print("<nfe>");
-				// FIXME
-				o = null;
-			}
-			
-			try {
-				s = jf.getString(jo);
-			} catch (CorruptDataException e) {
-				s = null;
-			} catch (MemoryAccessException e) {
-				s = null;
-			} catch (IllegalArgumentException e) {
-				s = null;
-			}
-		}
-		
-		return getVal(o, s);
-	}
-	
-	public static String getVal(Object o, String str)
-	{
-		String val = "";
-		Long value = null;
-		boolean object = false;
-
-		if (null == o)
-		{
-			val += "null";
-		}
-		else
-		{
-			if (o instanceof Boolean) {
-				val += ((Boolean)o).toString();
-			} else if (o instanceof Byte) {
-				byte b = ((Byte)o).byteValue();
-				val += String.valueOf(b);
-				value = new Long((new Byte(b)).longValue());
-			} else if (o instanceof Character) {
-				char c = ((Character)o).charValue();
-				val += Utils.getPrintableWithQuotes(c);
-				value = new Long((new Integer((int)c).longValue()));
-			} else if (o instanceof Double) {
-				double d = ((Double)o).doubleValue();
-				val += String.valueOf(d);
-				value = new Long(Double.doubleToRawLongBits(d));
-			} else if (o instanceof Float) {
-				float f = ((Float)o).floatValue();
-				val += String.valueOf(f);
-				value = new Long(Float.floatToRawIntBits(f));
-			} else if (o instanceof Integer) {
-				int i = ((Integer)o).intValue();
-				val += String.valueOf(i);
-				value = new Long((new Integer(i)).longValue());
-			} else if (o instanceof Long) {
-				long l = ((Long)o).longValue();
-				val += String.valueOf(l);
-				value = new Long(l);
-			} else if (o instanceof Short) {
-				short s = ((Short)o).shortValue();
-				val += String.valueOf(s);
-				value = new Long((new Short(s)).longValue());
-			} else if (o instanceof String) {
-				val += (String)o;
-			} else if (o instanceof JavaObject) {
-				if (Utils.isNull((JavaObject)o)) {
-					val += "null";
-				} else {
-					object = true;
-				}
-			} else {
-				// FIXME
-			}
-			
-			// why are we processing objects here?
-			//  because we want control over the exceptions that are thrown
-			if (object)
-			{
-				JavaObject joField = (JavaObject)o;
-				JavaClass jcField;
-				String jcName;
-				
-				try {
-					jcField = joField.getJavaClass();
-				} catch (CorruptDataException e) {
-					jcField = null;
-				}
-				
-				try {
-					if (null != jcField) {
-						jcName = jcField.getName();
-					} else {
-						jcName = null;
-					}
-				} catch (CorruptDataException e) {
-					jcName = null;
-				}
-				
-				if (null != jcName && jcName.equals("java/lang/String"))
-				{
-					if (null == str) {
-						val += getStringVal(joField);
-					} else {
-						val += "\"" + Utils.getPrintable(str) + "\"";
-					}
-				}
-				else
-				{
-					val += "<object>";
-				}
-				
-				val += " @ ";
-				val += Utils.toHex(joField.getID().getAddress());
-			}
-		}
-		
-		if (null != value)
-		{
-			val += " (";
-			val += Utils.toHex(value.longValue());
-			val += ")";
-		}
-		
-		return val;
-	}
-	
-	private static String getStringVal(JavaObject jo)
-	{
-		JavaClass jc;
-		
-		try {
-			jc = jo.getJavaClass();
-		} catch (CorruptDataException e) {
-			return "<cannot get String class from String object (" +
-				Exceptions.getCorruptDataExceptionString() + ")>";
-		}
-		
-		Iterator itJavaField = jc.getDeclaredFields().iterator();
-		JavaField jf = null;
-		while (itJavaField.hasNext())
-		{
-			jf = (JavaField)itJavaField.next();
-			try {
-				if (jf.getSignature().equals("[C") && !Modifier.isStatic(jf.getModifiers()))
-					break;
-			} catch (CorruptDataException e) {
-				// if we have an exception, do nothing and go onto the next field 
-			}
-		}
-		
-		JavaObject charArray = null;
-		try {
-			charArray = (JavaObject)jf.get(jo);
-		} catch (CorruptDataException e) {
-			return "<cannot get char array out of String (" +
-				Exceptions.getCorruptDataExceptionString() + ")>";
-		} catch (MemoryAccessException e) {
-			return "<cannot get char array out of String (" +
-				Exceptions.getMemoryAccessExceptionString() + ")>";
-		}
-		
-		int arraySize;
-		try {
-			arraySize = charArray.getArraySize();
-		} catch (CorruptDataException e) {
-			return "<cannot determine the size of the array (" +
-					Exceptions.getCorruptDataExceptionString() + ")>";
-		}
-		
-		char[] dst = new char[arraySize];
-		
-		try {
-			charArray.arraycopy(0, dst, 0, arraySize);
-		} catch (CorruptDataException e) {
-			return "<cannot copy data from the array (" +
-				Exceptions.getCorruptDataExceptionString() + ")>";
-		} catch (MemoryAccessException e) {
-			return "<cannot copy data from the array (" +
-				Exceptions.getMemoryAccessExceptionString() + ")>";
-		}
-		
-		return "\"" + Utils.getPrintable(new String(dst)) + "\"";
-	}
-	
-	public static String getPrintable(char c)
-	{
-		// for a good set of test cases for this code, try using it to print the
-		//  static char arrays of the String class; the memory addresses of these arrays
-		//  can be found by using the command "x/j java/lang/String" and looking at the
-		//  static fields printed at the top of the output
-		
-		switch (c)
-		{
-		// the following 8 cases were taken from Section 3.10.6 of the
-		//  Java Language Specification (2nd Edition), which can be found at
-		//  http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#101089
-		case '\b':
-			return "\\b";
-		case '\t':
-			return "\\t";
-		case '\n':
-			return "\\n";
-		case '\f':
-			return "\\f";
-		case '\r':
-			return "\\r";
-		case '\"':
-			return "\\\"";
-		case '\'':
-			return "\\'";
-		case '\\':
-			return "\\\\";
-		default:
-			int i = (int)c;
-			if (i <= 255) {
-				if (i >= 32 && i <= 126) {
-					// if the character is easily printable (has an integer value between
-					//  32 and 126), then just print it
-					// note: this was determined by looking at http://www.lookuptables.com/
-					return String.valueOf(c);
-				} else {
-					// if the character is not easily printable, print an octal escape;
-					//  this is done according to the Section 3.10.6 of the Java
-					//  Language Specification (see above for reference)
-					return "\\" + Utils.padWithZeroes(Integer.toOctalString(i), 3);
-				}
-			} else {
-				// if we have a character that is not between Unicode values
-				//  \u0000 and \u00ff, then print an escaped form of its Unicode value;
-				//  the format was determined from Section 3.3 of the
-				//  Java Language Specification (2nd Edition), which can be found at
-				//  http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#100850
-				return "\\u" + Utils.padWithZeroes(Integer.toHexString(i), 4);
-			}
-		}
-	}
-	
-	public static String getPrintableWithQuotes(char c)
-	{
-		return "\'" + Utils.getPrintable(c) + "\'";
-	}
-	
-	public static String getPrintable(String s)
-	{
-		String retval = "";
-		
-		for (int i = 0; i < s.length(); i++)
-		{
-			retval += Utils.getPrintable(s.charAt(i));
-		}
-		
-		return retval;
-	}
-	
-	public static String padWithZeroes(String unpadded, int desiredLength)
-	{
-		String output = new String(unpadded);
-		for (int i = unpadded.length(); i < desiredLength; i++)
-		{
-			output = "0" + output;
-		}
-		return output;
-	}
-
-	public static Iterator getAddressSapceSectionInfo(Image loadedImage){
-		Iterator itAddressSpace = loadedImage.getAddressSpaces().iterator();
-		Vector vSections = new Vector();
-		while(itAddressSpace.hasNext()){
-			ImageAddressSpace imageAddressSpace = (ImageAddressSpace)itAddressSpace.next();
-			Iterator iSections = imageAddressSpace.getImageSections().iterator();
-			while(iSections.hasNext()){
-				vSections.add(iSections.next());
-			}
-		}
-		return vSections.iterator();
-	}
-	
-	public static String getModifierString(int modifiers){
-		String retval = "";
-		if(Modifier.isPublic(modifiers)) retval += "public ";
-		if(Modifier.isPrivate(modifiers)) retval += "private ";
-		if(Modifier.isProtected(modifiers))  retval += "protected ";
-		if(Modifier.isStatic(modifiers)) retval += "static ";
-		if(Modifier.isAbstract(modifiers)) retval += "abstract ";
-		if(Modifier.isFinal(modifiers)) retval += "final ";
-		if(Modifier.isSynchronized(modifiers)) retval += "synchronized ";
-		if(Modifier.isVolatile(modifiers)) retval += "volatile ";
-		if(Modifier.isTransient(modifiers)) retval += "transient ";
-		if(Modifier.isNative(modifiers)) retval += "native ";
-		if(Modifier.isInterface(modifiers)) retval += "interface ";
-		if(Modifier.isStrict(modifiers)) retval += "strict ";
-		return retval;
-	}
-	
-	public static boolean isNull(JavaObject jo)
-	{
-		return jo.getID().getAddress() == 0;
-	}
-	
-	public static String padWithSpaces(String unpadded, int desiredLength)
-	{
-		String output = new String(unpadded);
-		for (int i = unpadded.length(); i < desiredLength; i++)
-		{
-			output += " ";
-		}
-		return output;
-	}
-	
-	public static String prePadWithSpaces(String unpadded, int desiredLength)
-	{
-		String output = "";
-		for (int i = unpadded.length(); i < desiredLength; i++)
-		{
-			output += " ";
-		}
-		output += unpadded;
-		return output;
-	}
-	
-	public static JavaClass getClassGivenName(String className, JavaRuntime jr, Output out)
-	{
-		Iterator itJavaClassLoader = jr.getJavaClassLoaders().iterator();
-		boolean found = false;
-		JavaClass jc = null;
-		
-		while (itJavaClassLoader.hasNext() && !found)
-		{
-			JavaClassLoader jcl = (JavaClassLoader)itJavaClassLoader.next();
-			Iterator itJavaClass = jcl.getDefinedClasses().iterator();
-			while (itJavaClass.hasNext() && !found)
-			{
-				jc = (JavaClass)itJavaClass.next();
-				String currClassName;
-
-				try {
-					currClassName = jc.getName();
-				} catch (CorruptDataException e) {
-					out.print("\t  <error getting class name while traversing classes: ");
-					out.print(Exceptions.getCorruptDataExceptionString());
-					out.print(">\n");
-					currClassName = null;
-					continue;
-				}
-				
-				if (currClassName.equals(className))
-				{
-					found = true;
-				}
-			}
-		}
-		
-		if (found) {
-			return jc;
-		} else {
-			return null;
-		}
-	}
-}
+/*******************************************************************************
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+package org.apache.kato.katoview.commands.helpers;
+
+import java.util.HashMap;
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Vector;
+import java.util.Stack;
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.lang.reflect.Modifier;
+
+import javax.tools.diagnostics.image.CorruptData;
+import javax.tools.diagnostics.image.CorruptDataException;
+import javax.tools.diagnostics.image.Image;
+import javax.tools.diagnostics.image.ImageAddressSpace;
+import javax.tools.diagnostics.image.ImageProcess;
+import javax.tools.diagnostics.image.MemoryAccessException;
+import javax.tools.diagnostics.runtime.ManagedRuntime;
+import javax.tools.diagnostics.runtime.java.JavaClass;
+import javax.tools.diagnostics.runtime.java.JavaClassLoader;
+import javax.tools.diagnostics.runtime.java.JavaField;
+import javax.tools.diagnostics.runtime.java.JavaObject;
+import javax.tools.diagnostics.runtime.java.JavaRuntime;
+
+import org.apache.kato.katoview.Output;
+
+
+public class Utils {
+
+	public static final String byteToAscii =
+		  "................" +
+		  "................" +
+		  " !\"#$%&'()*+'-./" +
+		  "0123456789:;<=>?" +
+		  "@ABCDEFGHIJKLMNO" +
+		  "PQRSTUVWXYZ[\\]^_"+
+		  "`abcdefghijklmno" +
+		  "pqrstuvwxyz{|}~." +
+		  "................" +
+		  "................" +
+		  "................" +
+		  "................" +
+		  "................" +
+		  "................" +
+		  "................" +
+		  "................"
+		 ;
+	
+	//List of keys used by HashMap object associated with each session 
+	public static final String CURRENT_MEM_ADDRESS = "currentMemPtrAddress";
+	public static final String CURRENT_NUM_BYTES_TO_PRINT = "currentNumBytes";
+	public static final String RootCommand_OBJECT = "RootCommandObject";
+	public static final String FIND_ATTRIBUTES = "FindAttributes";
+	
+	public static Iterator getRuntimes(Image loadedImage)
+	{
+		Vector runtimes = new Vector();
+		Iterator itAddressSpace;
+		Iterator itProcess;
+		Iterator itRuntime;
+		ManagedRuntime mr;
+		ImageAddressSpace ias;
+		ImageProcess ip;
+		
+		itAddressSpace = loadedImage.getAddressSpaces().iterator();
+		while (itAddressSpace.hasNext()) {
+			ias = (ImageAddressSpace)itAddressSpace.next();
+			itProcess = ias.getProcesses().iterator();
+			while (itProcess.hasNext())
+			{
+				ip = (ImageProcess)itProcess.next();
+				itRuntime = ip.getRuntimes().iterator();
+				while (itRuntime.hasNext()) {
+					// this iterator can contain ManagedRuntime or CorruptData objects
+					Object next = itRuntime.next();
+					if (next instanceof CorruptData) {
+						continue; // skip any CorruptData objects
+					} else {
+						mr = (ManagedRuntime)next;
+						if (!runtimes.contains(mr))
+							runtimes.add(mr);
+					}
+				}
+			}
+		}
+		return runtimes.iterator();
+	}
+	
+	public static String toHex(long l)
+	{
+		return "0x" + Long.toHexString(l);
+	}
+	
+	public static String toHex(int i)
+	{
+		return "0x" + Integer.toHexString(i);
+	}
+	
+	public static String toHex(short s)
+	{
+		// bit-wise AND is done to cancel the sign-extension that int casting does;
+		//  if a short's value is -1, its hex representation is 0xffff, which will be
+		//  sign-extended to 0xffffffff when cast to an int, but we want to know the hex
+		//  representation before the short is cast to an int, which the bit-wise AND does
+		return "0x" + Integer.toHexString(s & 0x0000ffff);
+	}
+	
+	public static String toHex(byte b)
+	{
+		// bit-wise AND is done to cancel the sign-extension that int casting does;
+		//  if a byte's value is -1, its hex representation is 0xff, which will be
+		//  sign-extended to 0xffffffff when cast to an int, but we want to know the hex
+		//  representation before the byte is cast to an int, which the bit-wise AND does
+		return "0x" + Integer.toHexString(b & 0x000000ff);
+	}
+	
+	public static String toFixedWidthHex(long l)
+	{
+		return Utils.padWithZeroes(Long.toHexString(l), 16);
+	}
+	
+	public static String toFixedWidthHex(int i)
+	{
+		return Utils.padWithZeroes(Integer.toHexString(i), 8);
+	}
+	
+	public static String toFixedWidthHex(short s)
+	{
+		// bit-wise AND is done to cancel the sign-extension that int casting does;
+		//  if a short's value is -1, its hex representation is 0xffff, which will be
+		//  sign-extended to 0xffffffff when cast to an int, but we want to know the hex
+		//  representation before the short is cast to an int, which the bit-wise AND does
+		return Utils.padWithZeroes(Integer.toHexString(s & 0x0000ffff), 4);
+	}
+	
+	public static String toFixedWidthHex(byte b)
+	{
+		// bit-wise AND is done to cancel the sign-extension that int casting does;
+		//  if a byte's value is -1, its hex representation is 0xff, which will be
+		//  sign-extended to 0xffffffff when cast to an int, but we want to know the hex
+		//  representation before the byte is cast to an int, which the bit-wise AND does
+		return Utils.padWithZeroes(Integer.toHexString(b & 0x000000ff), 2);
+	}
+	
+	public static Stack constructStackFromString(String args)
+	{
+		String[] argsArray = args.split("\\s+");
+		return constructStackFromStringArray(argsArray);
+	}
+	
+	public static Stack constructStackFromStringArray(String[] argsArray){
+		Stack s = new Stack();
+		for (int i = argsArray.length - 1; i >= 0; i--){
+			s.push(argsArray[i]);
+		}
+		return s;
+	}
+	
+	public static String concatArgsFromStack(Stack args){
+		String s = "";
+		while(!args.empty()){
+			s = s.concat((String)args.pop());
+		}
+		return s;
+	}
+	
+	public static ImageAddressSpace _extractAddressSpace(Image loadedImage)
+	{
+		ImageAddressSpace space = null;
+		Iterator spaces = loadedImage.getAddressSpaces().iterator();
+		
+		while ((null == space) && (spaces.hasNext())) {
+			space = (ImageAddressSpace) spaces.next();
+		}
+		return space;
+	}
+	
+	public static Long longFromString(String value)
+	{
+		Long translated = null;
+		
+		if (null != value) {
+			if (value.startsWith("0x")) {
+				value = value.substring(2);
+			}
+			try {
+				translated = new Long(Long.parseLong(value, 16));
+			} catch (NumberFormatException e) {
+				translated = null;
+			}
+		}
+		return translated;
+	}
+	
+	public static Long longFromStringWithPrefix(String value)
+	{
+		Long translated = null;
+		
+		if (value.startsWith("0x"))
+		{
+			translated = longFromString(value);
+		}
+		
+		return translated;
+	}
+	
+	public static String getSignatureName(String signature)
+	{
+		Hashtable table = new Hashtable();
+		String retval = null;
+		
+		table.put("Z", "boolean");
+		table.put("B", "byte");
+		table.put("C", "char");
+		table.put("S", "short");
+		table.put("I", "int");
+		table.put("J", "long");
+		table.put("F", "float");
+		table.put("D", "double");
+		table.put("V", "void");
+		
+		if (signature.startsWith("L"))
+		{
+			StringTokenizer st = new StringTokenizer(signature.substring(1), ";");
+			String className;
+			if (st.hasMoreTokens()) {
+				className = st.nextToken();
+				if (className.startsWith("java/lang/"))
+				{
+					className = className.substring(10);
+				}
+				retval = className.replaceAll("/", ".");
+			} else {
+				// nothing or only ";"s after opening "L"
+				return null;
+			}
+		}
+		else if (signature.startsWith("["))
+		{
+			String currSig = new String(signature);
+			String arraySuffix = "";
+			
+			while (currSig.startsWith("["))
+			{
+				arraySuffix += "[]";
+				currSig = currSig.substring(1);
+			}
+			
+			retval = Utils.getSignatureName(currSig) + arraySuffix;
+		}
+		else
+		{
+			retval = (String)table.get(signature.substring(0,1));
+		}
+		
+		return retval;
+	}
+	
+	public static String getMethodSignatureName(String signature)
+	{
+		Hashtable table = new Hashtable();
+		String retval = "";
+		
+		table.put("Z", "boolean");
+		table.put("B", "byte");
+		table.put("C", "char");
+		table.put("S", "short");
+		table.put("I", "int");
+		table.put("J", "long");
+		table.put("F", "float");
+		table.put("D", "double");
+		
+		if (signature.startsWith("("))
+		{
+			StringTokenizer st = new StringTokenizer(signature.substring(1), ")");
+			if (st.hasMoreTokens()) {
+				String parameters = st.nextToken();
+				if (st.hasMoreTokens()) {
+					retval = "(" + Utils.getMethodSignatureName(parameters) + ")";
+				} else {
+					// there is nothing between "(" and ")"
+					retval = "()";
+				}
+			} else {
+				// there is no ")" after opening "("
+				retval = null;
+			}
+		}
+		else if (signature.startsWith("L"))
+		{
+			StringTokenizer st = new StringTokenizer(signature.substring(1), ";");
+			String className;
+			if (st.hasMoreTokens()) {
+				className = st.nextToken();
+				if (className.startsWith("java/lang/"))
+				{
+					className = className.substring(10);
+				}
+				retval = className.replaceAll("/", ".");
+				if (st.hasMoreTokens()) {
+					retval += ", " + Utils.getMethodSignatureName(
+								signature.substring(signature.indexOf(';') + 1)
+							);
+				}
+			} else {
+				// nothing or only ";"s after opening "L"
+				retval = null;
+			}
+		}
+		else if (signature.startsWith("["))
+		{
+			String currSig = new String(signature);
+			String arraySuffix = "";
+			
+			while (currSig.startsWith("["))
+			{
+				arraySuffix += "[]";
+				currSig = currSig.substring(1);
+			}
+			
+			if (currSig.startsWith("L")) {
+				if (currSig.indexOf(';') + 1 == currSig.length()) {
+					retval = Utils.getSignatureName(currSig) + arraySuffix;
+				} else {
+					retval = Utils.getMethodSignatureName(
+							currSig.substring(0, currSig.indexOf(';') + 1)
+						);
+					retval += arraySuffix + ", ";
+					retval += Utils.getMethodSignatureName(
+							currSig.substring(currSig.indexOf(';') + 1)
+						);
+				}
+			} else {
+				if (1 == currSig.length()) {
+					retval = (String)table.get(currSig) + arraySuffix;
+				} else {
+					retval = (String)table.get(currSig.substring(0,1)) + arraySuffix;
+					retval += ", ";
+					retval += Utils.getMethodSignatureName(currSig.substring(1));
+				}
+			}
+		}
+		else
+		{
+			retval = (String)table.get(signature.substring(0,1));
+			if (signature.length() > 1) {
+				retval += ", " + Utils.getMethodSignatureName(signature.substring(1));
+			}
+		}
+		
+		return retval;
+	}
+	
+	public static String getReturnValueName(String signature)
+	{
+		if (signature.startsWith("("))
+		{
+			StringTokenizer st = new StringTokenizer(signature, ")");
+			if (st.hasMoreTokens()) {
+				st.nextToken();	// we don't care what's inside the brackets
+				if (st.hasMoreTokens()) {
+					String retval = st.nextToken();
+					if (st.hasMoreTokens()) {
+						// there is more than one ")"; that's one too many
+						return null;
+					} else {
+						return Utils.getSignatureName(retval);
+					}
+				} else {
+					// there is no ")" after opening "(" or the ")" is followed by nothing
+					return null;
+				}
+			}
+			else {
+				// nothing after opening "("
+				return null;
+			}
+		}
+		else
+		{
+			return null;
+		}
+	}
+	
+	public static String toString(String s)
+	{
+		if (null == s)
+			return "null";
+		else
+			return s;
+	}
+	
+	public static File absPath(HashMap properties, String path)
+	{
+		File oldPwd = (File)properties.get("pwd");
+		File newPwd = new File(path);
+
+		if (!newPwd.isAbsolute())
+			newPwd = new File(oldPwd, path);
+
+		try {
+			newPwd = newPwd.getCanonicalFile();
+		} catch (IOException e) {
+		
+		}
+		
+		return newPwd;
+	}
+	
+	public static String getVal(Object o)
+	{
+		return Utils.getVal(o, null);
+	}
+	
+/*	public static String getVal(JavaObject jo, JavaRuntime jr)
+	{
+		//try {
+		//	return "\t   object name: " + jo.getJavaClass().getName() + "\n";
+		//} catch (CorruptDataException e) {
+		//	return "\t   bad name \n";
+		//}
+		
+		//JavaField
+		return Utils.getVal(jo, Utils.getField(jo, jr));
+	}
+*/
+
+	// note: this method lets you pass in a null JavaObject, but it _will_ throw a
+	//  NullPointerException if the JavaField is not a static field when you pass it
+	//  a null JavaObject; this is the behavior of jf.get() and jf.getString()
+	public static String getVal(JavaObject jo, JavaField jf)
+	{
+		Object o;
+		String s;
+		
+		if (null == jf)
+		{
+			o = jo;
+			s = null;
+		}
+		else {
+			try {
+				o = jf.get(jo);
+			} catch (CorruptDataException e) {
+				o = null; // FIXME
+			} catch (MemoryAccessException d) {
+				o = null; // FIXME
+			} catch (NumberFormatException nfe) {
+				//out.print("<nfe>");
+				// FIXME
+				o = null;
+			}
+			
+			try {
+				s = jf.getString(jo);
+			} catch (CorruptDataException e) {
+				s = null;
+			} catch (MemoryAccessException e) {
+				s = null;
+			} catch (IllegalArgumentException e) {
+				s = null;
+			}
+		}
+		
+		return getVal(o, s);
+	}
+	
+	public static String getVal(Object o, String str)
+	{
+		String val = "";
+		Long value = null;
+		boolean object = false;
+
+		if (null == o)
+		{
+			val += "null";
+		}
+		else
+		{
+			if (o instanceof Boolean) {
+				val += ((Boolean)o).toString();
+			} else if (o instanceof Byte) {
+				byte b = ((Byte)o).byteValue();
+				val += String.valueOf(b);
+				value = new Long((new Byte(b)).longValue());
+			} else if (o instanceof Character) {
+				char c = ((Character)o).charValue();
+				val += Utils.getPrintableWithQuotes(c);
+				value = new Long((new Integer((int)c).longValue()));
+			} else if (o instanceof Double) {
+				double d = ((Double)o).doubleValue();
+				val += String.valueOf(d);
+				value = new Long(Double.doubleToRawLongBits(d));
+			} else if (o instanceof Float) {
+				float f = ((Float)o).floatValue();
+				val += String.valueOf(f);
+				value = new Long(Float.floatToRawIntBits(f));
+			} else if (o instanceof Integer) {
+				int i = ((Integer)o).intValue();
+				val += String.valueOf(i);
+				value = new Long((new Integer(i)).longValue());
+			} else if (o instanceof Long) {
+				long l = ((Long)o).longValue();
+				val += String.valueOf(l);
+				value = new Long(l);
+			} else if (o instanceof Short) {
+				short s = ((Short)o).shortValue();
+				val += String.valueOf(s);
+				value = new Long((new Short(s)).longValue());
+			} else if (o instanceof String) {
+				val += (String)o;
+			} else if (o instanceof JavaObject) {
+				if (Utils.isNull((JavaObject)o)) {
+					val += "null";
+				} else {
+					object = true;
+				}
+			} else {
+				// FIXME
+			}
+			
+			// why are we processing objects here?
+			//  because we want control over the exceptions that are thrown
+			if (object)
+			{
+				JavaObject joField = (JavaObject)o;
+				JavaClass jcField;
+				String jcName;
+				
+				try {
+					jcField = joField.getJavaClass();
+				} catch (CorruptDataException e) {
+					jcField = null;
+				}
+				
+				try {
+					if (null != jcField) {
+						jcName = jcField.getName();
+					} else {
+						jcName = null;
+					}
+				} catch (CorruptDataException e) {
+					jcName = null;
+				}
+				
+				if (null != jcName && jcName.equals("java/lang/String"))
+				{
+					if (null == str) {
+						val += getStringVal(joField);
+					} else {
+						val += "\"" + Utils.getPrintable(str) + "\"";
+					}
+				}
+				else
+				{
+					val += "<object>";
+				}
+				
+				val += " @ ";
+				val += Utils.toHex(joField.getID().getAddress());
+			}
+		}
+		
+		if (null != value)
+		{
+			val += " (";
+			val += Utils.toHex(value.longValue());
+			val += ")";
+		}
+		
+		return val;
+	}
+	
+	private static String getStringVal(JavaObject jo)
+	{
+		JavaClass jc;
+		
+		try {
+			jc = jo.getJavaClass();
+		} catch (CorruptDataException e) {
+			return "<cannot get String class from String object (" +
+				Exceptions.getCorruptDataExceptionString() + ")>";
+		}
+		
+		Iterator itJavaField = jc.getDeclaredFields().iterator();
+		JavaField jf = null;
+		while (itJavaField.hasNext())
+		{
+			jf = (JavaField)itJavaField.next();
+			try {
+				if (jf.getSignature().equals("[C") && !Modifier.isStatic(jf.getModifiers()))
+					break;
+			} catch (CorruptDataException e) {
+				// if we have an exception, do nothing and go onto the next field 
+			}
+		}
+		
+		JavaObject charArray = null;
+		try {
+			charArray = (JavaObject)jf.get(jo);
+		} catch (CorruptDataException e) {
+			return "<cannot get char array out of String (" +
+				Exceptions.getCorruptDataExceptionString() + ")>";
+		} catch (MemoryAccessException e) {
+			return "<cannot get char array out of String (" +
+				Exceptions.getMemoryAccessExceptionString() + ")>";
+		}
+		
+		int arraySize;
+		try {
+			arraySize = charArray.getArraySize();
+		} catch (CorruptDataException e) {
+			return "<cannot determine the size of the array (" +
+					Exceptions.getCorruptDataExceptionString() + ")>";
+		}
+		
+		char[] dst = new char[arraySize];
+		
+		try {
+			charArray.arraycopy(0, dst, 0, arraySize);
+		} catch (CorruptDataException e) {
+			return "<cannot copy data from the array (" +
+				Exceptions.getCorruptDataExceptionString() + ")>";
+		} catch (MemoryAccessException e) {
+			return "<cannot copy data from the array (" +
+				Exceptions.getMemoryAccessExceptionString() + ")>";
+		}
+		
+		return "\"" + Utils.getPrintable(new String(dst)) + "\"";
+	}
+	
+	public static String getPrintable(char c)
+	{
+		// for a good set of test cases for this code, try using it to print the
+		//  static char arrays of the String class; the memory addresses of these arrays
+		//  can be found by using the command "x/j java/lang/String" and looking at the
+		//  static fields printed at the top of the output
+		
+		switch (c)
+		{
+		// the following 8 cases were taken from Section 3.10.6 of the
+		//  Java Language Specification (2nd Edition), which can be found at
+		//  http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#101089
+		case '\b':
+			return "\\b";
+		case '\t':
+			return "\\t";
+		case '\n':
+			return "\\n";
+		case '\f':
+			return "\\f";
+		case '\r':
+			return "\\r";
+		case '\"':
+			return "\\\"";
+		case '\'':
+			return "\\'";
+		case '\\':
+			return "\\\\";
+		default:
+			int i = (int)c;
+			if (i <= 255) {
+				if (i >= 32 && i <= 126) {
+					// if the character is easily printable (has an integer value between
+					//  32 and 126), then just print it
+					// note: this was determined by looking at http://www.lookuptables.com/
+					return String.valueOf(c);
+				} else {
+					// if the character is not easily printable, print an octal escape;
+					//  this is done according to the Section 3.10.6 of the Java
+					//  Language Specification (see above for reference)
+					return "\\" + Utils.padWithZeroes(Integer.toOctalString(i), 3);
+				}
+			} else {
+				// if we have a character that is not between Unicode values
+				//  \u0000 and \u00ff, then print an escaped form of its Unicode value;
+				//  the format was determined from Section 3.3 of the
+				//  Java Language Specification (2nd Edition), which can be found at
+				//  http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#100850
+				return "\\u" + Utils.padWithZeroes(Integer.toHexString(i), 4);
+			}
+		}
+	}
+	
+	public static String getPrintableWithQuotes(char c)
+	{
+		return "\'" + Utils.getPrintable(c) + "\'";
+	}
+	
+	public static String getPrintable(String s)
+	{
+		String retval = "";
+		
+		for (int i = 0; i < s.length(); i++)
+		{
+			retval += Utils.getPrintable(s.charAt(i));
+		}
+		
+		return retval;
+	}
+	
+	public static String padWithZeroes(String unpadded, int desiredLength)
+	{
+		String output = new String(unpadded);
+		for (int i = unpadded.length(); i < desiredLength; i++)
+		{
+			output = "0" + output;
+		}
+		return output;
+	}
+
+	public static Iterator getAddressSapceSectionInfo(Image loadedImage){
+		Iterator itAddressSpace = loadedImage.getAddressSpaces().iterator();
+		Vector vSections = new Vector();
+		while(itAddressSpace.hasNext()){
+			ImageAddressSpace imageAddressSpace = (ImageAddressSpace)itAddressSpace.next();
+			Iterator iSections = imageAddressSpace.getImageSections().iterator();
+			while(iSections.hasNext()){
+				vSections.add(iSections.next());
+			}
+		}
+		return vSections.iterator();
+	}
+	
+	public static String getModifierString(int modifiers){
+		String retval = "";
+		if(Modifier.isPublic(modifiers)) retval += "public ";
+		if(Modifier.isPrivate(modifiers)) retval += "private ";
+		if(Modifier.isProtected(modifiers))  retval += "protected ";
+		if(Modifier.isStatic(modifiers)) retval += "static ";
+		if(Modifier.isAbstract(modifiers)) retval += "abstract ";
+		if(Modifier.isFinal(modifiers)) retval += "final ";
+		if(Modifier.isSynchronized(modifiers)) retval += "synchronized ";
+		if(Modifier.isVolatile(modifiers)) retval += "volatile ";
+		if(Modifier.isTransient(modifiers)) retval += "transient ";
+		if(Modifier.isNative(modifiers)) retval += "native ";
+		if(Modifier.isInterface(modifiers)) retval += "interface ";
+		if(Modifier.isStrict(modifiers)) retval += "strict ";
+		return retval;
+	}
+	
+	public static boolean isNull(JavaObject jo)
+	{
+		return jo.getID().getAddress() == 0;
+	}
+	
+	public static String padWithSpaces(String unpadded, int desiredLength)
+	{
+		String output = new String(unpadded);
+		for (int i = unpadded.length(); i < desiredLength; i++)
+		{
+			output += " ";
+		}
+		return output;
+	}
+	
+	public static String prePadWithSpaces(String unpadded, int desiredLength)
+	{
+		String output = "";
+		for (int i = unpadded.length(); i < desiredLength; i++)
+		{
+			output += " ";
+		}
+		output += unpadded;
+		return output;
+	}
+	
+	public static JavaClass getClassGivenName(String className, JavaRuntime jr, Output out)
+	{
+		Iterator itJavaClassLoader = jr.getJavaClassLoaders().iterator();
+		boolean found = false;
+		JavaClass jc = null;
+		
+		while (itJavaClassLoader.hasNext() && !found)
+		{
+			JavaClassLoader jcl = (JavaClassLoader)itJavaClassLoader.next();
+			Iterator itJavaClass = jcl.getDefinedClasses().iterator();
+			while (itJavaClass.hasNext() && !found)
+			{
+				jc = (JavaClass)itJavaClass.next();
+				String currClassName;
+
+				try {
+					currClassName = jc.getName();
+				} catch (CorruptDataException e) {
+					out.print("\t  <error getting class name while traversing classes: ");
+					out.print(Exceptions.getCorruptDataExceptionString());
+					out.print(">\n");
+					currClassName = null;
+					continue;
+				}
+				
+				if (currClassName.equals(className))
+				{
+					found = true;
+				}
+			}
+		}
+		
+		if (found) {
+			return jc;
+		} else {
+			return null;
+		}
+	}
+}

Propchange: incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/helpers/Utils.java
------------------------------------------------------------------------------
    svn:eol-style = native