activemessaging 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,40 @@
1
+ language: ruby
2
+ gemfile:
3
+ - gemfiles/activesupport23.gemfile
4
+ - gemfiles/activesupport30.gemfile
5
+ - gemfiles/activesupport31.gemfile
6
+ - gemfiles/activesupport32.gemfile
7
+ rvm:
8
+ - 1.8.7
9
+ - 1.9.2
10
+ - 1.9.3
11
+ - ruby-head
12
+ - ree
13
+ - jruby-18mode
14
+ - jruby-19mode
15
+ - jruby-head
16
+ - rbx-18mode
17
+ - rbx-19mode
18
+ matrix:
19
+ allow_failures:
20
+ - rvm: jruby-18mode
21
+ - rvm: jruby-19mode
22
+ - rvm: jruby-head
23
+ - rvm: rbx-18mode
24
+ - rvm: rbx-19mode
25
+ - rvm: ruby-head
26
+ exclude:
27
+ - rvm: 1.9.3
28
+ gemfile: gemfiles/activesupport23.gemfile
29
+ - rvm: ruby-head
30
+ gemfile: gemfiles/activesupport23.gemfile
31
+ - rvm: jruby-19mode
32
+ gemfile: gemfiles/activesupport23.gemfile
33
+ - rvm: jruby-head
34
+ gemfile: gemfiles/activesupport23.gemfile
35
+ - rvm: rbx-19mode
36
+ gemfile: gemfiles/activesupport23.gemfile
37
+ notifications:
38
+ recipients:
39
+ - matt.campbell@vibes.com
40
+ - lance.cooper@vibes.com
data/Appraisals ADDED
@@ -0,0 +1,19 @@
1
+ appraise "activesupport23" do
2
+ gem "activesupport", "~> 2.3.11"
3
+ end
4
+
5
+ appraise "activesupport30" do
6
+ gem "activesupport", "~> 3.0.8"
7
+ gem "i18n"
8
+ end
9
+
10
+ appraise "activesupport31" do
11
+ gem "activesupport", "~> 3.1.2"
12
+ gem "i18n"
13
+ end
14
+
15
+ appraise "activesupport32" do
16
+ gem "activesupport", "~> 3.2.2"
17
+ end
18
+
19
+ # vim: filetype=ruby
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source "http://rubygems.org"
2
+
3
+ # We group everything into test because while a default bundle install
4
+ # pulls in this group, Jeweler does not include it when consulting the
5
+ # Gemfile for dependencies.
6
+ # The short syntax isn't used because the appraisal gem does not support it.
7
+ gem 'reliable-msg', '~>1.1', :group => :test, :platform => :ruby if RUBY_VERSION < '1.9'
8
+ gem 'jruby-activemq', :group => :test, :platform => :jruby
9
+ gem 'appraisal', :group => :test
10
+
11
+ gemspec :development_group => :test
data/Gemfile.lock ADDED
@@ -0,0 +1,46 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ activemessaging (0.11.0)
5
+ activemessaging
6
+ activesupport (>= 2.3.11)
7
+ celluloid
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activesupport (3.2.7)
13
+ i18n (~> 0.6)
14
+ multi_json (~> 1.0)
15
+ appraisal (0.4.1)
16
+ bundler
17
+ rake
18
+ celluloid (0.11.1)
19
+ timers (>= 1.0.0)
20
+ git (1.2.5)
21
+ i18n (0.6.0)
22
+ jeweler (1.8.4)
23
+ bundler (~> 1.0)
24
+ git (>= 1.2.5)
25
+ rake
26
+ rdoc
27
+ jruby-activemq (5.5.1-java)
28
+ json (1.7.4)
29
+ json (1.7.4-java)
30
+ multi_json (1.3.6)
31
+ rake (0.9.2.2)
32
+ rdoc (3.12)
33
+ json (~> 1.4)
34
+ stomp (1.2.4)
35
+ timers (1.0.1)
36
+
37
+ PLATFORMS
38
+ java
39
+ ruby
40
+
41
+ DEPENDENCIES
42
+ activemessaging!
43
+ appraisal
44
+ jeweler
45
+ jruby-activemq
46
+ stomp
data/Rakefile CHANGED
@@ -1,7 +1,11 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
1
4
  require 'rake'
2
5
  require 'rake/testtask'
3
6
  require 'rdoc/rdoc'
4
- require 'rake/gempackagetask'
7
+
8
+ require 'appraisal'
5
9
 
6
10
  desc 'Default: run unit tests.'
7
11
  task :default => :test
@@ -29,12 +33,17 @@ begin
29
33
  gemspec.description = "ActiveMessaging is an attempt to bring the simplicity and elegance of rails development to the world of messaging. Messaging, (or event-driven architecture) is widely used for enterprise integration, with frameworks such as Java's JMS, and products such as ActiveMQ, Tibco, IBM MQSeries, etc. Now supporting Rails 3 as of version 0.8.0."
30
34
  gemspec.email = "activemessaging-discuss@googlegroups.com"
31
35
  gemspec.homepage = "http://github.com/kookster/activemessaging"
32
- gemspec.authors = ["Jon Tirsen", "Andrew Kuklewicz", "Olle Jonsson", "Sylvain Perez", "Cliff Moon", 'Uwe Kubosch']
36
+ gemspec.authors = ["Jon Tirsen", "Andrew Kuklewicz", "Olle Jonsson", "Sylvain Perez", "Cliff Moon", 'Uwe Kubosch', 'Lance Cooper', 'Matt Campbell']
33
37
 
34
38
  # added
35
- gemspec.add_dependency('activesupport', '>= 1.0.0')
39
+ gemspec.add_dependency('activesupport', '>= 2.3.11')
36
40
  gemspec.add_dependency('celluloid')
37
-
41
+
42
+ gemspec.add_development_dependency('jeweler')
43
+ gemspec.add_development_dependency('stomp')
44
+ gemspec.add_development_dependency('appraisal')
45
+ #gemspec.add_development_dependency('reliable-msg')
46
+
38
47
  end
39
48
  Jeweler::GemcutterTasks.new
40
49
  rescue LoadError
@@ -66,8 +75,3 @@ end
66
75
  # s.add_dependency(%q<rubigen>, [">= 1.5.2"])
67
76
  # #s.add_dependency(%q<common-pool-cliffmoon>, [">= 0.0.3"])
68
77
  # end
69
-
70
- # desc 'Generate ActiveMessaging gem.'
71
- # Rake::GemPackageTask.new(gem_spec) do |pkg|
72
- # end
73
-
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.0
1
+ 0.12.0
@@ -5,10 +5,10 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "activemessaging"
8
- s.version = "0.11.0"
8
+ s.version = "0.12.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Jon Tirsen", "Andrew Kuklewicz", "Olle Jonsson", "Sylvain Perez", "Cliff Moon", "Uwe Kubosch"]
11
+ s.authors = ["Jon Tirsen", "Andrew Kuklewicz", "Olle Jonsson", "Sylvain Perez", "Cliff Moon", "Uwe Kubosch", "Lance Cooper", "Matt Campbell"]
12
12
  s.date = "2012-08-07"
13
13
  s.description = "ActiveMessaging is an attempt to bring the simplicity and elegance of rails development to the world of messaging. Messaging, (or event-driven architecture) is widely used for enterprise integration, with frameworks such as Java's JMS, and products such as ActiveMQ, Tibco, IBM MQSeries, etc. Now supporting Rails 3 as of version 0.8.0."
14
14
  s.email = "activemessaging-discuss@googlegroups.com"
@@ -16,10 +16,22 @@ Gem::Specification.new do |s|
16
16
  "README.md"
17
17
  ]
18
18
  s.files = [
19
+ ".travis.yml",
20
+ "Appraisals",
21
+ "Gemfile",
22
+ "Gemfile.lock",
19
23
  "README.md",
20
24
  "Rakefile",
21
25
  "VERSION",
22
26
  "activemessaging.gemspec",
27
+ "gemfiles/activesupport23.gemfile",
28
+ "gemfiles/activesupport23.gemfile.lock",
29
+ "gemfiles/activesupport30.gemfile",
30
+ "gemfiles/activesupport30.gemfile.lock",
31
+ "gemfiles/activesupport31.gemfile",
32
+ "gemfiles/activesupport31.gemfile.lock",
33
+ "gemfiles/activesupport32.gemfile",
34
+ "gemfiles/activesupport32.gemfile.lock",
23
35
  "generators/a13g_test_harness/a13g_test_harness_generator.rb",
24
36
  "generators/a13g_test_harness/templates/active_messaging_test.rhtml",
25
37
  "generators/a13g_test_harness/templates/active_messaging_test_controller.rb",
@@ -30,7 +42,7 @@ Gem::Specification.new do |s|
30
42
  "generators/filter/templates/filter_test.rb",
31
43
  "generators/processor/USAGE",
32
44
  "generators/processor/processor_generator.rb",
33
- "generators/processor/templates/application.rb",
45
+ "generators/processor/templates/application_processor.rb",
34
46
  "generators/processor/templates/broker.yml",
35
47
  "generators/processor/templates/jruby_poller",
36
48
  "generators/processor/templates/messaging.rb",
@@ -104,15 +116,27 @@ Gem::Specification.new do |s|
104
116
  s.specification_version = 3
105
117
 
106
118
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
107
- s.add_runtime_dependency(%q<activesupport>, [">= 1.0.0"])
119
+ s.add_runtime_dependency(%q<activemessaging>, [">= 0"])
120
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.3.11"])
108
121
  s.add_runtime_dependency(%q<celluloid>, [">= 0"])
122
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
123
+ s.add_development_dependency(%q<stomp>, [">= 0"])
124
+ s.add_development_dependency(%q<appraisal>, [">= 0"])
109
125
  else
110
- s.add_dependency(%q<activesupport>, [">= 1.0.0"])
126
+ s.add_dependency(%q<activemessaging>, [">= 0"])
127
+ s.add_dependency(%q<activesupport>, [">= 2.3.11"])
111
128
  s.add_dependency(%q<celluloid>, [">= 0"])
129
+ s.add_dependency(%q<jeweler>, [">= 0"])
130
+ s.add_dependency(%q<stomp>, [">= 0"])
131
+ s.add_dependency(%q<appraisal>, [">= 0"])
112
132
  end
113
133
  else
114
- s.add_dependency(%q<activesupport>, [">= 1.0.0"])
134
+ s.add_dependency(%q<activemessaging>, [">= 0"])
135
+ s.add_dependency(%q<activesupport>, [">= 2.3.11"])
115
136
  s.add_dependency(%q<celluloid>, [">= 0"])
137
+ s.add_dependency(%q<jeweler>, [">= 0"])
138
+ s.add_dependency(%q<stomp>, [">= 0"])
139
+ s.add_dependency(%q<appraisal>, [">= 0"])
116
140
  end
117
141
  end
118
142
 
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "reliable-msg", "~>1.1", :group=>:test, :platform=>:ruby
6
+ gem "jruby-activemq", :group=>:test, :platform=>:jruby
7
+ gem "appraisal", :group=>:test
8
+ gem "activesupport", "~> 2.3.11"
9
+
10
+ gemspec :path=>"../", :development_group=>:test
@@ -0,0 +1,51 @@
1
+ PATH
2
+ remote: /Users/LCooper/src/activemessaging
3
+ specs:
4
+ activemessaging (0.10.0)
5
+ activemessaging
6
+ activesupport (>= 2.3.11)
7
+ celluloid
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activesupport (2.3.14)
13
+ appraisal (0.4.1)
14
+ bundler
15
+ rake
16
+ celluloid (0.11.1)
17
+ timers (>= 1.0.0)
18
+ git (1.2.5)
19
+ jeweler (1.8.4)
20
+ bundler (~> 1.0)
21
+ git (>= 1.2.5)
22
+ rake
23
+ rdoc
24
+ jruby-activemq (5.5.1-java)
25
+ json (1.7.4)
26
+ json (1.7.4-java)
27
+ macaddr (1.6.1)
28
+ systemu (~> 2.5.0)
29
+ rake (0.9.2.2)
30
+ rdoc (3.12)
31
+ json (~> 1.4)
32
+ reliable-msg (1.1.0)
33
+ uuid (>= 1.0.0)
34
+ stomp (1.2.4)
35
+ systemu (2.5.2)
36
+ timers (1.0.1)
37
+ uuid (2.3.5)
38
+ macaddr (~> 1.0)
39
+
40
+ PLATFORMS
41
+ java
42
+ ruby
43
+
44
+ DEPENDENCIES
45
+ activemessaging!
46
+ activesupport (~> 2.3.11)
47
+ appraisal
48
+ jeweler
49
+ jruby-activemq
50
+ reliable-msg (~> 1.1)
51
+ stomp
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "reliable-msg", "~>1.1", :group=>:test, :platform=>:ruby
6
+ gem "jruby-activemq", :group=>:test, :platform=>:jruby
7
+ gem "appraisal", :group=>:test
8
+ gem "activesupport", "~> 3.0.8"
9
+ gem "i18n"
10
+
11
+ gemspec :path=>"../", :development_group=>:test
@@ -0,0 +1,53 @@
1
+ PATH
2
+ remote: /Users/LCooper/src/activemessaging
3
+ specs:
4
+ activemessaging (0.10.0)
5
+ activemessaging
6
+ activesupport (>= 2.3.11)
7
+ celluloid
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activesupport (3.0.16)
13
+ appraisal (0.4.1)
14
+ bundler
15
+ rake
16
+ celluloid (0.11.1)
17
+ timers (>= 1.0.0)
18
+ git (1.2.5)
19
+ i18n (0.6.0)
20
+ jeweler (1.8.4)
21
+ bundler (~> 1.0)
22
+ git (>= 1.2.5)
23
+ rake
24
+ rdoc
25
+ jruby-activemq (5.5.1-java)
26
+ json (1.7.4)
27
+ json (1.7.4-java)
28
+ macaddr (1.6.1)
29
+ systemu (~> 2.5.0)
30
+ rake (0.9.2.2)
31
+ rdoc (3.12)
32
+ json (~> 1.4)
33
+ reliable-msg (1.1.0)
34
+ uuid (>= 1.0.0)
35
+ stomp (1.2.4)
36
+ systemu (2.5.2)
37
+ timers (1.0.1)
38
+ uuid (2.3.5)
39
+ macaddr (~> 1.0)
40
+
41
+ PLATFORMS
42
+ java
43
+ ruby
44
+
45
+ DEPENDENCIES
46
+ activemessaging!
47
+ activesupport (~> 3.0.8)
48
+ appraisal
49
+ i18n
50
+ jeweler
51
+ jruby-activemq
52
+ reliable-msg (~> 1.1)
53
+ stomp
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "reliable-msg", "~>1.1", :group=>:test, :platform=>:ruby
6
+ gem "jruby-activemq", :group=>:test, :platform=>:jruby
7
+ gem "appraisal", :group=>:test
8
+ gem "activesupport", "~> 3.1.2"
9
+ gem "i18n"
10
+
11
+ gemspec :path=>"../", :development_group=>:test
@@ -0,0 +1,55 @@
1
+ PATH
2
+ remote: /Users/LCooper/src/activemessaging
3
+ specs:
4
+ activemessaging (0.10.0)
5
+ activemessaging
6
+ activesupport (>= 2.3.11)
7
+ celluloid
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activesupport (3.1.7)
13
+ multi_json (>= 1.0, < 1.3)
14
+ appraisal (0.4.1)
15
+ bundler
16
+ rake
17
+ celluloid (0.11.1)
18
+ timers (>= 1.0.0)
19
+ git (1.2.5)
20
+ i18n (0.6.0)
21
+ jeweler (1.8.4)
22
+ bundler (~> 1.0)
23
+ git (>= 1.2.5)
24
+ rake
25
+ rdoc
26
+ jruby-activemq (5.5.1-java)
27
+ json (1.7.4)
28
+ json (1.7.4-java)
29
+ macaddr (1.6.1)
30
+ systemu (~> 2.5.0)
31
+ multi_json (1.2.0)
32
+ rake (0.9.2.2)
33
+ rdoc (3.12)
34
+ json (~> 1.4)
35
+ reliable-msg (1.1.0)
36
+ uuid (>= 1.0.0)
37
+ stomp (1.2.4)
38
+ systemu (2.5.2)
39
+ timers (1.0.1)
40
+ uuid (2.3.5)
41
+ macaddr (~> 1.0)
42
+
43
+ PLATFORMS
44
+ java
45
+ ruby
46
+
47
+ DEPENDENCIES
48
+ activemessaging!
49
+ activesupport (~> 3.1.2)
50
+ appraisal
51
+ i18n
52
+ jeweler
53
+ jruby-activemq
54
+ reliable-msg (~> 1.1)
55
+ stomp
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "reliable-msg", "~>1.1", :group=>:test, :platform=>:ruby
6
+ gem "jruby-activemq", :group=>:test, :platform=>:jruby
7
+ gem "appraisal", :group=>:test
8
+ gem "activesupport", "~> 3.2.2"
9
+
10
+ gemspec :path=>"../", :development_group=>:test
@@ -0,0 +1,55 @@
1
+ PATH
2
+ remote: /Users/LCooper/src/activemessaging
3
+ specs:
4
+ activemessaging (0.10.0)
5
+ activemessaging
6
+ activesupport (>= 2.3.11)
7
+ celluloid
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activesupport (3.2.7)
13
+ i18n (~> 0.6)
14
+ multi_json (~> 1.0)
15
+ appraisal (0.4.1)
16
+ bundler
17
+ rake
18
+ celluloid (0.11.1)
19
+ timers (>= 1.0.0)
20
+ git (1.2.5)
21
+ i18n (0.6.0)
22
+ jeweler (1.8.4)
23
+ bundler (~> 1.0)
24
+ git (>= 1.2.5)
25
+ rake
26
+ rdoc
27
+ jruby-activemq (5.5.1-java)
28
+ json (1.7.4)
29
+ json (1.7.4-java)
30
+ macaddr (1.6.1)
31
+ systemu (~> 2.5.0)
32
+ multi_json (1.3.6)
33
+ rake (0.9.2.2)
34
+ rdoc (3.12)
35
+ json (~> 1.4)
36
+ reliable-msg (1.1.0)
37
+ uuid (>= 1.0.0)
38
+ stomp (1.2.4)
39
+ systemu (2.5.2)
40
+ timers (1.0.1)
41
+ uuid (2.3.5)
42
+ macaddr (~> 1.0)
43
+
44
+ PLATFORMS
45
+ java
46
+ ruby
47
+
48
+ DEPENDENCIES
49
+ activemessaging!
50
+ activesupport (~> 3.2.2)
51
+ appraisal
52
+ jeweler
53
+ jruby-activemq
54
+ reliable-msg (~> 1.1)
55
+ stomp
@@ -19,7 +19,7 @@ class ProcessorGenerator < NamedBase
19
19
 
20
20
  m.template 'messaging.rb', File.join('config', "messaging.rb")
21
21
  m.file 'broker.yml', File.join('config', "broker.yml")
22
- m.file 'application.rb', File.join(path, "application.rb")
22
+ m.file 'application_processor.rb', File.join(path, "application_processor.rb")
23
23
  m.file 'poller.rb', File.join('lib', "poller.rb")
24
24
  if defined?(JRUBY_VERSION)
25
25
  m.file 'jruby_poller', File.join('script', "jruby_poller"), { :chmod => 0755 }
@@ -2,16 +2,16 @@
2
2
 
3
3
  ENV['APP_ROOT'] ||= File.expand_path(File.join(File.dirname(__FILE__), '..'))
4
4
  APP_ROOT = ENV['APP_ROOT']
5
+ ENV['APP_NAME'] ||= "poller"
6
+ APP_NAME = ENV['APP_NAME']
5
7
  script_file = File.join(APP_ROOT, 'lib', 'poller.rb')
6
8
  tmp_dir = File.join(APP_ROOT, 'tmp')
7
9
 
8
10
  require 'rubygems'
9
11
  require 'daemons'
10
- require 'activesupport'
11
- require 'activemessaging'
12
12
 
13
13
  options = {
14
- :app_name => "poller",
14
+ :app_name => APP_NAME,
15
15
  :dir_mode => :normal,
16
16
  :dir => tmp_dir,
17
17
  :multiple => true,
@@ -3,6 +3,9 @@
3
3
  STDOUT.sync = true; STDOUT.flush
4
4
  STDERR.sync = true; STDERR.flush
5
5
 
6
+ # The daemons gem sets our cwd to /, which Rails doesn't work well with.
7
+ Dir.chdir APP_ROOT
8
+
6
9
  #Try to Load Merb
7
10
  merb_init_file = File.expand_path(File.dirname(__FILE__)+'/../config/merb_init')
8
11
  if File.exists? merb_init_file
@@ -17,8 +20,7 @@ else
17
20
  require File.join(RAILS_ROOT, 'config', 'environment')
18
21
  end
19
22
 
20
- # Load ActiveMessaging processors
21
- #ActiveMessaging::load_processors
22
-
23
23
  # Start it up!
24
- ActiveMessaging::start
24
+ require 'activemessaging'
25
+ ActiveMessaging.load_activemessaging
26
+ ActiveMessaging.start
@@ -1,6 +1,7 @@
1
1
  if defined?(JRUBY_VERSION)
2
2
  #require 'java'
3
3
  include Java
4
+ require 'activemq'
4
5
 
5
6
  begin
6
7
  java_import javax.naming.InitialContext
@@ -239,4 +240,4 @@ module ActiveMessaging
239
240
  end
240
241
  end
241
242
 
242
- end
243
+ end
@@ -6,14 +6,23 @@ module ActiveMessaging
6
6
  def initialize(body=nil, id=nil, headers={}, destination=nil)
7
7
  @body, @id, @headers, @destination = body, id, headers, destination
8
8
  end
9
-
9
+
10
10
  def matches_subscription?(subscription)
11
11
  self.destination.to_s == subscription.destination.value.to_s
12
12
  end
13
13
 
14
+ def dup
15
+ super.tap do |copy|
16
+ [:body, :id, :headers, :destination].each do |field_name|
17
+ value = send field_name
18
+ copy.send "#{field_name}=", (value.duplicable? ? value.dup : value)
19
+ end
20
+ end
21
+ end
22
+
14
23
  def to_s
15
24
  "<#{self.class.name} id='#{id}' headers='#{headers.inspect}' body='#{body}' >"
16
25
  end
17
26
  end
18
27
 
19
- end
28
+ end
@@ -234,7 +234,7 @@ module ActiveMessaging
234
234
  :direction => :incoming
235
235
  }
236
236
  begin
237
- execute_filter_chain(:incoming, message, routing) do |m|
237
+ execute_filter_chain(:incoming, message.dup, routing) do |m|
238
238
  result = subscription.processor_class.new.process!(m)
239
239
  end
240
240
  rescue ActiveMessaging::AbortMessageException
@@ -24,12 +24,12 @@ module ActiveMessaging #:nodoc:
24
24
  def self.reset
25
25
  unsubscribe
26
26
  disconnect
27
- @@filters = []
28
- @@subscriptions = {}
29
- @@named_destinations = {}
30
- @@processor_groups = {}
31
- @@current_processor_group = nil
32
- @@connections = {}
27
+ @filters = []
28
+ @subscriptions = {}
29
+ @named_destinations = {}
30
+ @processor_groups = {}
31
+ @current_processor_group = nil
32
+ @connections = {}
33
33
  end
34
34
  end
35
35
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  # This owes no small debt to sidekiq for showing how to use celluloid for polling for messages.
5
5
  # https://github.com/mperham/sidekiq/blob/poller/lib/sidekiq/manager.rb
6
-
6
+ if RUBY_VERSION.to_f >= 1.9 # Celluloid requires fibers support, which is not available on 1.8
7
7
  require 'celluloid'
8
8
 
9
9
  module ActiveMessaging
@@ -205,4 +205,5 @@ module ActiveMessaging
205
205
 
206
206
  end
207
207
 
208
- end
208
+ end
209
+ end # if RUBY_VERSION
data/test/gateway_test.rb CHANGED
@@ -14,10 +14,7 @@ class InitializeFilter
14
14
  end
15
15
 
16
16
  class GatewayTest < Test::Unit::TestCase
17
-
18
-
19
17
  class ClassFilter
20
-
21
18
  def initialize
22
19
  raise "Don't try and construct one of these please"
23
20
  end
@@ -35,6 +32,17 @@ class GatewayTest < Test::Unit::TestCase
35
32
  end
36
33
  end
37
34
 
35
+ class MessageManglingFilter
36
+ class << self
37
+ def process(message, details={})
38
+ message.body.upcase!
39
+ message.id.upcase!
40
+ message.headers['the-mangler'] = 'run'
41
+ message.destination.gsub! '/', '#'
42
+ end
43
+ end
44
+ end
45
+
38
46
  class TestProcessor < ActiveMessaging::Processor
39
47
  include ActiveMessaging::MessageSender
40
48
  #subscribes_to :testqueue
@@ -171,6 +179,23 @@ class GatewayTest < Test::Unit::TestCase
171
179
  assert_equal msg, ActiveMessaging::Gateway.connection.unreceived_messages.first
172
180
  end
173
181
 
182
+ def test_aborted_messages_retry_original_message
183
+ ActiveMessaging::Gateway.destination :hello_world, '/queue/helloWorld'
184
+ ActiveMessaging::Gateway.filter 'gateway_test/message_mangling_filter'
185
+ ActiveMessaging::Gateway.subscribe_to :hello_world, TestRetryProcessor, headers={}
186
+
187
+ message_body = "message_body"
188
+ message_id = "55-a-msg"
189
+ message_headers = { 'x-my-header' => 'value' }
190
+ message_destination = '/queue/helloWorld'
191
+ msg = ActiveMessaging::Adapters::Test::Message.new(message_body.dup, message_id.dup, message_headers.dup, message_destination.dup)
192
+ ActiveMessaging::Gateway.dispatch(msg)
193
+ assert_equal message_body, ActiveMessaging::Gateway.connection.unreceived_messages.first.body
194
+ assert_equal message_id, ActiveMessaging::Gateway.connection.unreceived_messages.first.id
195
+ assert_equal message_headers, ActiveMessaging::Gateway.connection.unreceived_messages.first.headers
196
+ assert_equal message_destination, ActiveMessaging::Gateway.connection.unreceived_messages.first.destination
197
+ end
198
+
174
199
  def test_receive
175
200
  ActiveMessaging::Gateway.destination :hello_world, '/queue/helloWorld'
176
201
  ActiveMessaging::Gateway.publish :hello_world, "test_publish body", self.class, headers={}, timeout=10
data/test/jms_test.rb CHANGED
@@ -2,14 +2,16 @@ require File.dirname(__FILE__) + '/test_helper'
2
2
 
3
3
  if defined?(JRUBY_VERSION)
4
4
 
5
+ require 'activemessaging/adapters/jms'
6
+
5
7
  class JmsTest < Test::Unit::TestCase
6
8
 
7
9
  def setup
8
10
  @test_txt = 'Yo Homie!'
9
11
  @isolation_const = rand(99999999)
10
- @connection = ActiveMessaging::Adapters::Jms::Connection.new(:url => 'tcp://localhost:61616',
11
- :login => '',
12
- :passcode => '',
12
+ @connection = ActiveMessaging::Adapters::Jms::Connection.new(:url => 'vm://jms_test',
13
+ :login => '',
14
+ :passcode => '',
13
15
  :connection_factory => 'org.apache.activemq.ActiveMQConnectionFactory')
14
16
  end
15
17
 
@@ -40,6 +42,7 @@ class JmsTest < Test::Unit::TestCase
40
42
 
41
43
  def test_one_off_receive
42
44
  @connection.send "/queue/OneOff#{@isolation_const}", "one off message"
45
+ sleep 2
43
46
  message = @connection.receive "/queue/OneOff#{@isolation_const}"
44
47
  assert_equal "one off message", message.body
45
48
  assert_equal "MESSAGE", message.command
@@ -58,4 +61,4 @@ class JmsTest < Test::Unit::TestCase
58
61
 
59
62
  end
60
63
 
61
- end
64
+ end
@@ -1,6 +1,4 @@
1
1
  require File.dirname(__FILE__) + '/test_helper'
2
- require 'activemessaging/adapters/reliable_msg'
3
-
4
2
  loaded = true
5
3
  begin
6
4
  require 'reliable-msg'
@@ -9,6 +7,8 @@ rescue Object => e
9
7
  end
10
8
  if loaded
11
9
 
10
+ require 'activemessaging/adapters/reliable_msg'
11
+
12
12
  class ReliableMsgTest < Test::Unit::TestCase
13
13
 
14
14
  def setup
@@ -80,4 +80,4 @@ class ReliableMsgTest < Test::Unit::TestCase
80
80
 
81
81
  end
82
82
 
83
- end # if loaded
83
+ end # if loaded
data/test/stomp_test.rb CHANGED
@@ -60,6 +60,18 @@ class StompTest < Test::Unit::TestCase
60
60
  @connection.stomp_connection.receive = @message
61
61
  end
62
62
 
63
+ def sent_command
64
+ @connection.stomp_connection.socket.sent_messages[0]
65
+ end
66
+
67
+ def sent_headers
68
+ @connection.stomp_connection.socket.sent_messages.drop(1).take_while { |line| !line.empty? }
69
+ end
70
+
71
+ def sent_body
72
+ (@connection.stomp_connection.socket.sent_messages.drop_while {|line| !line.empty?}).drop(1).first
73
+ end
74
+
63
75
  def test_initialize
64
76
  i = { :retryMax => 4,
65
77
  :deadLetterQueue=>'/queue/dlq',
@@ -81,34 +93,35 @@ class StompTest < Test::Unit::TestCase
81
93
 
82
94
  def test_disconnect
83
95
  @connection.disconnect
84
- assert_equal "DISCONNECT", @connection.stomp_connection.socket.sent_messages[0]
96
+ assert_equal "DISCONNECT", sent_command
85
97
  end
86
98
 
87
99
  def test_subscribe
88
100
  @connection.subscribe @d, {}
89
- assert_equal "SUBSCRIBE", @connection.stomp_connection.socket.sent_messages[0]
90
- # assert_equal "content-length:0", @connection.stomp_connection.socket.sent_messages[1]
91
- assert_equal "destination:#{@d}", @connection.stomp_connection.socket.sent_messages[1]
101
+ assert_equal "SUBSCRIBE", sent_command
102
+ assert sent_headers.include?("content-length:0"), "No content-length header was sent"
103
+ assert sent_headers.include?("destination:#{@d}"), "No destination header was sent"
92
104
  assert_equal 1, @connection.stomp_connection.subscriptions.count
93
- assert_equal({'content-length'=>'0', :destination=>@d}, @connection.stomp_connection.subscriptions[@d])
105
+ assert_equal({:'content-type'=>'text/plain; charset=UTF-8', :'content-length'=>'0', :destination=>@d}, @connection.stomp_connection.subscriptions[@d])
94
106
  end
95
107
 
96
108
  def test_unsubscribe
97
109
  @connection.subscribe @d, {}
98
110
  @connection.stomp_connection.socket.sent_messages = []
99
111
  @connection.unsubscribe @d, {}
100
- assert_equal "UNSUBSCRIBE", @connection.stomp_connection.socket.sent_messages[0]
101
- # assert_equal "content-length:0", @connection.stomp_connection.socket.sent_messages[1]
102
- assert_equal "destination:#{@d}", @connection.stomp_connection.socket.sent_messages[1]
112
+ assert_equal "UNSUBSCRIBE", sent_command
113
+ assert sent_headers.include?("content-length:0"), "No content-length header was sent"
114
+ assert sent_headers.include?("destination:#{@d}"), "No destination header was sent"
103
115
  assert_equal 0, @connection.stomp_connection.subscriptions.count
104
116
  end
105
117
 
106
118
  def test_send
107
119
  @connection.send(@d, @message, {})
108
- assert_equal 'SEND', @connection.stomp_connection.socket.sent_messages[0]
109
- # assert_equal "content-length:#{@message.length}", @connection.stomp_connection.socket.sent_messages[1]
110
- assert_equal "destination:#{@d}", @connection.stomp_connection.socket.sent_messages[1]
111
- assert_equal @message, @connection.stomp_connection.socket.sent_messages[5]
120
+ assert_equal 'SEND', sent_command
121
+ assert sent_headers.include?("content-length:#{@message.length}"), "No content-length header was sent"
122
+ assert sent_headers.include?("destination:#{@d}"), "No destination header was sent"
123
+ # assert_equal @message, @connection.stomp_connection.socket.sent_messages[5]
124
+ assert_equal @message, sent_body
112
125
  end
113
126
 
114
127
  def test_receive
data/test/test_helper.rb CHANGED
@@ -3,19 +3,31 @@ rails_environtment_file = File.expand_path(File.dirname(__FILE__) + "/../../../.
3
3
  if File.exists? rails_environtment_file
4
4
  require rails_environment_file
5
5
  APP_ROOT = RAILS_ROOT
6
+ APP_ENV = Rails.env
6
7
  else
7
8
  ENV['APP_ENV'] = 'test'
8
9
  APP_ENV = 'test'
10
+ APP_ROOT = File.dirname(__FILE__) + '/app'
9
11
 
10
12
  $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
11
13
  require 'rubygems'
12
- require 'active_support'
14
+ require 'active_support/all'
15
+
16
+ module ActiveMessaging
17
+ def self.app_root
18
+ APP_ROOT
19
+ end
20
+
21
+ def self.app_env
22
+ APP_ENV
23
+ end
24
+ end
25
+
13
26
  require 'activemessaging/message_sender'
14
27
  require 'activemessaging/processor'
15
28
  require 'activemessaging/gateway'
16
29
  require 'activemessaging/filter'
17
30
  require 'activemessaging/adapters/test'
18
- APP_ROOT = File.dirname(__FILE__) + '/app'
19
31
  end
20
32
 
21
33
  # load other libraries
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activemessaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,29 @@ authors:
11
11
  - Sylvain Perez
12
12
  - Cliff Moon
13
13
  - Uwe Kubosch
14
+ - Lance Cooper
15
+ - Matt Campbell
14
16
  autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
  date: 2012-08-07 00:00:00.000000000 Z
18
20
  dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: activemessaging
23
+ requirement: !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ! '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ type: :runtime
30
+ prerelease: false
31
+ version_requirements: !ruby/object:Gem::Requirement
32
+ none: false
33
+ requirements:
34
+ - - ! '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
19
37
  - !ruby/object:Gem::Dependency
20
38
  name: activesupport
21
39
  requirement: !ruby/object:Gem::Requirement
@@ -23,7 +41,7 @@ dependencies:
23
41
  requirements:
24
42
  - - ! '>='
25
43
  - !ruby/object:Gem::Version
26
- version: 1.0.0
44
+ version: 2.3.11
27
45
  type: :runtime
28
46
  prerelease: false
29
47
  version_requirements: !ruby/object:Gem::Requirement
@@ -31,7 +49,7 @@ dependencies:
31
49
  requirements:
32
50
  - - ! '>='
33
51
  - !ruby/object:Gem::Version
34
- version: 1.0.0
52
+ version: 2.3.11
35
53
  - !ruby/object:Gem::Dependency
36
54
  name: celluloid
37
55
  requirement: !ruby/object:Gem::Requirement
@@ -48,6 +66,54 @@ dependencies:
48
66
  - - ! '>='
49
67
  - !ruby/object:Gem::Version
50
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: jeweler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: stomp
87
+ requirement: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: appraisal
103
+ requirement: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ type: :development
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
51
117
  description: ActiveMessaging is an attempt to bring the simplicity and elegance of
52
118
  rails development to the world of messaging. Messaging, (or event-driven architecture)
53
119
  is widely used for enterprise integration, with frameworks such as Java's JMS, and
@@ -59,10 +125,22 @@ extensions: []
59
125
  extra_rdoc_files:
60
126
  - README.md
61
127
  files:
128
+ - .travis.yml
129
+ - Appraisals
130
+ - Gemfile
131
+ - Gemfile.lock
62
132
  - README.md
63
133
  - Rakefile
64
134
  - VERSION
65
135
  - activemessaging.gemspec
136
+ - gemfiles/activesupport23.gemfile
137
+ - gemfiles/activesupport23.gemfile.lock
138
+ - gemfiles/activesupport30.gemfile
139
+ - gemfiles/activesupport30.gemfile.lock
140
+ - gemfiles/activesupport31.gemfile
141
+ - gemfiles/activesupport31.gemfile.lock
142
+ - gemfiles/activesupport32.gemfile
143
+ - gemfiles/activesupport32.gemfile.lock
66
144
  - generators/a13g_test_harness/a13g_test_harness_generator.rb
67
145
  - generators/a13g_test_harness/templates/active_messaging_test.rhtml
68
146
  - generators/a13g_test_harness/templates/active_messaging_test_controller.rb
@@ -73,7 +151,7 @@ files:
73
151
  - generators/filter/templates/filter_test.rb
74
152
  - generators/processor/USAGE
75
153
  - generators/processor/processor_generator.rb
76
- - generators/processor/templates/application.rb
154
+ - generators/processor/templates/application_processor.rb
77
155
  - generators/processor/templates/broker.yml
78
156
  - generators/processor/templates/jruby_poller
79
157
  - generators/processor/templates/messaging.rb
@@ -149,6 +227,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
227
  - - ! '>='
150
228
  - !ruby/object:Gem::Version
151
229
  version: '0'
230
+ segments:
231
+ - 0
232
+ hash: 115054191085730340
152
233
  required_rubygems_version: !ruby/object:Gem::Requirement
153
234
  none: false
154
235
  requirements: