adaptation 0.0.2 → 0.0.3
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/CHANGELOG +2 -1
- data/bin/breakpointer +3 -0
- data/bin/mom +43 -5
- data/bin/mom~ +46 -0
- data/configs/mom.yml +10 -8
- data/configs/settings.yml +6 -0
- data/dispatches/publish.rb +19 -4
- data/helpers/test_helper.rb +3 -0
- data/lib/adaptation/base.rb +3 -3
- data/lib/adaptation/druby_subscriber.rb +85 -0
- data/lib/adaptation/druby_subscriber.rb~ +79 -0
- data/lib/adaptation/message.rb +255 -75
- data/lib/adaptation/mom.rb +52 -48
- data/lib/adaptation/mom.rb~ +74 -0
- data/lib/adaptation/oapdaemon.rb~ +42 -0
- data/lib/adaptation/test/test_help.rb +3 -3
- data/lib/adaptation.rb +1 -0
- data/lib/binding_of_caller.rb +85 -0
- data/lib/breakpoint.rb +554 -0
- data/lib/breakpoint_client.rb +196 -0
- data/lib/commands/breakpointer.rb +1 -0
- data/lib/commands/subscribe.rb +21 -7
- data/lib/commands/subscribe.rb~ +25 -0
- data/lib/rails_generator/generators/applications/app/app_generator.rb +4 -1
- data/lib/rails_generator/generators/applications/app/app_generator.rb~ +136 -0
- data/lib/rails_generator/generators/components/adaptor/templates/functional_test.rb +1 -1
- data/lib/rails_generator/generators/components/message/templates/unit_test.rb +0 -1
- metadata +49 -36
- data/lib/adaptation/oapdaemon.rb +0 -38
- /data/lib/commands/{mom.rb → mom.rb.descartat} +0 -0
data/CHANGELOG
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
* 0.0.
|
1
|
+
* 0.0.3
|
2
|
+
- changed script/mom to mom as a standalone executable (like adaptation)
|
data/bin/breakpointer
ADDED
data/bin/mom
CHANGED
@@ -1,8 +1,46 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
unless defined? ADAPTOR_ROOT
|
3
|
-
ADAPTOR_ROOT = File.expand_path(File.dirname(__FILE__) + '/..')
|
4
|
-
end
|
5
1
|
require 'rubygems'
|
6
2
|
require 'adaptation'
|
3
|
+
require 'adaptation/mom'
|
4
|
+
|
5
|
+
DEFAULT_HOST = "127.0.0.1"
|
6
|
+
DEFAULT_PORT = "8080"
|
7
|
+
|
8
|
+
# search mom configuration file.
|
9
|
+
# - first by specified parameter
|
10
|
+
# - second in /etc/adaptation (*nix systems)
|
11
|
+
# - third in the gem itself
|
12
|
+
|
13
|
+
if File.exists?(File.dirname(__FILE__) + '/../configs/mom.yml')
|
14
|
+
file = File.dirname(__FILE__) + '/../configs/mom.yml'
|
15
|
+
end
|
16
|
+
|
17
|
+
if File.exists?('/etc/adaptation/mom.yml')
|
18
|
+
file = '/etc/adaptation/mom.yml'
|
19
|
+
end
|
7
20
|
|
8
|
-
|
21
|
+
if %w(--file -f).include? ARGV.first
|
22
|
+
file = ARGV[1]
|
23
|
+
end
|
24
|
+
|
25
|
+
#if %w(--environment -e).include? ARGV.first
|
26
|
+
# environment = ARGV[1]
|
27
|
+
#end
|
28
|
+
environment = "development"
|
29
|
+
|
30
|
+
if file.nil?
|
31
|
+
config = {"mom" => {"type" => "druby", "host" => DEFAULT_HOST, "port" => DEFAULT_PORT}}
|
32
|
+
else
|
33
|
+
config = YAML::load(File.open(file))[environment]
|
34
|
+
end
|
35
|
+
|
36
|
+
Signal.trap("INT") { puts "Shutting down MOM server (#{config["mom"]["type"]})"; exit }
|
37
|
+
|
38
|
+
case config["mom"]["type"]
|
39
|
+
when "druby"
|
40
|
+
mom_uri = "druby://#{config["mom"]["host"]}:#{config["mom"]["port"]}"
|
41
|
+
mom = Adaptation::Mom::Mom.new mom_uri
|
42
|
+
mom.start
|
43
|
+
#when "xmlblaster"
|
44
|
+
else
|
45
|
+
puts "Unknown MOM server type: #{config["mom"]["type"]}"
|
46
|
+
end
|
data/bin/mom~
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'adaptation'
|
3
|
+
require 'adaptation/mom'
|
4
|
+
|
5
|
+
DEFAULT_HOST = "127.0.0.1"
|
6
|
+
DEFAULT_PORT = "8080"
|
7
|
+
|
8
|
+
# search mom configuration file.
|
9
|
+
# - first by specified parameter
|
10
|
+
# - second in /etc/adaptation (*nix systems)
|
11
|
+
# - third in the gem itself
|
12
|
+
|
13
|
+
if File.exists?(File.dirname(__FILE__) + '/../configs/mom.yml')
|
14
|
+
file = File.dirname(__FILE__) + '/../configs/mom.yml'
|
15
|
+
end
|
16
|
+
|
17
|
+
if File.exists?('/etc/adaptation/mom.yml')
|
18
|
+
file = '/etc/adaptation/mom.yml'
|
19
|
+
end
|
20
|
+
|
21
|
+
if %w(--file -f).include? ARGV.first
|
22
|
+
file = ARGV[1]
|
23
|
+
end
|
24
|
+
|
25
|
+
#if %w(--environment -e).include? ARGV.first
|
26
|
+
# environment = ARGV[1]
|
27
|
+
#end
|
28
|
+
environment = "development"
|
29
|
+
|
30
|
+
if file.nil?
|
31
|
+
config = {"mom" => {"type" => "druby", "host" => DEFAULT_HOST, "port" => DEFAULT_PORT}}
|
32
|
+
else
|
33
|
+
config = YAML::load(File.open(file))[environment]
|
34
|
+
end
|
35
|
+
|
36
|
+
Signal.trap("INT") { puts "Shutting down MOM server (#{config["mom"]["type"]})"; exit }
|
37
|
+
|
38
|
+
case config["mom"]["type"]
|
39
|
+
when "druby"
|
40
|
+
mom_uri = "druby://#{config["mom"]["host"]}:#{config["mom"]["port"]}"
|
41
|
+
mom = Adaptation::Mom::Mom.new mom_uri
|
42
|
+
mom.start
|
43
|
+
#when "xmlblaster"
|
44
|
+
else
|
45
|
+
puts "Unknown MOM server type: #{config["mom"]["type"]}"
|
46
|
+
end
|
data/configs/mom.yml
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
development:
|
2
|
+
mom:
|
3
|
+
type: druby
|
4
|
+
port: 8080
|
5
|
+
host: 127.0.0.1
|
6
|
+
subscriber:
|
7
|
+
type: druby
|
8
|
+
port: 8081
|
9
|
+
host: 127.0.0.1
|
10
|
+
topics: all
|
data/dispatches/publish.rb
CHANGED
@@ -1,11 +1,26 @@
|
|
1
1
|
unless defined? ADAPTOR_ROOT
|
2
2
|
ADAPTOR_ROOT = File.expand_path(File.dirname(__FILE__) + '/..')
|
3
3
|
end
|
4
|
-
require 'drb'
|
5
4
|
require 'yaml'
|
6
5
|
|
7
6
|
config = YAML::load(File.open("#{ADAPTOR_ROOT}/config/mom.yml"))
|
8
|
-
mom_uri = "druby://#{config["mom"]["host"]}:#{config["mom"]["port"]}"
|
9
7
|
|
10
|
-
mom
|
11
|
-
|
8
|
+
case config["mom"]["type"]
|
9
|
+
when "druby"
|
10
|
+
require 'drb'
|
11
|
+
|
12
|
+
mom_uri = "druby://#{config["mom"]["host"]}:#{config["mom"]["port"]}"
|
13
|
+
|
14
|
+
mom = DRbObject.new(nil, mom_uri)
|
15
|
+
mom.publish ARGV[1], ARGV[0]
|
16
|
+
|
17
|
+
when "xmlblaster"
|
18
|
+
require "rubygems"
|
19
|
+
require "adaptation/xmlblaster_client"
|
20
|
+
|
21
|
+
xbc = XmlblasterClient.new(config["mom"]["host"], config["mom"]["port"])
|
22
|
+
xbc.login( "OAP_USER", "OAP_PASS" )
|
23
|
+
xbc.publish( "<key oid='#{ARGV[0]}' contentMime='text/xml'/>", ARGV[1] , "<qos></qos>" )
|
24
|
+
xbc.logout
|
25
|
+
end
|
26
|
+
|
data/helpers/test_helper.rb
CHANGED
data/lib/adaptation/base.rb
CHANGED
@@ -4,7 +4,7 @@ module Adaptation
|
|
4
4
|
|
5
5
|
def initialize
|
6
6
|
$environment = "development"
|
7
|
-
$config = YAML::load(File.open("config/settings.yml"))[$environment]
|
7
|
+
$config = YAML::load(File.open("#{ADAPTOR_ROOT}/config/settings.yml"))[$environment]
|
8
8
|
|
9
9
|
# require all adaptors
|
10
10
|
Dir["#{ADAPTOR_ROOT}/app/adaptors/*.rb"].each do |f|
|
@@ -22,8 +22,8 @@ module Adaptation
|
|
22
22
|
end
|
23
23
|
|
24
24
|
# connect with database -> this could also be avoided?
|
25
|
-
if File.exists?("config/database.yml")
|
26
|
-
development_configurations = YAML::load(File.open("config/database.yml"))[$environment]
|
25
|
+
if File.exists?("#{ADAPTOR_ROOT}/config/database.yml")
|
26
|
+
development_configurations = YAML::load(File.open("#{ADAPTOR_ROOT}/config/database.yml"))[$environment]
|
27
27
|
ActiveRecord::Base.configurations.update("development" => development_configurations)
|
28
28
|
ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations[$environment])
|
29
29
|
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'drb'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module Adaptation
|
5
|
+
|
6
|
+
module Mom
|
7
|
+
|
8
|
+
class DrubySubscriber
|
9
|
+
|
10
|
+
def initialize subscriber_uri, mom_uri, topics
|
11
|
+
@subscriber_uri = subscriber_uri
|
12
|
+
@mom_uri = mom_uri
|
13
|
+
@topics = topics
|
14
|
+
@adaptors_list = Array.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def process message, topic
|
18
|
+
if ( (@topics.include?(topic)) or (@topics == "all") )
|
19
|
+
system("ruby public/dispatch.rb #{message}")
|
20
|
+
end
|
21
|
+
puts "#{topic} => #{message}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def subscription_result subscribed
|
25
|
+
if subscribed
|
26
|
+
puts "Subscribed to mom (#{@mom_uri}). Listening at #{@subscriber_uri}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# TODO: Think what exactly is this subscriber:
|
31
|
+
# - path to file
|
32
|
+
# - combination of a path and a set of conditions <- looks better...
|
33
|
+
# - ...
|
34
|
+
def note_me_down adaptor
|
35
|
+
unless @adaptors_list.include? adaptor
|
36
|
+
@adaptors_list << adaptor
|
37
|
+
puts "Added adaptor: #{adaptor}"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def start
|
42
|
+
uri_owner = false
|
43
|
+
begin
|
44
|
+
# try to start the subscriber service,
|
45
|
+
# using the uri specified in config/mom.yml
|
46
|
+
DRb.start_service(@subscriber_uri, self)
|
47
|
+
|
48
|
+
# subscribe that uri to the mom
|
49
|
+
mom = DRbObject.new(nil, @mom_uri)
|
50
|
+
mom.subscribe @subscriber_uri
|
51
|
+
uri_owner = true
|
52
|
+
rescue Exception => e
|
53
|
+
# desired uri already in use...
|
54
|
+
# if the process using it is a subscriber, this
|
55
|
+
# shouldn't be a problem
|
56
|
+
uri_owner = false
|
57
|
+
end
|
58
|
+
|
59
|
+
# try to tell to the subscriber using the uri
|
60
|
+
# (may be this self instance of DrubySubscriber),
|
61
|
+
# that we want to be executed when the MOM
|
62
|
+
# calls its process method
|
63
|
+
begin
|
64
|
+
subscriber = DRbObject.new(nil, @subscriber_uri)
|
65
|
+
routes_file = File.expand_path(File.dirname(__FILE__) + '/../config/routes.rb')
|
66
|
+
subscriber.note_me_down routes_file
|
67
|
+
rescue Exception => e
|
68
|
+
# the process using @subscriber_uri is not
|
69
|
+
# an instance of DrubySubsciber...
|
70
|
+
puts "Couldn't start or find subscriber at #{@subscriber_uri}:"
|
71
|
+
puts "#{e}"
|
72
|
+
return
|
73
|
+
end
|
74
|
+
|
75
|
+
if uri_owner
|
76
|
+
DRb.thread.join # Don't exit just yet!
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'drb'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module Adaptation
|
5
|
+
|
6
|
+
module Mom
|
7
|
+
|
8
|
+
class DrubySubscriber
|
9
|
+
|
10
|
+
def initialize subscriber_uri, mom_uri, topics
|
11
|
+
@subscriber_uri = subscriber_uri
|
12
|
+
@mom_uri = mom_uri
|
13
|
+
@topics = topics
|
14
|
+
@adaptors_list = Array.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def process message, topic
|
18
|
+
if ( (@topics.include?(topic)) or (@topics == "all") )
|
19
|
+
system("ruby public/dispatch.rb #{message}")
|
20
|
+
end
|
21
|
+
puts "#{topic} => #{message}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def subscription_result subscribed
|
25
|
+
if subscribed
|
26
|
+
puts "Subscribed to mom (#{@mom_uri}). Listening at #{@subscriber_uri}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# TODO: Think what exactly is this subscriber:
|
31
|
+
# - path to file
|
32
|
+
# - combination of a path and a set of conditions <- looks better...
|
33
|
+
# - ...
|
34
|
+
def note_me_down adaptor
|
35
|
+
unless @adaptors_list.include? adaptor
|
36
|
+
@adaptors_list << adaptor
|
37
|
+
puts "Added adaptor: #{adaptor}"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def start
|
42
|
+
begin
|
43
|
+
# try to start the subscriber service,
|
44
|
+
# using the uri specified in config/mom.yml
|
45
|
+
DRb.start_service(@subscriber_uri, self)
|
46
|
+
|
47
|
+
# subscribe that uri to the mom
|
48
|
+
mom = DRbObject.new(nil, @mom_uri)
|
49
|
+
mom.subscribe @subscriber_uri
|
50
|
+
rescue Exception => e
|
51
|
+
# desired uri already in use...
|
52
|
+
# if the process using it is a subscriber, this
|
53
|
+
# shouldn't be a problem
|
54
|
+
end
|
55
|
+
|
56
|
+
# try to tell to the subscriber using the uri
|
57
|
+
# (may be this self instance of DrubySubscriber),
|
58
|
+
# that we want to be executed when the MOM
|
59
|
+
# calls its process method
|
60
|
+
begin
|
61
|
+
subscriber = DRbObject.new(nil, @subscriber_uri)
|
62
|
+
routes_file = File.expand_path(File.dirname(__FILE__) + '/../config/routes.rb')
|
63
|
+
subscriber.note_me_down routes_file
|
64
|
+
rescue Exception => e
|
65
|
+
# the process using @subscriber_uri is not
|
66
|
+
# an instance of DrubySubsciber...
|
67
|
+
puts "Couldn't start or find subscriber at #{@subscriber_uri}:"
|
68
|
+
puts "#{e}"
|
69
|
+
return
|
70
|
+
end
|
71
|
+
|
72
|
+
DRb.thread.join # Don't exit just yet!
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|