jmx 0.7 → 0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +8 -0
- data/History.txt +24 -0
- data/Manifest.txt +1 -0
- data/Rakefile +7 -25
- data/jmx.gemspec +22 -0
- data/lib/jmx.rb +2 -0
- data/lib/jmx/server.rb +1 -1
- data/lib/jmx/version.rb +1 -1
- data/nbproject/project.properties +6 -0
- data/nbproject/project.xml +15 -0
- data/samples/memory.rb +1 -2
- data/test/jmx_client_test.rb +2 -1
- data/test/jmx_mangling_test.rb +18 -0
- metadata +52 -41
- data/.gemtest +0 -0
- data/lib/jmx/notifier.rb +0 -31
data/.gitignore
ADDED
data/History.txt
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
== 0.1
|
2
|
+
|
3
|
+
- Initial release
|
4
|
+
|
5
|
+
== 0.2
|
6
|
+
|
7
|
+
- Ruby-created mbeans can now specify r_attribute, rw_attribute, and w_attributes (by Jay McGaffigan)
|
8
|
+
- More rdocs
|
9
|
+
|
10
|
+
== 0.5
|
11
|
+
|
12
|
+
- Use 'java_import' instead of 'import' to play nice with Rake
|
13
|
+
- Use hash of hash in Thread.current so multiple beans don't add each others crud (by bpardee)
|
14
|
+
|
15
|
+
== 0.6
|
16
|
+
|
17
|
+
See https://github.com/enebo/jmxjr/issues for details
|
18
|
+
- 2: MBean attributes shouldn't be tied to MBean instance variables.
|
19
|
+
- 3: MBeans created by another MBean don't have attributes/operations show up
|
20
|
+
- 4: Extended MBeans don't have parents operations/attributes.
|
21
|
+
|
22
|
+
== 0.7
|
23
|
+
|
24
|
+
- 5: JMX::MBeanProxy#method_missing is broken (removed method_missing. dead)
|
data/Manifest.txt
CHANGED
data/Rakefile
CHANGED
@@ -1,27 +1,9 @@
|
|
1
|
-
|
1
|
+
require 'rake/testtask'
|
2
|
+
require 'bundler'
|
3
|
+
Bundler::GemHelper.install_tasks
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
Rake::Task['manifest'].invoke # Always regen manifest, so Hoe has up-to-date list of files
|
8
|
-
|
9
|
-
$LOAD_PATH << 'lib'
|
10
|
-
require 'jmx/version'
|
11
|
-
begin
|
12
|
-
require 'hoe'
|
13
|
-
Hoe.new("jmx", JMX::VERSION) do |p|
|
14
|
-
p.rubyforge_name = "jruby-extras"
|
15
|
-
p.url = "http://github.com/enebo/jmxjr"
|
16
|
-
p.author = "Thomas Enebo & Jay McGaffigan"
|
17
|
-
p.email = "tom.enebo@gmail.com"
|
18
|
-
p.summary = "Package for interacting/creating Java Management Extensions"
|
19
|
-
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
20
|
-
p.description = "Install this gem and require 'jmx' to load the library."
|
21
|
-
end.spec.dependencies.delete_if { |dep| dep.name == "hoe" }
|
22
|
-
rescue LoadError
|
23
|
-
puts "You need Hoe installed to be able to package this gem"
|
24
|
-
rescue => e
|
25
|
-
p e.backtrace
|
26
|
-
puts "ignoring error while loading hoe: #{e.to_s}"
|
5
|
+
Rake::TestTask.new do |t|
|
6
|
+
t.libs << "test"
|
7
|
+
t.test_files = FileList['test/*_test.rb']
|
8
|
+
t.verbose = true
|
27
9
|
end
|
data/jmx.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "jmx/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'jmx'
|
7
|
+
s.version = JMX::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = 'Thomas E. Enebo'
|
10
|
+
s.email = 'tom.enebo@gmail.com'
|
11
|
+
s.homepage = 'http://github.com/enebo/jmx'
|
12
|
+
s.summary = %q{Access and create MBeans in a friendly Ruby syntax}
|
13
|
+
s.description = %q{Access and create MBeans in a friendly Ruby syntax}
|
14
|
+
|
15
|
+
s.rubyforge_project = "jmx"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
s.has_rdoc = true
|
22
|
+
end
|
data/lib/jmx.rb
CHANGED
@@ -84,6 +84,8 @@ module JMX
|
|
84
84
|
# name back to the caller.
|
85
85
|
def self.parent_for(java_class_fqn)
|
86
86
|
java_class_fqn.split(".").inject(MBeans) do |parent, segment|
|
87
|
+
# const_defined? will crash later if we don't remove $
|
88
|
+
segment.gsub!('$', 'Dollar') if segment =~ /\$/
|
87
89
|
# Note: We are boned if java class name is lower cased
|
88
90
|
return [parent, segment] if segment =~ /^[A-Z]/
|
89
91
|
|
data/lib/jmx/server.rb
CHANGED
data/lib/jmx/version.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project xmlns="http://www.netbeans.org/ns/project/1">
|
3
|
+
<type>org.netbeans.modules.ruby.rubyproject</type>
|
4
|
+
<configuration>
|
5
|
+
<data xmlns="http://www.netbeans.org/ns/ruby-project/1">
|
6
|
+
<name>jmxjr</name>
|
7
|
+
<source-roots>
|
8
|
+
<root id="src.dir"/>
|
9
|
+
</source-roots>
|
10
|
+
<test-roots>
|
11
|
+
<root id="test.src.dir"/>
|
12
|
+
</test-roots>
|
13
|
+
</data>
|
14
|
+
</configuration>
|
15
|
+
</project>
|
data/samples/memory.rb
CHANGED
data/test/jmx_client_test.rb
CHANGED
@@ -5,12 +5,12 @@ require 'rmi'
|
|
5
5
|
require 'jmx'
|
6
6
|
|
7
7
|
PORT = 9999
|
8
|
-
$registry = RMIRegistry.new PORT
|
9
8
|
|
10
9
|
class JMXConnectorClientTest < Test::Unit::TestCase
|
11
10
|
URL = "service:jmx:rmi:///jndi/rmi://localhost:#{PORT}/jmxrmi"
|
12
11
|
|
13
12
|
def setup
|
13
|
+
@registry = RMIRegistry.new PORT
|
14
14
|
@connector = JMX::MBeanServerConnector.new(URL, JMX::MBeanServer.new)
|
15
15
|
@connector.start
|
16
16
|
@client = JMX::connect(:port => PORT)
|
@@ -18,6 +18,7 @@ class JMXConnectorClientTest < Test::Unit::TestCase
|
|
18
18
|
|
19
19
|
def teardown
|
20
20
|
@connector.stop
|
21
|
+
@registry.stop
|
21
22
|
end
|
22
23
|
|
23
24
|
def test_invalid_mbean_name
|
@@ -0,0 +1,18 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'jmx'
|
5
|
+
|
6
|
+
class JMXConnectorClientTest < Test::Unit::TestCase
|
7
|
+
def test_that_mbeans_parent_for_handles_classes_with_dollar_sign
|
8
|
+
bean_module, class_name = JMX::MBeans.parent_for("evil.dollar.Pre$Middle$Post")
|
9
|
+
assert_equal(JMX::MBeans::Evil::Dollar, bean_module)
|
10
|
+
assert_equal("PreDollarMiddleDollarPost", class_name)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_mbeans_parent_for
|
14
|
+
bean_module, class_name = JMX::MBeans.parent_for("com.example.JavaClass")
|
15
|
+
assert_equal(JMX::MBeans::Com::Example, bean_module)
|
16
|
+
assert_equal("JavaClass", class_name)
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,72 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jmx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 8
|
8
|
+
version: "0.8"
|
6
9
|
platform: ruby
|
7
10
|
authors:
|
8
|
-
|
11
|
+
- Thomas E. Enebo
|
9
12
|
autorequire:
|
10
13
|
bindir: bin
|
11
14
|
cert_chain: []
|
12
15
|
|
13
|
-
date:
|
16
|
+
date: 2012-04-20 00:00:00 -05:00
|
14
17
|
default_executable:
|
15
18
|
dependencies: []
|
16
19
|
|
17
|
-
description:
|
20
|
+
description: Access and create MBeans in a friendly Ruby syntax
|
18
21
|
email: tom.enebo@gmail.com
|
19
22
|
executables: []
|
20
23
|
|
21
24
|
extensions: []
|
22
25
|
|
23
|
-
extra_rdoc_files:
|
24
|
-
|
25
|
-
- LICENSE.txt
|
26
|
+
extra_rdoc_files: []
|
27
|
+
|
26
28
|
files:
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
29
|
+
- .gitignore
|
30
|
+
- History.txt
|
31
|
+
- LICENSE.txt
|
32
|
+
- Manifest.txt
|
33
|
+
- README.md
|
34
|
+
- Rakefile
|
35
|
+
- jmx.gemspec
|
36
|
+
- lib/jmx.rb
|
37
|
+
- lib/jmx/dynamic_mbean.rb
|
38
|
+
- lib/jmx/server.rb
|
39
|
+
- lib/jmx/version.rb
|
40
|
+
- lib/rmi.rb
|
41
|
+
- nbproject/private/private.xml
|
42
|
+
- nbproject/project.properties
|
43
|
+
- nbproject/project.xml
|
44
|
+
- samples/memory.rb
|
45
|
+
- test/jmx_attribute_test.rb
|
46
|
+
- test/jmx_client_test.rb
|
47
|
+
- test/jmx_mangling_test.rb
|
48
|
+
- test/jmx_server_test.rb
|
42
49
|
has_rdoc: true
|
43
|
-
homepage: http://github.com/enebo/
|
50
|
+
homepage: http://github.com/enebo/jmx
|
44
51
|
licenses: []
|
45
52
|
|
46
53
|
post_install_message:
|
47
|
-
rdoc_options:
|
48
|
-
|
49
|
-
- README.txt
|
54
|
+
rdoc_options: []
|
55
|
+
|
50
56
|
require_paths:
|
51
|
-
|
57
|
+
- lib
|
52
58
|
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
59
|
requirements:
|
55
|
-
|
56
|
-
|
57
|
-
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
version: "0"
|
58
65
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
66
|
requirements:
|
61
|
-
|
62
|
-
|
63
|
-
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
64
72
|
requirements: []
|
65
73
|
|
66
|
-
rubyforge_project:
|
67
|
-
rubygems_version: 1.
|
74
|
+
rubyforge_project: jmx
|
75
|
+
rubygems_version: 1.3.6
|
68
76
|
signing_key:
|
69
77
|
specification_version: 3
|
70
|
-
summary:
|
71
|
-
test_files:
|
72
|
-
|
78
|
+
summary: Access and create MBeans in a friendly Ruby syntax
|
79
|
+
test_files:
|
80
|
+
- test/jmx_attribute_test.rb
|
81
|
+
- test/jmx_client_test.rb
|
82
|
+
- test/jmx_mangling_test.rb
|
83
|
+
- test/jmx_server_test.rb
|
data/.gemtest
DELETED
File without changes
|
data/lib/jmx/notifier.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
module JMX
|
2
|
-
module RubyNotificationEmitter
|
3
|
-
java_import javax.management.MBeanNotificationInfo
|
4
|
-
|
5
|
-
include javax.management.NotificationEmitter
|
6
|
-
|
7
|
-
def listeners
|
8
|
-
@listener ||= {}
|
9
|
-
end
|
10
|
-
|
11
|
-
# NotificationListener listener, NotificationFilter filter, Object handback
|
12
|
-
def addNotificationListener(listener, filter, handback)
|
13
|
-
listeners[listener] = [filter, handback]
|
14
|
-
end
|
15
|
-
|
16
|
-
def getNotificationInfo
|
17
|
-
[].to_java MBeanNotificationInfo
|
18
|
-
end
|
19
|
-
|
20
|
-
# NotificationListener listener, NotificationFilter filter, Object handback
|
21
|
-
def removeNotificationListener(listener, filter=nil, handback=nil)
|
22
|
-
found = false
|
23
|
-
listeners.delete_if do |clistener, (cfilter, chandback)|
|
24
|
-
v = listener == clistener && filter == cfilter && handback == chandback
|
25
|
-
found = true if v
|
26
|
-
v
|
27
|
-
end
|
28
|
-
raise javax.management.ListenerNotFoundException.new unless found
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|