incubator-kitty-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From james_r_b...@apache.org
Subject svn commit: r1039793 - in /incubator/kitty/trunk/org: ./ apache/ apache/kitty/ apache/kitty/client/ apache/kitty/client/jmxmp/ apache/kitty/client/rmi/ apache/kitty/exceptions/ apache/kitty/test/ apache/kitty/ui/ apache/kitty/utils/
Date Sat, 27 Nov 2010 23:51:21 GMT
Author: james_r_bray
Date: Sat Nov 27 23:51:20 2010
New Revision: 1039793

URL: http://svn.apache.org/viewvc?rev=1039793&view=rev
Log: (empty)

Added:
    incubator/kitty/trunk/org/
    incubator/kitty/trunk/org/apache/
    incubator/kitty/trunk/org/apache/kitty/
    incubator/kitty/trunk/org/apache/kitty/Base.java
    incubator/kitty/trunk/org/apache/kitty/CmdShell.groovy
    incubator/kitty/trunk/org/apache/kitty/Main.groovy
    incubator/kitty/trunk/org/apache/kitty/client/
    incubator/kitty/trunk/org/apache/kitty/client/Client.groovy
    incubator/kitty/trunk/org/apache/kitty/client/jmxmp/
    incubator/kitty/trunk/org/apache/kitty/client/jmxmp/JMXMPClient.groovy
    incubator/kitty/trunk/org/apache/kitty/client/rmi/
    incubator/kitty/trunk/org/apache/kitty/client/rmi/RMIClient.groovy
    incubator/kitty/trunk/org/apache/kitty/exceptions/
    incubator/kitty/trunk/org/apache/kitty/exceptions/DomainIsNoneException.groovy
    incubator/kitty/trunk/org/apache/kitty/exceptions/DomainNotFoundException.groovy
    incubator/kitty/trunk/org/apache/kitty/exceptions/InvokeException.groovy
    incubator/kitty/trunk/org/apache/kitty/exceptions/MBeanAttributeNotFoundException.groovy
    incubator/kitty/trunk/org/apache/kitty/exceptions/MBeanNotFoundException.groovy
    incubator/kitty/trunk/org/apache/kitty/exceptions/OperationNotFoundException.groovy
    incubator/kitty/trunk/org/apache/kitty/exceptions/SetAttributeException.groovy
    incubator/kitty/trunk/org/apache/kitty/test/
    incubator/kitty/trunk/org/apache/kitty/test/ClientTest0.groovy
    incubator/kitty/trunk/org/apache/kitty/test/Test.java
    incubator/kitty/trunk/org/apache/kitty/test/TestGroovyShell.groovy
    incubator/kitty/trunk/org/apache/kitty/test/TestShell.java
    incubator/kitty/trunk/org/apache/kitty/ui/
    incubator/kitty/trunk/org/apache/kitty/ui/Console.groovy
    incubator/kitty/trunk/org/apache/kitty/ui/Dashboard.groovy
    incubator/kitty/trunk/org/apache/kitty/utils/
    incubator/kitty/trunk/org/apache/kitty/utils/Constants.java
    incubator/kitty/trunk/org/apache/kitty/utils/Help.groovy

Added: incubator/kitty/trunk/org/apache/kitty/Base.java
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/Base.java?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/Base.java (added)
+++ incubator/kitty/trunk/org/apache/kitty/Base.java Sat Nov 27 23:51:20 2010
@@ -0,0 +1,5 @@
+package org.apache.kitty;
+
+public interface Base {
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/CmdShell.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/CmdShell.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/CmdShell.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/CmdShell.groovy Sat Nov 27 23:51:20 2010
@@ -0,0 +1,400 @@
+/**
+ * 
+ */
+package org.apache.kitty
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import org.apache.kitty.client.Client;
+import org.apache.kitty.utils.Help;
+import org.apache.kitty.utils.Constants;
+
+/**
+ * <pre>
+ * <b>Description</b>
+ * <p>
+ * This is a command shell class that is used for a command line user interface for the management
console
+ * </p>
+ * </pre>
+ * @author James R. Bray, Jr.
+ *
+ */
+class CmdShell {
+	
+	def static final PROMPT = "kitty>"
+	static String HOST = "localhost"
+	static String PORT = "9024"
+	static Client client
+	def static remote
+	static InputStreamReader inReader;
+	static BufferedReader bReader;
+	static commands = ["help", "connect", "disconnect", "exit", "ls", "echo", "domains", "cd",
"get", "set", "invoke", "pwd", "setdomain"]
+
+	/**
+	 * 
+	 */
+	public CmdShell() {
+		// TODO Auto-generated constructor stub
+	}
+
+
+	static main(args) {
+		startShell()
+	}
+	
+	static startShell()
+	{
+		def input
+		this.inReader = new InputStreamReader(System.in)
+		this.bReader = new BufferedReader(inReader)
+		this.client = new Client()
+		
+		while(!(input.equals("exit")))
+		{
+			print PROMPT
+			input = getUserInput()
+			inputHandler(input)
+		}
+		this.inReader.close()
+		this.bReader.close()
+		
+	}
+	
+	static inputHandler(String input)
+	{
+		Integer index = 0
+		String[] params
+		
+		if(input.contains(" "))
+		{
+			params = input.split(" ")
+			input = params[0]
+		}
+		else
+		{
+			params = {input}
+		}
+		
+		if(this.commands.contains(input))
+		{
+			index = commands.indexOf(input)
+			//println "The index is" + index
+			
+			switch(index)
+			{
+				case 0:
+					cmdHelp()
+					break;
+				case 1:
+					if(params.length > 3)
+					{
+						println "You have entered an invalid number of parameters, you may enter host and port
as parameters only"
+					}
+					if(params.length == 3)
+					{
+						cmdConnect(params[1],params[2])
+					}
+					else
+					{
+						if(params.length == 2)
+						{
+							cmdConnect(params[1])
+						}
+						else
+						{
+							cmdConnect()
+						}
+					}
+					break;
+				case 2:
+					cmdDisconnect()
+					this.remote = null;
+					break;
+				case 3:
+					cmdExit()
+					break;
+				case 4:
+					cmdLs()
+					break;
+				case 5:
+					cmdEcho(params)
+					break;
+				case 6:
+					cmdDomains()
+					break;
+				case 7:
+					if(params.length >= 2)
+					{
+						cmdCd(params[1])
+					}
+					else
+					{
+						println Constants.ERROR_TOO_FEW_PARAMETERS
+						println "You must enter a path parameter after 'cd'"
+					}
+					break;
+				case 8:
+					if(params.length >= 2)
+					{
+						cmdGet(params[1])
+					}
+					else
+					{
+						println Constants.ERROR_TOO_FEW_PARAMETERS
+						println "You must enter at 1 parameter after the command"
+					}
+					break;
+				case 9:
+					if(params.length >= 3)
+					{
+						cmdSet(params[1], params[2])
+					}
+					else
+					{
+						println Constants.ERROR_TOO_FEW_PARAMETERS
+						println "You must enter an attribute parameter and a value parameter"
+					}
+					break;
+				case 10:
+					if(params.length >= 3)
+					{
+						cmdInvoke(params[1],params[2])
+					}
+					else
+					{
+						println Constants.ERROR_TOO_FEW_PARAMETERS
+						println "You must enter an operation name followed by parameter(s)"
+					}
+						
+					break;
+				case 11:
+					cmdPwd()
+					break;
+				case 12:
+					if(params.length >= 2)
+					{
+						cmdSetDomain(params[1])
+					}
+					else
+					{
+						println Constants.ERROR_TOO_FEW_PARAMETERS
+						println "You must enter a domain name parameter after 'setdomain' command"
+					}
+					break;
+				default:
+					break;
+			}
+		}
+		else
+		{
+			println input + " is not a valid command"
+		}
+	}
+	
+	static String getUserInput()
+	{
+		def userInput
+		userInput = bReader.readLine()
+		return userInput;
+	}
+	
+	static cmdHelp()
+	{
+		Help h = new Help()
+		println h.toString()
+	}
+	
+	static cmdConnect()
+	{
+		def _host = this.HOST
+		def _port = this.PORT
+		println "connecting to $_host at port $_port...."
+		this.getClient().connect(this.HOST, this.PORT)
+		if(this.getClient().getRemote())
+		{
+			println "Successfully connected to host"
+			this.remote = this.getClient().getRemote()
+		}
+		else
+		{
+			println "Connection attempt was unsuccessful"
+		}
+		
+	}
+	
+	static cmdConnect(_host)
+	{
+		def _port = this.PORT
+		this.getClient().connect(_host, this.PORT)
+		println "connecting to $_host at port $_port...."
+		if(this.getClient().getRemote())
+		{
+			println "Successfully connected to host"
+			this.remote = this.getClient().getRemote()
+		}
+		else
+		{
+			println "Connection attempt was unsuccessful"
+		}
+		
+	}
+	
+	static cmdConnect(_host, _port)
+	{
+		println "connecting to $_host at port $_port...."
+		this.getClient().connect(_host, _port)
+		if(this.getClient().getRemote())
+		{
+			println "Successfully connected to host"
+			this.remote = this.getClient().getRemote()
+		}
+		else
+		{
+			println "Connection attempt was unsuccessful"
+		}
+		
+	}
+	
+	static cmdDisconnect()
+	{
+		println "disconnecting..."
+		if(client.getRemote())
+		{
+			this.client.disconnect();
+			if(!client.getRemote())
+			{
+				println "successfully disconnected from host"
+			}
+		}
+		else
+		{
+			println "client can not disconnect because it is not connected to a host"
+		}
+		
+	}
+	
+	static cmdExit()
+	{
+		println "exiting..."
+		println "successfully exited kitty"
+	}
+	
+	static cmdLs()
+	{
+		println "listing files and directories..."
+		if(remote)
+		{
+			this.getClient().ls()
+			println "The domain list is:"
+		}
+		else
+		{
+			println Constants.ERROR_NOT_CONNECTED
+		}
+	}
+	
+	static cmdEcho(def input)
+	{
+		if(input.size() > 1)
+		{
+			input.each { print it+" " }
+		}
+		println()
+	}
+	
+	static cmdDomains()
+	{
+		println "getting domains..."
+		def domains = this.getClient().getDomainList()
+		if(domains)
+		{
+			println "A list of domains is available"
+		}
+		else
+		{
+			println "No domains are available"
+		}
+	}
+	
+	static cmdCd(String path)
+	{
+		println "changing remote path..."
+		if(remote)
+		{
+			this.getClient().cd(path)
+		}
+		else
+		{
+			println Constants.ERROR_NOT_CONNECTED
+		}
+	}
+	
+	static cmdGet(def attr)
+	{
+		println "get $attr..."
+		if(remote)
+		{
+			this.getClient().get(attr)
+		}
+		else
+		{
+			println Constants.ERROR_NOT_CONNECTED
+		}
+	}
+	
+	static cmdSet(def attr, def val)
+	{
+		println "set $attr to $val"
+		if(remote)
+		{
+			this.getClient().set(attr, val)
+		}
+		else
+		{
+			println Constants.ERROR_NOT_CONNECTED
+		}
+	}
+	
+	static cmdInvoke(def op, def params)
+	{
+		println "Invoking the following operation: $op"
+		if(remote)
+		{
+			this.getClient().invoke(op, params)
+		}
+		else
+		{
+			println Constants.ERROR_NOT_CONNECTED
+		}
+	}
+	
+	static cmdPwd()
+	{
+		println "Displaying the current remote path..."
+		if(remote)
+		{
+			String name = (String)this.getClient().pwd()
+			println name
+		}
+		else
+		{
+			println Constants.ERROR_NOT_CONNECTED
+		}
+	}
+	
+	static cmdSetDomain(def domain)
+	{
+		println "Setting the domain to $domain..."
+		if(remote)
+		{
+			this.getClient().setDomain(domain)
+			println "The domain is set to $domain"
+		}
+		else
+		{
+			println Constants.ERROR_NOT_CONNECTED
+		}
+	}
+	
+}

Added: incubator/kitty/trunk/org/apache/kitty/Main.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/Main.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/Main.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/Main.groovy Sat Nov 27 23:51:20 2010
@@ -0,0 +1,24 @@
+package org.apache.kitty
+
+/**
+* <pre>
+* <b>Description</b>
+* <p>
+* This is the entry point to the remote management framework.
+* </p>
+* </pre>
+*
+* @author James R. Bray, Jr.
+*
+*/
+class Main {
+	
+	def config
+	
+	public init()
+	{
+		config = new ConfigSlurper().parse(new File('kittyConfig.groovy')).toString()
+		//TODO
+	}
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/client/Client.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/client/Client.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/client/Client.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/client/Client.groovy Sat Nov 27 23:51:20 2010
@@ -0,0 +1,462 @@
+package org.apache.kitty.client
+
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+import javax.management.ObjectName;
+import javax.management.Attribute;
+import org.apache.kitty.exceptions.*;
+
+
+/**
+ * <pre>
+ * <b>Description</p>
+ * <p>
+ * This is a Groovy implementation of the JSR 160 for a remote client.
+ * It is generic and will be the basis for the rmi and jmxmp implemenentations of the client.
+ * This class is for development purposes only and will not be used in production.
+ * </p>
+ * </pre>
+ * 
+ * @author James R. Bray, Jr.
+ * @version 1.0
+ *
+ */
+class Client {
+	
+	def host
+	def port
+	def domain
+	def domainList
+	def mBeansPath
+	def remote
+	def connector
+	def url
+	
+	public connect(def _host, def _port)
+	{
+		//TODO
+		def serviceURL
+		if(remote != null)
+		{
+			disconnect()
+		}
+		
+		try
+		{
+			serviceURL = "service:jmx:rmi:///jndi/rmi://$_host:$_port/jmxrmi"
+			this.url = new JMXServiceURL(serviceURL)
+			println "the url is $url"
+			this.connector = JMXConnectorFactory.connect(this.url)
+			this.remote = this.connector.getMBeanServerConnection()
+		}
+		catch(IOException e)
+		{
+			connector = null
+			remote = null
+			println e.getMessage()
+		}
+		finally
+		{
+			if(this.remote != null)
+			{
+				this.host = _host
+				this.port = _port
+			}
+		}
+	}
+	
+	public disconnect()
+	{
+		try
+		{
+			if(this.remote != null)
+			{
+				connector.close()
+			}
+		}
+		finally
+		{
+			this.host = null
+			this.port = null
+			this.remote = null
+			this.connector = null
+			this.domain = null
+			this.mBeansPath = null
+		}
+	}
+	
+	/**
+	 * <pre>
+	 * Get a list of domains from the remote host and print the list to standard output
+	 * </pre>
+	 * @return
+	 */
+	public domains()
+	{
+		if(this.remote)
+		{
+			this.domainList = remote.getDomains()
+			this.domainList.each { println it }
+		}
+		else
+		{
+			println "The remote connection is null"
+		}
+	}
+	
+	/**
+	 * <pre>
+	 * Assign a value to the domain
+	 * </pre>
+	 * @param _domain
+	 * @return
+	 */
+	public setDomain(def _domain)
+	{
+		if(this.remote)
+		{
+			if(_domain.equals(""))
+			{
+				this.domain = null
+				return
+			}
+			
+			this.domainList = remote.getDomains()
+			this.domainList.each {
+				if(it.equals(_domain))
+				{
+					this.domain = _domain
+					this.mBeanPath = []
+					return
+				}
+			}
+		}
+		else
+		{
+			println "domain not found"
+		}
+	}
+	
+	/**
+	 * 
+	 * @return
+	 */
+	public ls()
+	{
+		if(this.remote)
+		{
+			if(this.domain)
+			{
+				def objectName = this.domain + ":"
+				def objectName2
+				if(objectName.length() > 0)
+				{
+					objectName += ",".concat(this.mBeansPath.join())  // make sure mBeansPath is a list,
otherwise remove the .join() command
+					objectName2 = objectName + ","
+				}
+				else
+				{
+					objectName2 = objectName
+				}
+				def pool = new ObjectName(objectName2 + "*")
+				def paths = {}
+				println objectName
+				println "-----"
+				def qNames = this.remote.queryNames(pool, null)
+				try
+				{
+					qNames.each { mbean ->
+						def p = mbean.toString().split(objectName2)[1].split(',')[0]
+						paths[p] = p
+					}
+					paths.each { p -> 
+						println  "M " + p
+					}
+				}
+				catch(Exception e)
+				{
+					throw new DomainIsNoneException()
+				}
+				
+				try
+				{
+					mbean = this.remote.getMBeanInfo( new ObjectName(objectName))
+					for(attr in mbean.getAttributes())
+					{
+						def readable
+						def writable
+						try
+						{
+							def value = this.remote.getAttribute(new ObjectName(objectName), attr.getName())
+							def valueStr = (String)value
+						}
+						catch(Exception e)
+						{
+							valueStr = "-- " + attr.getType() + " --"
+						}
+						if(attr.isReadable())
+						{
+							readable = "r"
+						}
+						else
+						{
+							readable = "-"
+						}
+						if(attr.isWritable())
+						{
+							writable = "w"
+						}
+						else
+						{
+							writable = "-"
+						}
+						println "A " + readable + writable + " " + attr.getName() + " : "  + valueStr
+					}
+				}
+				catch(Exception e)
+				{
+					//
+				}
+				
+				try
+				{
+					mbean = this.remote.getMBeanInfo( new ObjectName(objectName))
+					for(ops in mbean.getOperations())
+					{
+						def params = []
+						for(p in ops.getSignature())
+						{
+							params.append(p.getType())
+						}
+						println "O " + ops.getReturnType()  + " " + ops.getName() + " ( "  + ",".concat(params.join())
+  ")"
+					}
+				}
+				catch(Exception e)
+				{
+					throw new DomainIsNoneException()
+				}
+			}
+		}
+	}
+	
+	/**
+	 * 
+	 * @return
+	 */
+	public cd(String path)
+	{
+		if(this.remote)
+		{
+			if(this.domain)
+			{
+                if(path == "..")
+				{
+                    if(this.mBeansPath.length())
+					{
+                        this.mBeansPath.pop()
+					}
+				}
+                else
+				{
+                    for(p in path.split(','))
+					{
+                        this.mBeansPath.append(p)
+					}
+				}
+			}
+		}
+	}
+	
+	/**
+	 * 
+	 */
+	public get(att)
+	{
+		if(this.remote)
+		{
+			if(this.domain)
+			{
+                def objectName = this.domain + ":"
+				def readable
+				def writable
+				def valueStr  
+                if(this.mBeansPath.length > 0)
+				{
+                    objectName = objectName + ','.concat(this.mBeansPath.join())
+				}
+                try
+				{
+                    mbean = this.remote.getMBeanInfo(new ObjectName(objectName))
+				}
+                catch(Exception e)
+				{
+                    throw new MBeanNotFoundException()
+				}
+                attr = null 
+                for(a in mbean.getAttributes())
+				{
+                    if(a.getName()  == att)
+					{
+                        attr = a 
+                        break
+					}
+				}
+                if(!attr)
+				{
+                    throw new MBeanAttributeNotFoundException()     
+				}              
+                try
+				{
+                    value = this.remote.getAttribute(new ObjectName(objectName), att) 
+                    valueStr = str(value)
+				}
+                catch(Exception e)
+				{
+                    valueStr = "-- " + attr.getType() + " --" 
+				}
+                if(attr.isReadable())
+				{
+                    readable = "Y"
+				}
+                else
+				{
+                    readable = "N"
+				}
+                if(attr.isWritable())
+				{
+                    writable = "Y" 
+				}
+                else
+				{
+                    writable = "N" 
+				}
+                println "ObjectName :" + objectName
+                println "Attribute  :" + attr.getName()
+                println "Value      :"  + valueStr
+                println "isReadable : " + readable 
+                println "isWritable : " + writable 
+			}
+		}
+	}
+	
+	/**
+	 * 
+	 * @return
+	 */
+	public set(att, val)
+	{
+		if(this.remote)
+		{
+			if(this.domain)
+			{
+                def objectName = this.domain + ":"         
+                if(this.mBeansPath.length() > 0)
+				{
+                    objectName = objectName + ','.concat(this.mBeansPath.join())
+				}
+                try
+				{
+                    mbean = this.remote.getMBeanInfo(new ObjectName(objectName))
+				}
+                catch(Exception e)
+				{
+                    throw new MBeanNotFoundException()
+				}
+                attr = null 
+                for(a in mbean.getAttributes())
+				{
+                    if(a.getName()  == att)
+                        attr = a 
+                        break
+				}
+                if(!attr)
+				{
+                    throw new MBeanAttributeNotFoundException()
+				}
+                if(attr.isWritable())
+				{
+                    try
+					{
+                        a = new Attribute(att, val)
+                        this.remote.setAttribute(new ObjectName(objectName), a)
+					}
+                    catch(Exception e)
+					{
+                        throw new SetAttributeException()
+					}
+				}
+                else
+				{
+                    throw new SetAttributeException()
+				}
+			}
+		}
+	}
+	
+	/**
+	 * 
+	 * @param op
+	 * @param params
+	 * @return
+	 */
+	public invoke(op, params)
+	{
+		if(this.remote)
+		{
+			if(this.domain)
+			{
+				def objectName = this.domain + ":"
+				if(this.mBeansPath.length())
+				{
+					objectName = objectName + ','.concat(this.mBeansPath.join())
+				}
+				try{
+					mbean = this.remote.getMBeanInfo(new ObjectName(objectName))
+				}
+				catch(Exception)
+				{
+					throw new MBeanNotFoundException()
+				}
+				def ops = null
+				for(o in mbean.getOperations())
+				{
+					if(o.getName() == op)
+					{
+						ops = o
+						break
+					}
+				}
+				if(!ops)
+				{
+					throw new OperationNotFoundException()
+				}
+				def sig = []
+				for(s in ops.getSignature())
+				{
+					sig.append(p.getType())
+				}
+	
+				try
+				{
+					this.remote.invoke(new ObjectName(objectName), op, params, sig)
+				}
+				catch(Exception e)
+				{
+					throw new InvokeException()
+				}
+			}
+		}
+	}
+	
+	public pwd()
+	{
+		def name
+		if(this.domain)
+		{
+			name = this.domain + ":" + ",".concat(this.mBeansPath.join())  // may need to change this
+		}
+		
+		return name
+	}
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/client/jmxmp/JMXMPClient.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/client/jmxmp/JMXMPClient.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/client/jmxmp/JMXMPClient.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/client/jmxmp/JMXMPClient.groovy Sat Nov 27 23:51:20
2010
@@ -0,0 +1,59 @@
+/**
+ * 
+ */
+package org.apache.kitty.client.jmxmp
+
+import org.apache.kitty.client.Client;
+
+/**
+ * <pre>
+ * <b>Description</b>
+ * <p>
+ * 
+ * </p>
+ * </pre>
+ * @author James R. Bray, Jr.
+ *
+ */
+class JMXMPClient extends Client {
+	
+	def host
+	def port
+	def domain
+	def mBeansPath
+	def remote
+	def connector
+	
+	@Override
+	public connect(def _host, def _port)
+	{
+		//TODO
+		def serviceURL
+		if(remote != null)
+		{
+			disconnect()
+		}
+		
+		try
+		{
+			serviceURL = "service:jmx:jmxmp://$_host:$_port"
+			this.url = JMXServiceURL(serviceURL)
+			this.connector = JMXConnectorFactory.connect(url)
+			this.remote = this.connector.getMBeanServerConnection()
+		}
+		catch(IOException e)
+		{
+			connector = null
+			remote = null
+		}
+		finally
+		{
+			if(this.remote != null)
+			{
+				this.host = _host
+				this.port = _port
+			}
+		}
+	}
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/client/rmi/RMIClient.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/client/rmi/RMIClient.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/client/rmi/RMIClient.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/client/rmi/RMIClient.groovy Sat Nov 27 23:51:20
2010
@@ -0,0 +1,14 @@
+package org.apache.kitty.client.rmi
+
+import org.apache.kitty.client.Client;
+
+class RMIClient extends Client {
+	
+	def host
+	def port
+	def domain
+	def mBeansPath
+	def remote
+	def connector
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/exceptions/DomainIsNoneException.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/exceptions/DomainIsNoneException.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/exceptions/DomainIsNoneException.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/exceptions/DomainIsNoneException.groovy Sat Nov
27 23:51:20 2010
@@ -0,0 +1,12 @@
+/**
+ * 
+ */
+package org.apache.kitty.exceptions
+
+/**
+ * @author james
+ *
+ */
+class DomainIsNoneException extends Exception {
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/exceptions/DomainNotFoundException.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/exceptions/DomainNotFoundException.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/exceptions/DomainNotFoundException.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/exceptions/DomainNotFoundException.groovy Sat Nov
27 23:51:20 2010
@@ -0,0 +1,5 @@
+package org.apache.kitty.exceptions
+
+class DomainNotFoundException extends Exception {
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/exceptions/InvokeException.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/exceptions/InvokeException.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/exceptions/InvokeException.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/exceptions/InvokeException.groovy Sat Nov 27 23:51:20
2010
@@ -0,0 +1,44 @@
+/**
+ * 
+ */
+package org.apache.kitty.exceptions
+
+/**
+ * @author james
+ *
+ */
+class InvokeException extends Exception {
+
+	/**
+	 * 
+	 */
+	public InvokeException() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param message
+	 */
+	public InvokeException(String message) {
+		super(message);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param cause
+	 */
+	public InvokeException(Throwable cause) {
+		super(cause);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param message
+	 * @param cause
+	 */
+	public InvokeException(String message, Throwable cause) {
+		super(message, cause);
+		// TODO Auto-generated constructor stub
+	}
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/exceptions/MBeanAttributeNotFoundException.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/exceptions/MBeanAttributeNotFoundException.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/exceptions/MBeanAttributeNotFoundException.groovy
(added)
+++ incubator/kitty/trunk/org/apache/kitty/exceptions/MBeanAttributeNotFoundException.groovy
Sat Nov 27 23:51:20 2010
@@ -0,0 +1,44 @@
+/**
+ * 
+ */
+package org.apache.kitty.exceptions
+
+/**
+ * @author james
+ *
+ */
+class MBeanAttributeNotFoundException extends Exception {
+
+	/**
+	 * 
+	 */
+	public MBeanAttributeNotFoundException() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param message
+	 */
+	public MBeanAttributeNotFoundException(String message) {
+		super(message);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param cause
+	 */
+	public MBeanAttributeNotFoundException(Throwable cause) {
+		super(cause);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param message
+	 * @param cause
+	 */
+	public MBeanAttributeNotFoundException(String message, Throwable cause) {
+		super(message, cause);
+		// TODO Auto-generated constructor stub
+	}
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/exceptions/MBeanNotFoundException.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/exceptions/MBeanNotFoundException.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/exceptions/MBeanNotFoundException.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/exceptions/MBeanNotFoundException.groovy Sat Nov
27 23:51:20 2010
@@ -0,0 +1,44 @@
+/**
+ * 
+ */
+package org.apache.kitty.exceptions
+
+/**
+ * @author james
+ *
+ */
+class MBeanNotFoundException extends Exception {
+
+	/**
+	 * 
+	 */
+	public MBeanNotFoundException() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param message
+	 */
+	public MBeanNotFoundException(String message) {
+		super(message);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param cause
+	 */
+	public MBeanNotFoundException(Throwable cause) {
+		super(cause);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param message
+	 * @param cause
+	 */
+	public MBeanNotFoundException(String message, Throwable cause) {
+		super(message, cause);
+		// TODO Auto-generated constructor stub
+	}
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/exceptions/OperationNotFoundException.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/exceptions/OperationNotFoundException.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/exceptions/OperationNotFoundException.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/exceptions/OperationNotFoundException.groovy Sat
Nov 27 23:51:20 2010
@@ -0,0 +1,5 @@
+package org.apache.kitty.exceptions
+
+class OperationNotFoundException extends Exception {
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/exceptions/SetAttributeException.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/exceptions/SetAttributeException.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/exceptions/SetAttributeException.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/exceptions/SetAttributeException.groovy Sat Nov
27 23:51:20 2010
@@ -0,0 +1,44 @@
+/**
+ * 
+ */
+package org.apache.kitty.exceptions
+
+/**
+ * @author james
+ *
+ */
+class SetAttributeException extends Exception {
+
+	/**
+	 * 
+	 */
+	public SetAttributeException() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param message
+	 */
+	public SetAttributeException(String message) {
+		super(message);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param cause
+	 */
+	public SetAttributeException(Throwable cause) {
+		super(cause);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param message
+	 * @param cause
+	 */
+	public SetAttributeException(String message, Throwable cause) {
+		super(message, cause);
+		// TODO Auto-generated constructor stub
+	}
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/test/ClientTest0.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/test/ClientTest0.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/test/ClientTest0.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/test/ClientTest0.groovy Sat Nov 27 23:51:20 2010
@@ -0,0 +1,41 @@
+/**
+ * 
+ */
+package org.apache.kitty.test;
+
+import groovy.util.GroovyTestCase;
+
+/**
+ * @author james
+ *
+ */
+class ClientTest extends GroovyTestCase {
+
+	/**
+	 * @param name
+	 */
+	public ClientTest(String name) {
+		super(name);
+	}
+
+	/* (non-Javadoc)
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+	}
+
+	/* (non-Javadoc)
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		super.tearDown();
+	}
+}
+
+	/**
+	 * Test method for {@link org.apache.kitty.client.Client#connect(java.lang.Object, java.lang.Object)}.
+	 */
+	public final void testConnect(){
+	fail("Not yet implemented"); // TODO
+	}

Added: incubator/kitty/trunk/org/apache/kitty/test/Test.java
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/test/Test.java?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/test/Test.java (added)
+++ incubator/kitty/trunk/org/apache/kitty/test/Test.java Sat Nov 27 23:51:20 2010
@@ -0,0 +1,23 @@
+package org.apache.kitty.test;
+
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+import javax.management.ObjectName;
+import javax.management.MBeanInfo;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanParameterInfo;
+import java.lang.management.ManagementFactory;
+import javax.management.AttributeNotFoundException;
+
+/**
+ * <pre>
+ * Test some simple concepts and assumptions here
+ * </pre>
+ * @author james
+ *
+ */
+public class Test {
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/test/TestGroovyShell.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/test/TestGroovyShell.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/test/TestGroovyShell.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/test/TestGroovyShell.groovy Sat Nov 27 23:51:20
2010
@@ -0,0 +1,132 @@
+/**
+ * 
+ */
+package org.apache.kitty.test
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import org.apache.kitty.utils.Help;
+
+/**
+ * @author James R. Bray, Jr.
+ *
+ */
+class TestGroovyShell {
+	
+	def static final PROMPT = "kitty>"
+	static InputStreamReader inReader;
+	static BufferedReader bReader;
+	static commands = ["help", "connect", "disconnect", "exit", "ls", "echo"]
+
+	/**
+	 * 
+	 */
+	public TestGroovyShell() {
+		// TODO Auto-generated constructor stub
+	}
+
+
+	static main(args) {
+		startShell()
+	}
+	
+	static startShell()
+	{
+		def input
+		this.inReader = new InputStreamReader(System.in)
+		this.bReader = new BufferedReader(inReader)
+		
+		while(!(input.equals("exit")))
+		{
+			print PROMPT
+			input = getUserInput()
+			inputHandler(input)
+		}
+		this.inReader.close()
+		this.bReader.close()
+		
+	}
+	
+	static inputHandler(String input)
+	{
+		//print input
+		
+		Integer index = 0
+		
+		if(this.commands.contains(input))
+		{
+			index = commands.indexOf(input)
+			//println "The index is" + index
+			
+			switch(index)
+			{
+				case 0:
+					cmdHelp()
+					break;
+				case 1:
+					cmdConnect()
+					break;
+				case 2:
+					cmdDisconnect()
+					break;
+				case 3:
+					cmdExit()
+					break;
+				case 4:
+					cmdLs()
+					break;
+				case 5:
+					cmdEcho(input)
+					break;
+				default:
+					break;
+			}
+		}
+		else
+		{
+			println input + " is not a valid command"
+		}
+		
+		
+	}
+	
+	static String getUserInput()
+	{
+		def userInput
+		userInput = bReader.readLine()
+		return userInput;
+	}
+	
+	static cmdHelp()
+	{
+		Help h = new Help()
+		println h.toString()
+	}
+	
+	static cmdConnect()
+	{
+		println "connecting...."
+	}
+	
+	static cmdDisconnect()
+	{
+		println "disconnecting..."
+	}
+	
+	static cmdExit()
+	{
+		println "exiting..."
+	}
+	
+	static cmdLs()
+	{
+		println "listing files and directories..."
+	}
+	
+	static cmdEcho(def input)
+	{
+		println input
+	}
+	
+}

Added: incubator/kitty/trunk/org/apache/kitty/test/TestShell.java
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/test/TestShell.java?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/test/TestShell.java (added)
+++ incubator/kitty/trunk/org/apache/kitty/test/TestShell.java Sat Nov 27 23:51:20 2010
@@ -0,0 +1,90 @@
+/**
+ * 
+ */
+package org.apache.kitty.test;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+/**
+ * @author james
+ *
+ */
+public class TestShell {
+	
+	protected static final String PROMPT = "kitty>";
+	static InputStreamReader inReader;
+	static BufferedReader bReader;
+
+	/**
+	 * 
+	 */
+	public TestShell() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		startShell();
+
+	}
+	
+	public static void startShell()
+	{
+		String input = "";
+		inReader = new InputStreamReader(System.in);
+		bReader = new BufferedReader(inReader);
+		while(!(input.equals("exit")))
+		{
+			getPrompt();
+			input = getUserInput();
+			validateInput(input);
+			processInput(input);
+		}
+		
+		try
+		{
+			inReader.close();
+			bReader.close();
+		}
+		catch(IOException ioe)
+		{
+			System.err.println(ioe.getMessage());
+		}
+		System.out.println("kitty session terminated");
+	}
+	
+	public static void getPrompt()
+	{
+		System.out.print(PROMPT);
+	}
+	
+	public static String getUserInput()
+	{
+		String userInput = null;
+		try
+		{
+			userInput = bReader.readLine();
+		}
+		catch(IOException ioe)
+		{
+			System.err.println(ioe.getMessage());
+		}
+		
+		return userInput;
+	}
+	
+	private static void validateInput(String input)
+	{
+		//TODO
+	}
+	
+	private static void processInput(String input)
+	{
+		//TODO
+	}
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/ui/Console.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/ui/Console.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/ui/Console.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/ui/Console.groovy Sat Nov 27 23:51:20 2010
@@ -0,0 +1,19 @@
+/**
+ * 
+ */
+package org.apache.kitty.ui
+
+/**
+ * @author james
+ *
+ */
+class Console {
+
+	/**
+	 * 
+	 */
+	public Console() {
+		// TODO Auto-generated constructor stub
+	}
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/ui/Dashboard.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/ui/Dashboard.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/ui/Dashboard.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/ui/Dashboard.groovy Sat Nov 27 23:51:20 2010
@@ -0,0 +1,28 @@
+/**
+ * 
+ */
+package org.apache.kitty.ui
+
+/**
+ * <pre>
+ * <b>Description:</b>
+ * <p>
+ * The Dashboard class is the entry point to the GUI for the Apache Kitty JSR-160 implementation.
 
+ * This class is incomplete at the time of the release of Apache Kitty 1.0 and will not be
included in the production version of the project.  
+ * It may be included in development releases of this project.
+ * </p>
+ * </pre>
+ * 
+ * @author James R. Bray, Jr.
+ *
+ */
+class Dashboard {
+
+	/**
+	 * 
+	 */
+	public Dashboard() {
+		// TODO Auto-generated constructor stub
+	}
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/utils/Constants.java
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/utils/Constants.java?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/utils/Constants.java (added)
+++ incubator/kitty/trunk/org/apache/kitty/utils/Constants.java Sat Nov 27 23:51:20 2010
@@ -0,0 +1,19 @@
+package org.apache.kitty.utils;
+
+/**
+ * <pre>
+ * <b>Description</b>
+ * <p>
+ * Common constants used by the framework
+ * </p>
+ * </pre>
+ * 
+ * @author James R. Bray, Jr.
+ *
+ */
+public class Constants {
+	
+	public static final String ERROR_TOO_FEW_PARAMETERS = "You did not enter all of the required
parameters for this command";
+	public static final String ERROR_NOT_CONNECTED = "Not currently connected to a host";
+
+}

Added: incubator/kitty/trunk/org/apache/kitty/utils/Help.groovy
URL: http://svn.apache.org/viewvc/incubator/kitty/trunk/org/apache/kitty/utils/Help.groovy?rev=1039793&view=auto
==============================================================================
--- incubator/kitty/trunk/org/apache/kitty/utils/Help.groovy (added)
+++ incubator/kitty/trunk/org/apache/kitty/utils/Help.groovy Sat Nov 27 23:51:20 2010
@@ -0,0 +1,41 @@
+/**
+ * 
+ */
+package org.apache.kitty.utils
+
+
+/**
+ * @author James R. Bray, Jr.
+ *
+ */
+class Help {
+
+	/**
+	 * 
+	 */
+	public Help() {
+		toString()
+	}
+	
+	public String toString()
+	{
+		StringBuffer sb = new StringBuffer()
+		
+		sb.append "COMMANDS\n\n"
+		sb.append "connect <host> <port> - Connect to the remote host\n"
+		sb.append "disconnect - Disconnect from remote host\n"
+		sb.append "cd <path> - Change the current path\n"
+		sb.append "echo - Return the text that is entered\n"
+		sb.append "exit - Quit the application and return to the command prompt\n"
+		sb.append "get <attribute> - Get an attribute from the remote host\n"
+		sb.append "set <attribute> <value> - Set an attribute on the remote host\n"
+		sb.append "setdomain <domain> - Set the domain in the current session\n"
+		sb.append "invoke <operation> <parameters...> - Invoke an operation on the
remote host\n"
+		sb.append "ls - List the managable resources on the remote host\n"
+		sb.append "pwd - \n"
+		
+		
+		return sb.toString()
+	}
+
+}



Mime
View raw message