jruby-jms 0.11.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source :rubygems
2
+ gem 'rake'
3
+ gem 'gene_pool'
4
+
5
+ group :development do
6
+ gem 'shoulda'
7
+ end
@@ -0,0 +1,24 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activesupport (3.2.8)
5
+ i18n (~> 0.6)
6
+ multi_json (~> 1.0)
7
+ gene_pool (1.3.0)
8
+ i18n (0.6.1)
9
+ multi_json (1.3.6)
10
+ rake (0.9.2.2)
11
+ shoulda (3.3.2)
12
+ shoulda-context (~> 1.0.1)
13
+ shoulda-matchers (~> 1.4.1)
14
+ shoulda-context (1.0.1)
15
+ shoulda-matchers (1.4.1)
16
+ activesupport (>= 3.0.0)
17
+
18
+ PLATFORMS
19
+ java
20
+
21
+ DEPENDENCIES
22
+ gene_pool
23
+ rake
24
+ shoulda
data/Rakefile CHANGED
@@ -1,22 +1,27 @@
1
+ lib = File.expand_path('../lib/', __FILE__)
2
+ $:.unshift lib unless $:.include?(lib)
3
+
1
4
  raise "jruby-jms must be built with JRuby: try again with `jruby -S rake'" unless defined?(JRUBY_VERSION)
2
5
 
3
6
  require 'rake/clean'
4
7
  require 'rake/testtask'
5
8
  require 'date'
6
9
  require 'java'
10
+ require 'jms/version'
7
11
 
8
12
  desc "Build gem"
9
13
  task :gem do |t|
10
14
  gemspec = Gem::Specification.new do |s|
11
15
  s.name = 'jruby-jms'
12
- s.version = '0.11.2'
16
+ s.version = JMS::VERSION
13
17
  s.author = 'Reid Morrison'
14
- s.email = 'rubywmq@gmail.com'
18
+ s.email = 'reidmo@gmail.com'
15
19
  s.homepage = 'https://github.com/reidmorrison/jruby-jms'
16
20
  s.date = Date.today.to_s
17
21
  s.description = 'JRuby-JMS is a Java and Ruby library that exposes the Java JMS API in a ruby friendly way. For JRuby only.'
18
22
  s.summary = 'JRuby interface into JMS'
19
23
  s.files = FileList["./**/*"].exclude('*.gem', './nbproject/*').map{|f| f.sub(/^\.\//, '')}
24
+ s.add_dependency 'gene_pool'
20
25
  s.has_rdoc = true
21
26
  end
22
27
  Gem::Builder.new(gemspec).build
@@ -0,0 +1,51 @@
1
+ #
2
+ # Example : files_to_q : Place all files in a directory to a queue
3
+ # Each file is written as a separate message
4
+ # Place the data in a file ending with '.data'
5
+ # and the header information in a file with same name, but with an
6
+ # extension of '.yml'
7
+ #
8
+ # jruby files_to_q.rb activemq my_queue
9
+ #
10
+
11
+ # Allow examples to be run in-place without requiring a gem install
12
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
13
+
14
+ require 'rubygems'
15
+ require 'jms'
16
+ require 'yaml'
17
+
18
+ raise("Required Parameters: 'jms_provider' 'queue_name' 'input_directory'") unless ARGV.count >= 2
19
+ jms_provider = ARGV[0]
20
+ queue_name = ARGV[1]
21
+ path = ARGV[2] || queue_name
22
+
23
+ # Load Connection parameters from configuration file
24
+ config = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'jms.yml'))[jms_provider]
25
+ raise "JMS Provider option:#{jms_provider} not found in jms.yml file" unless config
26
+
27
+ counter = 0
28
+ # Consume all available messages on the queue
29
+ JMS::Connection.session(config) do |session|
30
+ session.producer(:queue_name => queue_name) do |producer|
31
+ Dir.glob(File.join(path,'*.data')) do |filename|
32
+ unless File.directory?(filename)
33
+ printf("%5d: #{filename}\n",counter = counter + 1)
34
+ data = File.open(filename, 'rb') {|file| file.read }
35
+ header_filename = File.join(File.dirname(filename), File.basename(filename))
36
+ header_filename = header_filename[0, header_filename.length - '.data'.length] + '.yml'
37
+ header = File.exist?(header_filename) ? YAML.load_file(header_filename) : nil
38
+ message = session.message(data, :bytes)
39
+ if header
40
+ header[:attributes].each_pair do |k,v|
41
+ next if k == :jms_destination
42
+ message.send("#{k}=".to_sym, v) if message.respond_to?("#{k}=".to_sym)
43
+ end if header[:attributes]
44
+ message.properties = header[:properties] || {}
45
+ end
46
+ producer.send(message)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ puts "Read #{counter} messages from #{path} and wrote to #{queue_name}"
@@ -0,0 +1,44 @@
1
+ #
2
+ # Example: q_to_files:
3
+ # Copy all messages in a queue to separate files in a directory
4
+ # The messages are left on the queue by
5
+ #
6
+ # jruby q_to_files.rb activemq my_queue
7
+ #
8
+
9
+ # Allow examples to be run in-place without requiring a gem install
10
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
11
+
12
+ require 'rubygems'
13
+ require 'jms'
14
+ require 'yaml'
15
+ require 'fileutils'
16
+
17
+ raise("Required Parameters: 'jms_provider' 'queue_name' 'output_directory'") unless ARGV.count >= 2
18
+ jms_provider = ARGV[0]
19
+ queue_name = ARGV[1]
20
+ path = ARGV[2] || queue_name
21
+
22
+ # Load Connection parameters from configuration file
23
+ config = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'jms.yml'))[jms_provider]
24
+ raise "JMS Provider option:#{jms_provider} not found in jms.yml file" unless config
25
+
26
+ # Create supplied path if it does not exist
27
+ FileUtils.mkdir_p(path)
28
+
29
+ counter = 0
30
+ # Consume all available messages on the queue
31
+ JMS::Connection.session(config) do |session|
32
+ session.browse(:queue_name => queue_name, :timeout=>1000) do |message|
33
+ counter += 1
34
+ filename = File.join(path, "message_%03d" % counter)
35
+ File.open(filename+'.data', 'wb') {|file| file.write(message.data) }
36
+ header = {
37
+ :attributes => message.attributes,
38
+ :properties => message.properties
39
+ }
40
+ File.open(filename+'.yml', 'wb') {|file| file.write(header.to_yaml) }
41
+ end
42
+ end
43
+
44
+ puts "Saved #{counter} messages to #{path}"
@@ -16,15 +16,26 @@ jms_provider = ARGV[0] || 'activemq'
16
16
  config = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'jms.yml'))[jms_provider]
17
17
  raise "JMS Provider option:#{jms_provider} not found in jms.yml file" unless config
18
18
 
19
+ continue = true
20
+
21
+ trap("INT") {
22
+ JMS::logger.info "CTRL + C"
23
+ continue = false
24
+ }
25
+
19
26
  # Consume all available messages on the queue
20
27
  JMS::Connection.start(config) do |connection|
21
-
22
- # Define Asynchronous code block to be called every time a message is receive
28
+
29
+ # Define Asynchronous code block to be called every time a message is received
23
30
  connection.on_message(:queue_name => 'ExampleQueue') do |message|
24
31
  JMS::logger.info message.inspect
25
32
  end
26
33
 
27
34
  # Since the on_message handler above is in a separate thread the thread needs
28
35
  # to do some other work. For this example it will just sleep for 10 seconds
29
- sleep 10
36
+ while(continue)
37
+ sleep 10
38
+ end
39
+
40
+ JMS::logger.info "closing ..."
30
41
  end
Binary file
data/lib/jms.rb CHANGED
@@ -15,5 +15,6 @@
15
15
  ################################################################################
16
16
 
17
17
  require 'java'
18
+ require 'jms/version'
18
19
  require 'jms/logging'
19
20
  require 'jms/connection'
@@ -112,6 +112,7 @@ module JMS
112
112
  end
113
113
  end if jar_list
114
114
 
115
+ require 'jms/mq_workaround'
115
116
  require 'jms/imports'
116
117
  require 'jms/message_listener_impl'
117
118
  require 'jms/message'
@@ -225,8 +225,8 @@ module JMS::Message
225
225
  def attributes
226
226
  {
227
227
  :jms_correlation_id => jms_correlation_id,
228
- :jms_delivery_mode => jms_delivery_mode_sym,
229
- :jms_destination => jms_destination,
228
+ :jms_delivery_mode_sym => jms_delivery_mode_sym,
229
+ :jms_destination => jms_destination.nil? ? nil : jms_destination.to_string,
230
230
  :jms_expiration => jms_expiration,
231
231
  :jms_message_id => jms_message_id,
232
232
  :jms_priority => jms_priority,
@@ -16,7 +16,7 @@
16
16
 
17
17
  # Extend JMS Message Producer Interface with Ruby methods
18
18
  #
19
- # For further help on javax.jms.Message
19
+ # For further help on javax.jms.MessageProducer
20
20
  # http://download.oracle.com/javaee/6/api/javax/jms/MessageProducer.html
21
21
  #
22
22
  # Interface javax.jms.Producer
@@ -0,0 +1,70 @@
1
+ # Workaround for IBM MQ JMS implementation that implements some undocumented methods
2
+
3
+ begin
4
+
5
+ class com.ibm.mq.jms::MQQueueSession
6
+
7
+ if self.instance_methods.include? "consume"
8
+ def consume(params, &proc)
9
+ Java::JavaxJms::Session.instance_method(:consume).bind(self).call(params, &proc)
10
+ end
11
+ end
12
+
13
+ end
14
+
15
+
16
+ class com.ibm.mq.jms::MQSession
17
+
18
+ if self.instance_methods.include? "consume"
19
+ def consume(params, &proc)
20
+ Java::JavaxJms::Session.instance_method(:consume).bind(self).call(params, &proc)
21
+ end
22
+ end
23
+
24
+ if self.instance_methods.include? "create_destination"
25
+ def create_destination(params)
26
+ Java::JavaxJms::Session.instance_method(:create_destination).bind(self).call(params)
27
+ end
28
+ end
29
+
30
+ end
31
+
32
+
33
+ class com.ibm.mq.jms::MQQueueBrowser
34
+
35
+ if self.instance_methods.include? "each"
36
+ def each(params, &proc)
37
+ Java::ComIbmMsgClientJms::JmsQueueBrowser.instance_method(:each).bind(self).call(params, &proc)
38
+ end
39
+ end
40
+ end
41
+
42
+
43
+ class com.ibm.mq.jms::MQQueueReceiver
44
+
45
+ if self.instance_methods.include? "each"
46
+ def each(params, &proc)
47
+ Java::JavaxJms::MessageConsumer.instance_method(:each).bind(self).call(params, &proc)
48
+ end
49
+ end
50
+
51
+ if self.instance_methods.include? "get"
52
+ def get(params={})
53
+ Java::JavaxJms::MessageConsumer.instance_method(:get).bind(self).call(params)
54
+ end
55
+ end
56
+
57
+ end
58
+
59
+
60
+ class com.ibm.mq.jms::MQQueue
61
+
62
+ if self.instance_methods.include? "delete"
63
+ undef_method :delete
64
+ end
65
+
66
+ end
67
+
68
+ rescue NameError
69
+ # Ignore errors (when we aren't using MQ)
70
+ end
@@ -115,16 +115,34 @@ module JMS::Session
115
115
  # Duck typing is used to determine the type. If the class responds
116
116
  # to :to_str then it is considered a String. Similarly if it responds to
117
117
  # :each_pair it is considered to be a Hash
118
- def message(data)
118
+ #
119
+ # If automated duck typing is not desired, the type of the message can be specified
120
+ # by setting the parameter 'type' to any one of:
121
+ # :text => Creates a Text Message
122
+ # :map => Creates a Map Message
123
+ # :bytes => Creates a Bytes Message
124
+ def message(data, type=nil)
119
125
  jms_message = nil
120
- if data.respond_to?(:to_str, false)
126
+ type ||= if data.respond_to?(:to_str, false)
127
+ :text
128
+ elsif data.respond_to?(:each_pair, false)
129
+ :map
130
+ else
131
+ raise "Unknown data type #{data.class.to_s} in Message"
132
+ end
133
+
134
+ case type
135
+ when :text
121
136
  jms_message = self.createTextMessage
122
137
  jms_message.text = data.to_str
123
- elsif data.respond_to?(:each_pair, false)
138
+ when :map
124
139
  jms_message = self.createMapMessage
125
140
  jms_message.data = data
141
+ when :bytes
142
+ jms_message = self.createBytesMessage
143
+ jms_message.write_bytes(data.to_java_bytes)
126
144
  else
127
- raise "Unknown data type #{data.class.to_s} in Message"
145
+ raise "Invalid type #{type} requested"
128
146
  end
129
147
  jms_message
130
148
  end
@@ -147,12 +165,18 @@ module JMS::Session
147
165
  # To create a temporary queue:
148
166
  # session.create_destination(:queue_name => :temporary)
149
167
  #
168
+ # To create a queue:
169
+ # session.create_destination('queue://queue_name')
170
+ #
150
171
  # To create a topic:
151
172
  # session.create_destination(:topic_name => 'name of queue')
152
173
  #
153
174
  # To create a temporary topic:
154
175
  # session.create_destination(:topic_name => :temporary)
155
176
  #
177
+ # To create a topic:
178
+ # session.create_destination('topic://topic_name')
179
+ #
156
180
  # Create the destination based on the parameter supplied
157
181
  #
158
182
  # Parameters:
@@ -171,9 +195,18 @@ module JMS::Session
171
195
  # Allow a Java JMS destination object to be passed in
172
196
  return params[:destination] if params[:destination] && params[:destination].java_kind_of?(JMS::Destination)
173
197
 
174
- # :q_name is deprecated
175
- queue_name = params[:queue_name] || params[:q_name]
176
- topic_name = params[:topic_name]
198
+ queue_name = nil
199
+ topic_name = nil
200
+
201
+ if params.is_a? String
202
+ queue_name = params['queue://'.length..-1] if params.start_with?('queue://')
203
+ topic_name = params['topic://'.length..-1] if params.start_with?('topic://')
204
+ else
205
+ # :q_name is deprecated
206
+ queue_name = params[:queue_name] || params[:q_name]
207
+ topic_name = params[:topic_name]
208
+ end
209
+
177
210
  raise "Missing mandatory parameter :queue_name or :topic_name to Session::producer, Session::consumer, or Session::browser" unless queue_name || topic_name
178
211
 
179
212
  if queue_name
@@ -438,19 +471,3 @@ module JMS::Session
438
471
  self.browser(params) {|b| b.each(params, &proc)}
439
472
  end
440
473
  end
441
-
442
- # Workaround for IBM MQ JMS implementation that implements an undocumented consume method
443
- if defined? com.ibm.mq.jms::MQSession
444
- class com.ibm.mq.jms::MQSession
445
- def consume(params, &proc)
446
- result = nil
447
- c = self.consumer(params)
448
- begin
449
- result = c.each(params, &proc)
450
- ensure
451
- c.close
452
- end
453
- result
454
- end
455
- end
456
- end
@@ -19,9 +19,12 @@ module JMS
19
19
  # :pool_size Maximum Pool Size. Default: 10
20
20
  # The pool only grows as needed and will never exceed
21
21
  # :pool_size
22
+ # :pool_timeout Number of seconds to wait before raising a TimeoutError
23
+ # if no sessions are available in the poo
24
+ # Default: 60
22
25
  # :pool_warn_timeout Number of seconds to wait before logging a warning when a
23
- # session in the pool is not available. Measured in seconds
24
- # Default: 5.0
26
+ # session in the pool is not available
27
+ # Default: 5
25
28
  # :pool_logger Supply a logger that responds to #debug, #info, #warn and #debug?
26
29
  # For example: Rails.logger
27
30
  # Default: JMS.logger
@@ -38,9 +41,11 @@ module JMS
38
41
  logger = session_params[:pool_logger] || JMS.logger
39
42
  # Define how GenePool can create new sessions
40
43
  @pool = GenePool.new(
41
- :name => session_params[:pool_name] || self.class.name,
42
- :pool_size => session_params[:pool_size] || 10,
44
+ :name => session_params[:pool_name] || self.class.name,
45
+ :pool_size => session_params[:pool_size] || 10,
43
46
  :warn_timeout => session_params[:pool_warn_timeout] || 5,
47
+ :timeout => session_params[:pool_timeout] || 60,
48
+ :close_proc => nil,
44
49
  :logger => logger) do
45
50
  connection.create_session(session_params)
46
51
  end
@@ -0,0 +1,3 @@
1
+ module JMS #:nodoc
2
+ VERSION = "1.0.0"
3
+ end
File without changes
@@ -0,0 +1,4 @@
1
+ file.reference.jruby-jms-examples=/Users/rmorrison/Sandbox/jruby-jms/examples
2
+ file.reference.jruby-jms-lib=/Users/rmorrison/Sandbox/jruby-jms/lib
3
+ file.reference.jruby-jms-test=/Users/rmorrison/Sandbox/jruby-jms/test
4
+ platform.active=JRuby
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
3
+ <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
4
+ </project-private>
@@ -0,0 +1,5 @@
1
+ clean=Remove any temporary products.
2
+ clobber=Remove any generated file.
3
+ doc=Generate RDOC documentation
4
+ gem=Build gem
5
+ test=
@@ -7,19 +7,43 @@
7
7
  #
8
8
  ---
9
9
  # Which JMS Provider to use by default
10
- default: activemq
11
10
 
12
- activemq:
11
+ #default: hornetq222
12
+ #default: hornetq225
13
+ #default: activemq543
14
+ #default: activemq551
15
+ default: activemq570
16
+ #default: webspheremq6
17
+ #default: webspheremq7
18
+
19
+ activemq543:
13
20
  :factory: org.apache.activemq.ActiveMQConnectionFactory
14
21
  :broker_url: tcp://localhost:61616
15
22
  :require_jars:
16
- - ~/Applications/apache-activemq-5.5.0/activemq-all-5.5.0.jar
17
- - ~/Applications/apache-activemq-5.5.0/lib/optional/slf4j-log4j12-1.5.11.jar
18
- - ~/Applications/apache-activemq-5.5.0/lib/optional/log4j-1.2.14.jar
23
+ - ~/jms/apache-activemq-5.4.3/activemq-all-5.4.3.jar
19
24
  :queue_name: TestQueue
20
25
  :topic_name: TestTopic
21
26
 
22
- hornetq:
27
+ activemq551:
28
+ :factory: org.apache.activemq.ActiveMQConnectionFactory
29
+ :broker_url: tcp://localhost:61616
30
+ :require_jars:
31
+ - ~/jms/apache-activemq-5.5.1/activemq-all-5.5.1.jar
32
+ - ~/jms/apache-activemq-5.5.1/lib/optional/slf4j-log4j12-1.5.11.jar
33
+ - ~/jms/apache-activemq-5.5.1/lib/optional/log4j-1.2.14.jar
34
+ :queue_name: TestQueue
35
+ :topic_name: TestTopic
36
+
37
+ activemq570:
38
+ :factory: org.apache.activemq.ActiveMQConnectionFactory
39
+ :broker_url: tcp://localhost:61616
40
+ :require_jars:
41
+ - ~/Applications/apache-activemq-5.7.0/activemq-all-5.7.0.jar
42
+ - ~/Applications/apache-activemq-5.7.0/lib/optional/log4j-1.2.17.jar
43
+ :queue_name: TestQueue
44
+ :topic_name: TestTopic
45
+
46
+ hornetq225:
23
47
  # Connect to a local HornetQ Broker using JNDI
24
48
  :jndi_name: /ConnectionFactory
25
49
  :jndi_context:
@@ -29,11 +53,59 @@ hornetq:
29
53
  java.naming.security.principal: guest
30
54
  java.naming.security.credentials: guest
31
55
  :require_jars:
32
- - ~/Applications/hornetq-2.2.2.Final/lib/hornetq-core-client.jar
33
- - ~/Applications/hornetq-2.2.2.Final/lib/hornetq-core.jar
34
- - ~/Applications/hornetq-2.2.2.Final/lib/hornetq-jms-client.jar
35
- - ~/Applications/hornetq-2.2.2.Final/lib/jboss-jms-api.jar
36
- - ~/Applications/hornetq-2.2.2.Final/lib/jnp-client.jar
37
- - ~/Applications/hornetq-2.2.2.Final/lib/netty.jar
56
+ - ~/jms/hornetq-2.2.5.Final/lib/hornetq-core-client.jar
57
+ - ~/jms/hornetq-2.2.5.Final/lib/netty.jar
58
+ - ~/jms/hornetq-2.2.5.Final/lib/hornetq-jms-client.jar
59
+ - ~/jms/hornetq-2.2.5.Final/lib/jboss-jms-api.jar
60
+ - ~/jms/hornetq-2.2.5.Final/lib/jnp-client.jar
61
+ :queue_name: TestQueue
62
+ :topic_name: TestTopic
63
+
64
+ hornetq222:
65
+ # Connect to a local HornetQ Broker using JNDI
66
+ :jndi_name: /ConnectionFactory
67
+ :jndi_context:
68
+ java.naming.factory.initial: org.jnp.interfaces.NamingContextFactory
69
+ java.naming.provider.url: jnp://localhost:1099
70
+ java.naming.factory.url.pkgs: org.jboss.naming:org.jnp.interfaces
71
+ java.naming.security.principal: guest
72
+ java.naming.security.credentials: guest
73
+ :require_jars:
74
+ - ~/jms/hornetq-2.2.2.Final/lib/hornetq-core-client.jar
75
+ - ~/jms/hornetq-2.2.2.Final/lib/netty.jar
76
+ - ~/jms/hornetq-2.2.2.Final/lib/hornetq-jms-client.jar
77
+ - ~/jms/hornetq-2.2.2.Final/lib/jboss-jms-api.jar
78
+ - ~/jms/hornetq-2.2.2.Final/lib/jnp-client.jar
79
+ :queue_name: TestQueue
80
+ :topic_name: TestTopic
81
+
82
+ webspheremq7:
83
+ :factory: com.ibm.mq.jms.MQConnectionFactory
84
+ :queue_manager: MYQM
85
+ :host_name: 127.0.0.1
86
+ :channel: SRVCONCHA
87
+ :port: 61414
88
+ # Transport Type: com.ibm.mq.jms.JMSC::MQJMS_TP_CLIENT_MQ_TCPIP
89
+ :transport_type: 1
90
+ :username: mqm
91
+ :require_jars:
92
+ - ~/jms/libs-ibmqm7/com.ibm.mqjms.jar
93
+ - ~/jms/libs-ibmqm7/jms.jar
94
+ - ~/jms/libs-ibmqm7/com.ibm.mq.jmqi.jar
95
+ - ~/jms/libs-ibmqm7/dhbcore.jar
96
+ :queue_name: TestQueue
97
+ :topic_name: TestTopic
98
+
99
+ webspheremq6:
100
+ :factory: com.ibm.mq.jms.MQConnectionFactory
101
+ :queue_manager: MYQM
102
+ :host_name: 127.0.0.1
103
+ :channel: SRVCONCHA
104
+ :port: 61414
105
+ # Transport Type: com.ibm.mq.jms.JMSC::MQJMS_TP_CLIENT_MQ_TCPIP
106
+ :transport_type: 1
107
+ :username: mqm
108
+ :require_jars:
109
+ - ~/jms/libs-ibmqm6/com.ibm.mqjms.jar
38
110
  :queue_name: TestQueue
39
111
  :topic_name: TestTopic
@@ -69,7 +69,6 @@ class JMSTest < Test::Unit::TestCase
69
69
  should 'support setting persistence using symbols and the java constants' do
70
70
  JMS::Connection.session(@config) do |session|
71
71
  message = session.message('Hello World')
72
- assert_equal message.jms_delivery_mode_sym, :non_persistent
73
72
  message.jms_delivery_mode_sym = :non_persistent
74
73
  assert_equal message.jms_delivery_mode_sym, :non_persistent
75
74
  message.jms_delivery_mode_sym = :persistent
@@ -106,7 +105,7 @@ class JMSTest < Test::Unit::TestCase
106
105
  JMS::Connection.session(@config) do |session|
107
106
  assert_not_nil session
108
107
  data = nil
109
- session.producer(:queue_name => :temporary) do |producer|
108
+ session.producer(:queue_name => @queue_name) do |producer|
110
109
  message = session.message('Hello World')
111
110
  message.jms_delivery_mode_sym = :persistent
112
111
  assert_equal :persistent, message.jms_delivery_mode_sym
metadata CHANGED
@@ -1,95 +1,169 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jruby-jms
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.11.2
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.0
6
6
  platform: ruby
7
- authors:
8
- - Reid Morrison
9
- autorequire:
7
+ authors:
8
+ - Reid Morrison
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-01 00:00:00 -04:00
14
- default_executable:
15
- dependencies: []
16
-
12
+ date: 2012-10-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: gene_pool
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: !binary |-
21
+ MA==
22
+ none: false
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ! '>='
26
+ - !ruby/object:Gem::Version
27
+ version: !binary |-
28
+ MA==
29
+ none: false
30
+ prerelease: false
31
+ type: :runtime
17
32
  description: JRuby-JMS is a Java and Ruby library that exposes the Java JMS API in a ruby friendly way. For JRuby only.
18
- email: rubywmq@gmail.com
33
+ email: reidmo@gmail.com
19
34
  executables: []
20
-
21
35
  extensions: []
22
-
23
36
  extra_rdoc_files: []
24
-
25
- files:
26
- - HISTORY.md
27
- - LICENSE.txt
28
- - Rakefile
29
- - README.md
30
- - examples/jms.yml
31
- - examples/advanced/session_pool.rb
32
- - examples/client-server/replier.rb
33
- - examples/client-server/requestor.rb
34
- - examples/invm/invm.rb
35
- - examples/invm/log4j.properties
36
- - examples/performance/consumer.rb
37
- - examples/performance/producer.rb
38
- - examples/producer-consumer/browser.rb
39
- - examples/producer-consumer/consumer.rb
40
- - examples/producer-consumer/consumer_async.rb
41
- - examples/producer-consumer/producer.rb
42
- - examples/publish-subscribe/publish.rb
43
- - examples/publish-subscribe/subscribe.rb
44
- - lib/jms.rb
45
- - lib/jms/bytes_message.rb
46
- - lib/jms/connection.rb
47
- - lib/jms/imports.rb
48
- - lib/jms/logging.rb
49
- - lib/jms/map_message.rb
50
- - lib/jms/message.rb
51
- - lib/jms/message_consumer.rb
52
- - lib/jms/message_listener_impl.rb
53
- - lib/jms/message_producer.rb
54
- - lib/jms/object_message.rb
55
- - lib/jms/oracle_a_q_connection_factory.rb
56
- - lib/jms/queue_browser.rb
57
- - lib/jms/session.rb
58
- - lib/jms/session_pool.rb
59
- - lib/jms/text_message.rb
60
- - test/connection_test.rb
61
- - test/jms.yml
62
- - test/log4j.properties
63
- - test/message_test.rb
64
- - test/session_pool_test.rb
65
- - test/session_test.rb
66
- has_rdoc: true
37
+ files:
38
+ - !binary |-
39
+ R2VtZmlsZQ==
40
+ - !binary |-
41
+ R2VtZmlsZS5sb2Nr
42
+ - !binary |-
43
+ SElTVE9SWS5tZA==
44
+ - !binary |-
45
+ anJ1Ynktam1zLTAuMTEuMi5nZW0=
46
+ - !binary |-
47
+ TElDRU5TRS50eHQ=
48
+ - !binary |-
49
+ UmFrZWZpbGU=
50
+ - !binary |-
51
+ UkVBRE1FLm1k
52
+ - !binary |-
53
+ ZXhhbXBsZXMvam1zLnltbA==
54
+ - !binary |-
55
+ ZXhhbXBsZXMvYWR2YW5jZWQvc2Vzc2lvbl9wb29sLnJi
56
+ - !binary |-
57
+ ZXhhbXBsZXMvY2xpZW50LXNlcnZlci9yZXBsaWVyLnJi
58
+ - !binary |-
59
+ ZXhhbXBsZXMvY2xpZW50LXNlcnZlci9yZXF1ZXN0b3IucmI=
60
+ - !binary |-
61
+ ZXhhbXBsZXMvZmlsZS10by1xL2ZpbGVzX3RvX3EucmI=
62
+ - !binary |-
63
+ ZXhhbXBsZXMvZmlsZS10by1xL3FfdG9fZmlsZXMucmI=
64
+ - !binary |-
65
+ ZXhhbXBsZXMvaW52bS9pbnZtLnJi
66
+ - !binary |-
67
+ ZXhhbXBsZXMvaW52bS9sb2c0ai5wcm9wZXJ0aWVz
68
+ - !binary |-
69
+ ZXhhbXBsZXMvcGVyZm9ybWFuY2UvY29uc3VtZXIucmI=
70
+ - !binary |-
71
+ ZXhhbXBsZXMvcGVyZm9ybWFuY2UvcHJvZHVjZXIucmI=
72
+ - !binary |-
73
+ ZXhhbXBsZXMvcHJvZHVjZXItY29uc3VtZXIvYnJvd3Nlci5yYg==
74
+ - !binary |-
75
+ ZXhhbXBsZXMvcHJvZHVjZXItY29uc3VtZXIvY29uc3VtZXIucmI=
76
+ - !binary |-
77
+ ZXhhbXBsZXMvcHJvZHVjZXItY29uc3VtZXIvY29uc3VtZXJfYXN5bmMucmI=
78
+ - !binary |-
79
+ ZXhhbXBsZXMvcHJvZHVjZXItY29uc3VtZXIvcHJvZHVjZXIucmI=
80
+ - !binary |-
81
+ ZXhhbXBsZXMvcHVibGlzaC1zdWJzY3JpYmUvcHVibGlzaC5yYg==
82
+ - !binary |-
83
+ ZXhhbXBsZXMvcHVibGlzaC1zdWJzY3JpYmUvc3Vic2NyaWJlLnJi
84
+ - !binary |-
85
+ bGliL2ptcy5yYg==
86
+ - !binary |-
87
+ bGliL2ptcy9ieXRlc19tZXNzYWdlLnJi
88
+ - !binary |-
89
+ bGliL2ptcy9jb25uZWN0aW9uLnJi
90
+ - !binary |-
91
+ bGliL2ptcy9pbXBvcnRzLnJi
92
+ - !binary |-
93
+ bGliL2ptcy9sb2dnaW5nLnJi
94
+ - !binary |-
95
+ bGliL2ptcy9tYXBfbWVzc2FnZS5yYg==
96
+ - !binary |-
97
+ bGliL2ptcy9tZXNzYWdlLnJi
98
+ - !binary |-
99
+ bGliL2ptcy9tZXNzYWdlX2NvbnN1bWVyLnJi
100
+ - !binary |-
101
+ bGliL2ptcy9tZXNzYWdlX2xpc3RlbmVyX2ltcGwucmI=
102
+ - !binary |-
103
+ bGliL2ptcy9tZXNzYWdlX3Byb2R1Y2VyLnJi
104
+ - !binary |-
105
+ bGliL2ptcy9tcV93b3JrYXJvdW5kLnJi
106
+ - !binary |-
107
+ bGliL2ptcy9vYmplY3RfbWVzc2FnZS5yYg==
108
+ - !binary |-
109
+ bGliL2ptcy9vcmFjbGVfYV9xX2Nvbm5lY3Rpb25fZmFjdG9yeS5yYg==
110
+ - !binary |-
111
+ bGliL2ptcy9xdWV1ZV9icm93c2VyLnJi
112
+ - !binary |-
113
+ bGliL2ptcy9zZXNzaW9uLnJi
114
+ - !binary |-
115
+ bGliL2ptcy9zZXNzaW9uX3Bvb2wucmI=
116
+ - !binary |-
117
+ bGliL2ptcy90ZXh0X21lc3NhZ2UucmI=
118
+ - !binary |-
119
+ bGliL2ptcy92ZXJzaW9uLnJi
120
+ - !binary |-
121
+ bmJwcm9qZWN0L3ByaXZhdGUvY29uZmlnLnByb3BlcnRpZXM=
122
+ - !binary |-
123
+ bmJwcm9qZWN0L3ByaXZhdGUvcHJpdmF0ZS5wcm9wZXJ0aWVz
124
+ - !binary |-
125
+ bmJwcm9qZWN0L3ByaXZhdGUvcHJpdmF0ZS54bWw=
126
+ - !binary |-
127
+ bmJwcm9qZWN0L3ByaXZhdGUvcmFrZS1kLnR4dA==
128
+ - !binary |-
129
+ dGVzdC9jb25uZWN0aW9uX3Rlc3QucmI=
130
+ - !binary |-
131
+ dGVzdC9qbXMueW1s
132
+ - !binary |-
133
+ dGVzdC9sb2c0ai5wcm9wZXJ0aWVz
134
+ - !binary |-
135
+ dGVzdC9tZXNzYWdlX3Rlc3QucmI=
136
+ - !binary |-
137
+ dGVzdC9zZXNzaW9uX3Bvb2xfdGVzdC5yYg==
138
+ - !binary |-
139
+ dGVzdC9zZXNzaW9uX3Rlc3QucmI=
67
140
  homepage: https://github.com/reidmorrison/jruby-jms
68
141
  licenses: []
69
-
70
- post_install_message:
142
+ post_install_message:
71
143
  rdoc_options: []
72
-
73
- require_paths:
74
- - lib
75
- required_ruby_version: !ruby/object:Gem::Requirement
144
+ require_paths:
145
+ - lib
146
+ required_ruby_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ segments:
151
+ - 0
152
+ hash: 2
153
+ version: !binary |-
154
+ MA==
76
155
  none: false
77
- requirements:
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: "0"
81
- required_rubygems_version: !ruby/object:Gem::Requirement
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ! '>='
159
+ - !ruby/object:Gem::Version
160
+ version: !binary |-
161
+ MA==
82
162
  none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: "0"
87
163
  requirements: []
88
-
89
- rubyforge_project:
90
- rubygems_version: 1.5.1
91
- signing_key:
164
+ rubyforge_project:
165
+ rubygems_version: 1.8.24
166
+ signing_key:
92
167
  specification_version: 3
93
168
  summary: JRuby interface into JMS
94
169
  test_files: []
95
-