adaptation 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|