neerfri-ramf 0.1.0 → 0.1.1

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.
@@ -120,7 +120,6 @@ module RAMF
120
120
  class_signature = store :class do
121
121
  RAMF::IO::FlexClassSignature.new(readUTF_8_vr(stream), is_dynamic, read_object_member_names(stream,member_count))
122
122
  end
123
- # RAMF::DEBUG_LOG.debug "Created new class signature: #{class_signature.inspect}"
124
123
  readU29O_object_values(stream,class_signature)
125
124
  end
126
125
 
@@ -25,7 +25,26 @@ module RAMF
25
25
  else
26
26
  self["#{method_name}".to_sym]
27
27
  end
28
+ end
29
+
30
+ def to_params
31
+ self.inject({}) do |m,pair|
32
+ key = pair.first
33
+ object = pair.last
34
+ case object
35
+ when Hash, Numeric, String, TrueClass, FalseClass, NilClass
36
+ m.merge({key=>object})
37
+ else
38
+ flex_remoting = object.class.flex_remoting
39
+ hash = {}
40
+ flex_remoting.members.each do |member|
41
+ hash[member] = flex_remoting.members_reader.call(object,member)
42
+ end
43
+ hash.merge!(flex_remoting.dynamic_members(object)) if flex_remoting.is_dynamic
44
+ m.merge! key=>hash
45
+ end
28
46
  end
47
+ end
29
48
 
30
49
 
31
50
  # def flex_dynamic_members(scope = :default)
@@ -46,6 +46,8 @@ module RAMF
46
46
  when object.is_a?(::IO) || object.is_a?(::StringIO)
47
47
  stream.write AMF3_BYTE_ARRAY_MARKER
48
48
  writeU29B(object, stream)
49
+ when object.is_a?(Class) || object.is_a?(Module)
50
+ raise(ArgumentError, "Trying to serialize #{object}, which is a Class or Module")
49
51
  else
50
52
  stream.write AMF3_OBJECT_MARKER
51
53
  writeU29O(object,stream)
data/lib/ramf.rb CHANGED
@@ -1,62 +1,50 @@
1
1
 
2
2
  $:.unshift(File.dirname(__FILE__)) unless $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
- require 'stringio'
4
- module RAMF; end;
5
-
6
- #Load configuration class
7
- require 'ramf/util'
8
- require 'ramf/configuration'
9
-
10
-
11
- #Extensions to existing Ruby classes.
12
- require 'ramf/flex_class_traits'
13
- require 'ramf/extensions/class'
14
- require 'ramf/extensions/object'
15
- require 'ramf/extensions/hash'
16
- require 'ramf/extensions/exception'
17
-
18
- #RAMF fundemental objects
19
- require 'ramf/amf_object'
20
- require 'ramf/amf_header'
21
- require 'ramf/amf_message'
22
- require 'ramf/operation_request'
23
- require 'ramf/operation_processors_manager'
24
- require 'ramf/default_operation_processor'
25
-
26
- require 'ramf/io/flex_class_signature'
27
- require 'ramf/flex_objects/flex_anonymous_object'
28
- require 'ramf/flex_objects/flex_object'
29
- require 'ramf/flex_objects/acknowledge_message'
30
- require 'ramf/flex_objects/error_message'
31
- require 'ramf/flex_objects/remoting_message'
32
- require 'ramf/flex_objects/command_message'
33
- require 'ramf/flex_objects/byte_array'
34
-
35
-
36
- require 'ramf/io/constants'
37
- require 'ramf/io/common_read_write'
38
- require 'ramf/io/place_holder'
39
- require 'ramf/io/reference_table'
40
- require 'ramf/deserializer'
41
- require 'ramf/serializer'
42
-
43
3
  module RAMF
44
- class NullLogger
45
- def debug(message); end;
46
- end
47
4
 
48
- def self.define_debug_logger
49
- begin
50
- puts "initializing RAMF debug log file"
51
- require 'fileutils'
52
- require 'logger'
53
- log_path = File.join(File.dirname(__FILE__),'../debug/debug.log')
54
- FileUtils.mkdir_p File.dirname(log_path)
55
- Logger.new(log_path)
56
- rescue Exception=>e
57
- NullLogger.new()
58
- end
5
+ def self.relative_require(name)
6
+ require File.join(File.dirname(__FILE__), name+".rb")
59
7
  end
60
8
 
61
- DEBUG_LOG = defined?(RAMF_DEBUG) || ENV["RAMF_DEBUG"] ? define_debug_logger : NullLogger.new()
62
- end
9
+ #load requirements from ruby
10
+ require 'stringio'
11
+
12
+ #Load configuration class
13
+ relative_require 'ramf/util'
14
+ relative_require 'ramf/configuration'
15
+
16
+
17
+ #Extensions to existing Ruby classes.
18
+ relative_require 'ramf/flex_class_traits'
19
+ relative_require 'ramf/extensions/class'
20
+ relative_require 'ramf/extensions/object'
21
+ relative_require 'ramf/extensions/hash'
22
+ relative_require 'ramf/extensions/exception'
23
+
24
+ #RAMF fundemental objects
25
+ relative_require 'ramf/amf_object'
26
+ relative_require 'ramf/amf_header'
27
+ relative_require 'ramf/amf_message'
28
+ relative_require 'ramf/operation_request'
29
+ relative_require 'ramf/operation_processors_manager'
30
+ relative_require 'ramf/default_operation_processor'
31
+
32
+ relative_require 'ramf/io/flex_class_signature'
33
+ relative_require 'ramf/flex_objects/flex_anonymous_object'
34
+ relative_require 'ramf/flex_objects/flex_object'
35
+ relative_require 'ramf/flex_objects/acknowledge_message'
36
+ relative_require 'ramf/flex_objects/error_message'
37
+ relative_require 'ramf/flex_objects/remoting_message'
38
+ relative_require 'ramf/flex_objects/command_message'
39
+ relative_require 'ramf/flex_objects/byte_array'
40
+
41
+
42
+ relative_require 'ramf/io/constants'
43
+ relative_require 'ramf/io/common_read_write'
44
+ relative_require 'ramf/io/place_holder'
45
+ relative_require 'ramf/io/reference_table'
46
+ relative_require 'ramf/deserializer'
47
+ relative_require 'ramf/serializer'
48
+
49
+ end
50
+
@@ -0,0 +1,18 @@
1
+ require File.join(File.dirname(__FILE__),'spec_helper')
2
+
3
+ describe RAMF::DefaultOperationProcessor do
4
+
5
+ it "should be registered in RAMF::OperationProcessorsManager" do
6
+ RAMF::OperationProcessorsManager::OPERATION_PROCCESSORS.last.should == RAMF::DefaultOperationProcessor
7
+ end
8
+
9
+ it "should process all requests" do
10
+ RAMF::DefaultOperationProcessor.will_process?(nil).should be_true
11
+ end
12
+
13
+ it "should raise OperationProcessorNotDefined when ever asked to process" do
14
+ lambda {RAMF::DefaultOperationProcessor.process(nil)
15
+ }.should raise_error(RAMF::DefaultOperationProcessor::OperationProcessorNotDefined)
16
+ end
17
+
18
+ end
@@ -0,0 +1,100 @@
1
+ require File.join(File.dirname(__FILE__),'../spec_helper')
2
+
3
+ describe Object do
4
+
5
+ before(:each) do
6
+ @object = Object.new
7
+ @object.instance_variable_set("@instance_var","instance_var")
8
+ # @object.class.flex_remoting_members :member
9
+ end
10
+
11
+ describe "flex_members_reader" do
12
+ it "should use a setter with same name" do
13
+ @object.should_receive(:send).with(:member)
14
+ @object.class.flex_remoting.members_reader.call(@object, :member)
15
+ end
16
+ end
17
+
18
+ describe "flex_members_writer" do
19
+ it "should call a method 'member='" do
20
+ @object.should_receive(:send).with("member=","value")
21
+ @object.stub!(:respond_to?).and_return(true)
22
+ @object.class.flex_remoting.members_writer.call(@object, :member, "value")
23
+ end
24
+
25
+ it "should set an instance variable if no setter is available" do
26
+ @object.should_receive(:instance_variable_set).with("@member","value")
27
+ @object.stub!(:respond_to?).and_return(false)
28
+ @object.class.flex_remoting.members_writer.call(@object, :member, "value")
29
+ end
30
+ end
31
+
32
+ describe "flex_dynamic_members_finder" do
33
+ it "should find instance variables" do
34
+ @object.class.flex_remoting.dynamic_members_finders.first.call(@object, :default).should == [:instance_var]
35
+ end
36
+ end
37
+
38
+ describe "flex_dynamic_members_reader" do
39
+ it "should use getter when object responds to :member" do
40
+ @object.should_receive(:send).with(:member)
41
+ @object.stub!(:respond_to?).and_return(true)
42
+ @object.class.flex_remoting.dynamic_members_reader.call(@object, :member)
43
+ end
44
+
45
+ it "should pull value from instance variable when one is defined" do
46
+ @object.should_receive(:instance_variable_get).with("@member")
47
+ @object.stub!(:instance_variable_defined?).and_return(true)
48
+ @object.class.flex_remoting.dynamic_members_reader.call(@object, :member)
49
+ end
50
+
51
+ it "should pull value from [] when object responds to it" do
52
+ @object.should_receive(:[]).with(:member)
53
+ @object.stub!(:respond_to?).with(:member).and_return(false)
54
+ @object.stub!(:respond_to?).with(:[]).and_return(true)
55
+ @object.class.flex_remoting.dynamic_members_reader.call(@object, :member)
56
+ end
57
+
58
+ it "should try to use a setter when everything else fails" do
59
+ @object.stub!(:respond_to?).with(:member).and_return(false)
60
+ @object.stub!(:instance_variable_defined?).and_return(false)
61
+ @object.stub!(:respond_to?).with(:[]).and_return(false)
62
+ @object.should_receive(:send).with(:member)
63
+ @object.class.flex_remoting.dynamic_members_reader.call(@object, :member)
64
+ end
65
+
66
+ it "should issue a warning and return nil when all methods fail" do
67
+ @object.stub!(:respond_to?).with(:member).and_return(false)
68
+ @object.stub!(:instance_variable_defined?).and_return(false)
69
+ @object.stub!(:respond_to?).with(:[]).and_return(false)
70
+ Object.should_receive(:warn)
71
+ @object.should_receive(:send).with(:member).and_raise(NoMethodError)
72
+ @object.class.flex_remoting.dynamic_members_reader.call(@object, :member).should == nil
73
+ end
74
+
75
+ end
76
+
77
+ describe "flex_dynamic_members_writer" do
78
+ it "should use a setter with same name" do
79
+ @object.should_receive(:send).with("member=", "value")
80
+ @object.class.flex_remoting.dynamic_members_writer.call(@object, :member, "value")
81
+ end
82
+ end
83
+
84
+ describe "returning method" do
85
+ it "should respond to :returning" do
86
+ @object.should respond_to(:returning)
87
+ end
88
+
89
+ it "should pass the argument to the block" do
90
+ returning(@object) {|obj| obj.should == @object}
91
+ end
92
+
93
+ it "should return the first argument" do
94
+ returning(@object){}.should == @object
95
+ end
96
+
97
+ end
98
+
99
+
100
+ end
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__),'../spec_helper')
2
+
3
+ describe RAMF::FlexObjects::ByteArray do
4
+
5
+ before(:each) {@byte_array = RAMF::FlexObjects::ByteArray.new("content")}
6
+
7
+ it "should be kind_of IO" do
8
+ @byte_array.kind_of?(::Tempfile).should be_true
9
+ end
10
+
11
+ it "should be rewinded" do
12
+ @byte_array.pos.should == 0
13
+ end
14
+ end
@@ -0,0 +1,45 @@
1
+ require File.join(File.dirname(__FILE__),'../spec_helper')
2
+ require 'ruby-debug'
3
+
4
+ class DummyObject
5
+ def initialize
6
+ @dummy_attribute = "dummy"
7
+ end
8
+ end
9
+
10
+
11
+ describe RAMF::FlexObjects::FlexAnonymousObject do
12
+
13
+ it "should extend Hash" do
14
+ RAMF::FlexObjects::FlexAnonymousObject.superclass.should == Hash
15
+ end
16
+
17
+ describe "to_params method" do
18
+
19
+ before(:each) do
20
+ @obj = RAMF::FlexObjects::FlexAnonymousObject.new
21
+ @obj.string_attr = "my_string"
22
+ @obj.numeric_attr = 6.5
23
+ @obj.hash_attr = {:some=>"hash"}
24
+ @obj.true_attr = true
25
+ @obj.false_attr = false
26
+ @obj.nil_attr = nil
27
+ @obj.object_attr = DummyObject.new
28
+ end
29
+
30
+ it "should return instance of Hash" do
31
+ @obj.to_params.should be_an_instance_of(Hash)
32
+ end
33
+
34
+ [:string, :numeric, :hash, :true, :false, :nil].each do |type|
35
+ it "should not change objects of type #{type}" do
36
+ @obj.to_params["#{type}_attr".to_sym].should == @obj.send("#{type}_attr")
37
+ end
38
+ end
39
+
40
+ it "should convert objects to hash" do
41
+ @obj.to_params[:object_attr].should == {:dummy_attribute=>"dummy"}
42
+ end
43
+
44
+ end
45
+ end
@@ -406,7 +406,7 @@ describe "AMF3Writer" do
406
406
  @object = {}
407
407
  end
408
408
 
409
- after(:each) {@method.call(@object, @stream)}
409
+ after(:each) {(!@skip_call) ? @method.call(@object, @stream) : @skip_call=false}
410
410
 
411
411
  it "should write AMF3_INTEGER_MARKER for integer in range" do
412
412
  @object = 15
@@ -561,5 +561,12 @@ describe "AMF3Writer" do
561
561
  @stream.should_receive(:write).with(RAMF::IO::Constants::AMF3_OBJECT_MARKER)
562
562
  @writer.should_receive(:writeU29O).with(@object, @stream)
563
563
  end
564
+
565
+ it "should raise when trying to serialize an object of type Class or Module" do
566
+ @skip_call = true
567
+ @object = RAMF
568
+ lambda {@method.call(@object, @stream)}.should raise_error(ArgumentError)
569
+ end
570
+
564
571
  end
565
572
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neerfri-ramf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neer Friedman
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-21 00:00:00 -07:00
12
+ date: 2008-11-14 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -19,8 +19,8 @@ executables: []
19
19
 
20
20
  extensions: []
21
21
 
22
- extra_rdoc_files:
23
- - README
22
+ extra_rdoc_files: []
23
+
24
24
  files:
25
25
  - lib/ramf
26
26
  - lib/ramf/operation_processors_manager.rb
@@ -71,6 +71,7 @@ files:
71
71
  - spec/deserializer_spec.rb
72
72
  - spec/flex_class_traits_spec.rb
73
73
  - spec/inherited_class_traits_spec.rb
74
+ - spec/default_operation_processor_spec.rb
74
75
  - spec/operation_processors_manager_spec.rb
75
76
  - spec/examples
76
77
  - spec/examples/examples_helper.rb
@@ -90,16 +91,23 @@ files:
90
91
  - spec/fixtures/deserializer2.rb
91
92
  - spec/extensions
92
93
  - spec/extensions/class_extensions_spec.rb
94
+ - spec/extensions/object_extensions_spec.rb
93
95
  - spec/serializer
94
96
  - spec/serializer/full_spec.rb
95
97
  - spec/serializer/amf3_writer_spec.rb
96
98
  - spec/serializer/base_spec.rb
99
+ - spec/flex_objects
100
+ - spec/flex_objects/flex_anonymous_object_spec.rb
101
+ - spec/flex_objects/byte_array_spec.rb
97
102
  has_rdoc: true
98
103
  homepage: http://ramf.saveanalien.com
99
104
  post_install_message:
100
105
  rdoc_options:
101
- - --line-numbers
102
- - --inline-source
106
+ - - --line-numbers
107
+ - --inline-source
108
+ - "--main README "
109
+ - -x spec
110
+ - README
103
111
  require_paths:
104
112
  - lib
105
113
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -128,6 +136,7 @@ test_files:
128
136
  - spec/deserializer_spec.rb
129
137
  - spec/flex_class_traits_spec.rb
130
138
  - spec/inherited_class_traits_spec.rb
139
+ - spec/default_operation_processor_spec.rb
131
140
  - spec/operation_processors_manager_spec.rb
132
141
  - spec/examples
133
142
  - spec/examples/examples_helper.rb
@@ -147,7 +156,11 @@ test_files:
147
156
  - spec/fixtures/deserializer2.rb
148
157
  - spec/extensions
149
158
  - spec/extensions/class_extensions_spec.rb
159
+ - spec/extensions/object_extensions_spec.rb
150
160
  - spec/serializer
151
161
  - spec/serializer/full_spec.rb
152
162
  - spec/serializer/amf3_writer_spec.rb
153
163
  - spec/serializer/base_spec.rb
164
+ - spec/flex_objects
165
+ - spec/flex_objects/flex_anonymous_object_spec.rb
166
+ - spec/flex_objects/byte_array_spec.rb