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 sp...@apache.org on 2009/06/05 19:38:47 UTC

svn commit: r782113 - /incubator/kato/branches/experimental/maven_restructure/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/XPathCommand.java

Author: spoole
Date: Fri Jun  5 19:38:46 2009
New Revision: 782113

URL: http://svn.apache.org/viewvc?rev=782113&view=rev
Log:
updated xpath tool in katoview to be more userfriendly

Modified:
    incubator/kato/branches/experimental/maven_restructure/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/XPathCommand.java

Modified: incubator/kato/branches/experimental/maven_restructure/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/XPathCommand.java
URL: http://svn.apache.org/viewvc/incubator/kato/branches/experimental/maven_restructure/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/XPathCommand.java?rev=782113&r1=782112&r2=782113&view=diff
==============================================================================
--- incubator/kato/branches/experimental/maven_restructure/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/XPathCommand.java (original)
+++ incubator/kato/branches/experimental/maven_restructure/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/XPathCommand.java Fri Jun  5 19:38:46 2009
@@ -19,6 +19,9 @@
 
 import org.apache.commons.jxpath.JXPathContext;
 import org.apache.kato.image.Image;
+import org.apache.kato.image.ImageAddressSpace;
+import org.apache.kato.image.ImageProcess;
+import org.apache.kato.java.JavaRuntime;
 import org.apache.kato.katoview.Output;
 
 /**
@@ -50,6 +53,8 @@
 	public void doCommand(Stack args, Image loadedImage, HashMap properties) {
 		String path = "";				
 		
+		JavaRuntime runtime=null;
+		
 		if (args.size() == 0 || args.size() > 2) {
 			out.println(LONG_DESCRIPTION);
 			return;
@@ -58,7 +63,14 @@
 			
 		} else if (args.size() == 2) {
 			if (args.get(1).equals("runtime")) {
-				path = (String) "addressSpaces/currentProcess/runtimes/"+args.get(0);
+				JavaRuntime rt=getJavaRuntime(loadedImage);
+				if(rt==null) {
+					out.println("Unable to locate Java Runtime");
+					return;
+					
+				}
+				runtime=rt;
+				path = (String) args.get(0);
 			} else {
 				out.println(LONG_DESCRIPTION);
 				return;
@@ -66,8 +78,14 @@
 		}
 		
 		
+		JXPathContext context =null;
+		if(runtime!=null) {
+			context = JXPathContext.newContext(runtime);
+		}
+		else {
+			context=JXPathContext.newContext(loadedImage);
+		}
 		
-		JXPathContext context = JXPathContext.newContext(loadedImage);
 		Iterator values = context.iterate(path);
 
 		int count=1;
@@ -87,4 +105,28 @@
 		}
 	}
 
+	/**
+	 * retrieves first javaruntime from image
+	 * 
+	 * @param loadedImage
+	 * 
+	 * @return
+	 */
+	private JavaRuntime getJavaRuntime(Image loadedImage) {
+		
+		for(Object space:loadedImage.getAddressSpaces()) {
+			if(space instanceof  ImageAddressSpace ) {
+				ImageAddressSpace addr=(ImageAddressSpace) space;
+				ImageProcess process=addr.getCurrentProcess();
+				if(process!=null) {
+					for(Object rt:process.getRuntimes()) {
+						if(rt instanceof JavaRuntime) return (JavaRuntime) rt;
+					}
+				}
+				
+			}
+		}
+		return null;
+	}
+
 }