Author: msacks
Date: Thu Jul 14 17:25:36 2011
New Revision: 1146812
URL: http://svn.apache.org/viewvc?rev=1146812&view=rev
Log:
Fixes ls invalid character issue https://issues.apache.org/jira/browse/KITTY-16
Removed:
incubator/kitty/trunk/src/main/java/org/apache/kitty/client/rmi/RMIClient.groovy
Modified:
incubator/kitty/trunk/src/main/java/org/apache/kitty/client/Client.groovy
incubator/kitty/trunk/src/test/java/org/apache/kitty/client/ClientTest.groovy
Modified:
incubator/kitty/trunk/src/main/java/org/apache/kitty/client/Client.groovy
URL:
http://svn.apache.org/viewvc/incubator/kitty/trunk/src/main/java/org/apache/kitty/client/Client.groovy?rev=1146812&r1=1146811&r2=1146812&view=diff
==============================================================================
--- incubator/kitty/trunk/src/main/java/org/apache/kitty/client/Client.groovy
(original)
+++ incubator/kitty/trunk/src/main/java/org/apache/kitty/client/Client.groovy
Thu Jul 14 17:25:36 2011
@@ -22,7 +22,6 @@ import java.io.IOException
import javax.management.Attribute
import javax.management.ObjectName
-import javax.management.remote.JMXConnector
import javax.management.remote.JMXConnectorFactory
import javax.management.remote.JMXServiceURL
@@ -57,24 +56,24 @@ class Client {
public connect(def _host, def _port) {
connect(_host, _port, null, null)
}
-
+
public connect(def _host, def _port, def _username, def _password) {
def serviceURL
def properties = new HashMap()
-
+
if (remote != null) {
disconnect()
}
-
+
if ((_username != null) && (_password != null)) {
properties.put JMXConnector.CREDENTIALS, [_username,
_password] as String[]
}
try {
- serviceURL =
"service:jmx:rmi:///jndi/rmi://$_host:$_port/jmxrmi"
+ serviceURL =
"service:jmx:rmi:///jndi/rmi://$_host:$_port/jmxrmi"
this.url = new JMXServiceURL(serviceURL)
-
+
// TODO add auth & credentials to properties
this.connector = JMXConnectorFactory.connect(this.url,
properties)
this.remote = this.connector.getMBeanServerConnection()
@@ -142,7 +141,6 @@ class Client {
if (it.equals(_domain)) {
this.domain = _domain
this.mBeansPath = []
- println "The domain is set to $domain"
return
}
}
@@ -157,7 +155,7 @@ class Client {
* @return
*/
public ls() {
-
+
if (!this.remote) {
println "No remote is set!"
return
@@ -171,10 +169,9 @@ class Client {
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
+ if (mBeansPath.size() > 0) {
+ objectName += this.mBeansPath.join(',')
// make sure mBeansPath is a list, otherwise remove the .join() command
objectName2 = objectName + ","
}
else {
@@ -183,18 +180,20 @@ class Client {
println "objectName: " + objectName
println "objectName2: " + objectName2
-
+
def pool = new ObjectName(objectName2 + "*")
- def paths = {}
+ def paths = [:]
println objectName
println "-----"
+
+ // List the MBeans names
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 }
+ paths.each { p, dummy -> println "M "
+ p }
}
catch(Exception e) {
throw new DomainIsNoneException()
@@ -231,7 +230,7 @@ class Client {
}
}
catch(Exception e) {
- //
+ // ObjectName not found
}
try {
@@ -245,7 +244,7 @@ class Client {
}
}
catch(Exception e) {
- throw new DomainIsNoneException()
+ // ObjectName not found
}
}
}
@@ -259,13 +258,13 @@ class Client {
if (this.remote) {
if (this.domain) {
if (path == "..") {
- if (this.mBeansPath.size()) {
+ if (this.mBeansPath.length()) {
this.mBeansPath.pop()
}
}
else {
for (p in path.split(',')) {
- this.mBeansPath.append(p)
+ this.mBeansPath << p
}
}
}
@@ -342,7 +341,7 @@ class Client {
def objectName = this.domain + ":"
def attr
- if (this.mBeansPath.size() > 0) {
+ if (this.mBeansPath.length() > 0) {
objectName = objectName +
','.concat(this.mBeansPath.join())
}
try {
@@ -386,7 +385,7 @@ class Client {
if (this.remote) {
if (this.domain) {
def objectName = this.domain + ":"
- if (this.mBeansPath.size()) {
+ if (this.mBeansPath.length()) {
objectName = objectName +
','.concat(this.mBeansPath.join())
}
try{
@@ -423,7 +422,7 @@ class Client {
public pwd() {
def name
if (this.domain) {
- name = this.domain + ":" +
",".concat(this.mBeansPath.join()) // may need to change this
+ name = this.domain + ":" + this.mBeansPath.join(',')
}
return name
Modified:
incubator/kitty/trunk/src/test/java/org/apache/kitty/client/ClientTest.groovy
URL:
http://svn.apache.org/viewvc/incubator/kitty/trunk/src/test/java/org/apache/kitty/client/ClientTest.groovy?rev=1146812&r1=1146811&r2=1146812&view=diff
==============================================================================
---
incubator/kitty/trunk/src/test/java/org/apache/kitty/client/ClientTest.groovy
(original)
+++
incubator/kitty/trunk/src/test/java/org/apache/kitty/client/ClientTest.groovy
Thu Jul 14 17:25:36 2011
@@ -20,7 +20,10 @@ package org.apache.kitty.client;
import static org.junit.Assert.*;
import org.apache.kitty.client.Client
import javax.management.MBeanServerConnection
-import org.junit.Test;
+import org.junit.Test
+import groovy.mock.interceptor.MockFor
+import javax.management.ObjectName
+import org.apache.kitty.exceptions.DomainIsNoneException;
class ClientTest {
@@ -55,4 +58,40 @@ class ClientTest {
assert client.domain == 'a'
}
+
+ @Test
+ public void should_list_names_for_domain() throws Exception {
+ Client client = new Client()
+
+ // Mock the remote connection
+ def mockForRemote = new MockFor(MBeanServerConnection)
+ mockForRemote.ignore.asBoolean {
+ true
+ }
+ mockForRemote.ignore.getDomains {
+ ['a_domain']
+ }
+
+ // Prepare the names list
+ mockForRemote.ignore.queryNames { a,b ->
+ def set = new HashSet()
+ set.add(new ObjectName("a_domain", "test1", "1"))
+ set.add(new ObjectName("a_domain", "test2", "2"))
+ set.add(new ObjectName("a_domain", "test3", "3"))
+ return set
+ }
+
+ def theProxyInstance = mockForRemote.proxyInstance()
+
+ // Verify "ls" is working
+ mockForRemote.use {
+ client.remote = theProxyInstance
+ client.setDomain('a_domain')
+ try {
+ client.ls()
+ } catch(DomainIsNoneException dine) {
+ fail("DomainIsNoneException thrown")
+ }
+ }
+ }
}