Class: TorqueBox::Messaging::Message
- Inherits:
-
Object
- Object
- TorqueBox::Messaging::Message
show all
- Defined in:
- lib/torquebox/messaging/message.rb
Constant Summary
collapse
- DEFAULT_DECODE_ENCODING =
if no encoding specified in the message itself assume the legacy encoding
:marshal_base64
- DEFAULT_ENCODE_ENCODING =
if no encoding specified when creating a message and no global defaut set use :marshal
:marshal
- ENCODING_PROPERTY =
"__ContentEncoding__"
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(jms_session, payload) ⇒ Message
Returns a new instance of Message.
35
36
37
38
39
40
|
# File 'lib/torquebox/messaging/message.rb', line 35
def initialize(jms_session, payload)
@jms_message = self.class::JMS_TYPE == :text ? jms_session.create_text_message :
jms_session.create_bytes_message
set_encoding
encode( payload )
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(*args) ⇒ Object
77
78
79
|
# File 'lib/torquebox/messaging/message.rb', line 77
def method_missing(*args)
@jms_message.send(*args)
end
|
Instance Attribute Details
#jms_message ⇒ Object
Returns the value of attribute jms_message.
24
25
26
|
# File 'lib/torquebox/messaging/message.rb', line 24
def jms_message
@jms_message
end
|
Class Method Details
.__new__ ⇒ Object
94
|
# File 'lib/torquebox/messaging/message.rb', line 94
alias :__new__ :new
|
.class_for_encoding(encoding) ⇒ Object
124
125
126
127
128
|
# File 'lib/torquebox/messaging/message.rb', line 124
def class_for_encoding(encoding)
klass = encoding_map[encoding.to_sym]
raise ArgumentError.new( "No message class found for encoding '#{encoding}'" ) unless klass
klass
end
|
.encoding_map ⇒ Object
116
117
118
|
# File 'lib/torquebox/messaging/message.rb', line 116
def encoding_map
@encoding_map ||= { }
end
|
130
131
132
|
# File 'lib/torquebox/messaging/message.rb', line 130
def (jms_message)
jms_message.get_string_property( ENCODING_PROPERTY )
end
|
.inherited(subclass) ⇒ Object
96
97
98
99
100
|
# File 'lib/torquebox/messaging/message.rb', line 96
def inherited(subclass)
class << subclass
alias :new :__new__
end
end
|
.new(jms_message_or_session, payload = nil, encoding = nil) ⇒ Object
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/torquebox/messaging/message.rb', line 102
def new(jms_message_or_session, payload = nil, encoding = nil)
if jms_message_or_session.is_a?( javax.jms::Session )
encoding ||= ENV['DEFAULT_MESSAGE_ENCODING'] || DEFAULT_ENCODE_ENCODING
klass = class_for_encoding( encoding.to_sym )
klass.new( jms_message_or_session, payload )
else
encoding = ( jms_message_or_session ) || DEFAULT_DECODE_ENCODING
klass = class_for_encoding( encoding )
msg = klass.allocate
msg.initialize_from_message( jms_message_or_session )
msg
end
end
|
.register_encoding(klass) ⇒ Object
120
121
122
|
# File 'lib/torquebox/messaging/message.rb', line 120
def register_encoding(klass)
encoding_map[klass::ENCODING] = klass
end
|
Instance Method Details
#decode ⇒ Object
89
90
91
|
# File 'lib/torquebox/messaging/message.rb', line 89
def decode
TorqueBox::Codecs.decode(@jms_message.text, self.class::ENCODING)
end
|
#encode(message) ⇒ Object
85
86
87
|
# File 'lib/torquebox/messaging/message.rb', line 85
def encode(message)
@jms_message.text = TorqueBox::Codecs.encode(message, self.class::ENCODING)
end
|
#initialize_from_message(jms_message) ⇒ Object
42
43
44
|
# File 'lib/torquebox/messaging/message.rb', line 42
def initialize_from_message(jms_message)
@jms_message = jms_message
end
|
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/torquebox/messaging/message.rb', line 50
def (options)
return if options.nil?
options.each do |key, value|
case key.to_s
when 'correlation_id' then @jms_message.setJMSCorrelationID(value)
when 'reply_to' then @jms_message.setJMSReplyTo(value)
when 'type' then @jms_message.setJMSType(value)
end
end
end
|
#populate_message_properties(properties) ⇒ Object
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/torquebox/messaging/message.rb', line 61
def populate_message_properties(properties)
return if properties.nil? or properties.empty?
properties.each do |key, value|
case value
when Integer
@jms_message.set_long_property(key.to_s, value)
when Float
@jms_message.set_double_property(key.to_s, value)
when TrueClass, FalseClass
@jms_message.set_boolean_property(key.to_s, value)
else
@jms_message.set_string_property(key.to_s, value.to_s)
end
end
end
|
#respond_to?(symbol, include_private = false) ⇒ Boolean
81
82
83
|
# File 'lib/torquebox/messaging/message.rb', line 81
def respond_to?(symbol, include_private = false)
super || @jms_message.respond_to?(symbol, include_private)
end
|
#set_encoding ⇒ Object
46
47
48
|
# File 'lib/torquebox/messaging/message.rb', line 46
def set_encoding
@jms_message.set_string_property( ENCODING_PROPERTY, self.class::ENCODING.to_s )
end
|