killbill 1.0.8 → 1.0.9

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.8
1
+ 1.0.9
@@ -39,6 +39,7 @@ begin
39
39
 
40
40
  # jbundler needs to be loaded first!
41
41
  require 'killbill/jplugin'
42
+ require 'killbill/jpayment'
42
43
  rescue LoadError => e
43
44
  warn 'You need JRuby to run Killbill plugins'
44
45
  end
@@ -1,3 +1,5 @@
1
+ require 'java'
2
+
1
3
  require 'singleton'
2
4
 
3
5
  require 'killbill/creator'
@@ -7,19 +9,28 @@ require 'killbill/jresponse/jrefund_response'
7
9
  require 'killbill/jresponse/jpayment_method_response'
8
10
  require 'killbill/jresponse/jpayment_method_response_internal'
9
11
 
12
+ include Java
13
+
14
+ class String
15
+ def snake_case
16
+ return downcase if match(/\A[A-Z]+\z/)
17
+ gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
18
+ gsub(/([a-z])([A-Z])/, '\1_\2').
19
+ downcase
20
+ end
21
+ end
10
22
 
11
23
  module Killbill
12
24
  module Plugin
13
25
 
14
26
  java_package 'com.ning.billing.payment.plugin.api'
15
- class JPayment
27
+ class JPayment < JPlugin
16
28
 
17
- include Java::com.ning.billing.payment.plugin.api.PaymentPluginApi
18
-
19
- attr_reader :real_payment
29
+ # java_implements com.ning.billing.payment.plugin.api.PaymentPluginApi
30
+ include com.ning.billing.payment.plugin.api.PaymentPluginApi
20
31
 
21
32
  def initialize(real_class_name, services = {})
22
- @real_payment = Creator.new(real_class_name).create(services)
33
+ super(real_class_name, services)
23
34
  end
24
35
 
25
36
  # TODO STEPH decide what to do the getName()
@@ -27,8 +38,8 @@ module Killbill
27
38
  def get_name
28
39
  end
29
40
 
30
- java_signature 'Java::com.ning.billing.payment.plugin.api.PaymentInfoPlugin processPayment(java.util.UUID, java.util.UUID, java.lang.BigDecimal, Java::com.ning.billing.util.callcontext.CallContext)'
31
- def charge(*args)
41
+ java_signature 'com.ning.billing.payment.plugin.api.PaymentInfoPlugin processPayment(java.util.UUID, java.util.UUID, java.lang.BigDecimal, com.ning.billing.util.callcontext.CallContext)'
42
+ def process_payment(*args)
32
43
  do_call_handle_exception(__method__, *args) do |res|
33
44
  return JPaymentResponse.new(res)
34
45
  end
@@ -42,7 +53,7 @@ module Killbill
42
53
  end
43
54
 
44
55
  java_signature 'Java::com.ning.billing.payment.plugin.api.RefundInfoPlugin processRefund(java.util.UUID, java.lang.BigDecimal, Java::com.ning.billing.util.callcontext.CallContext)'
45
- def refund(*args)
56
+ def process_refund(*args)
46
57
  do_call_handle_exception(__method__, *args) do |res|
47
58
  return JRefundResponse.new(res)
48
59
  end
@@ -99,7 +110,7 @@ module Killbill
99
110
  def do_call_handle_exception(method_name, *args)
100
111
  begin
101
112
  rargs = convert_args(method_name, args)
102
- res = @real_payment.send(method_name, *rargs)
113
+ res = @delegate_plugin.send(method_name.to_s.snake_case.to_sym, *rargs)
103
114
  yield(res)
104
115
  rescue Exception => e
105
116
  wrap_and_throw_exception(method_name, e)
@@ -123,6 +134,9 @@ module Killbill
123
134
  JConverter.from_payment_method_plugin(a)
124
135
  elsif ((a.java_kind_of? Java::boolean) || (a.java_kind_of? java.lang.Boolean))
125
136
  JConverter.from_boolean(a)
137
+ # Require because it looks like if non boxed value are passed they already arrive as Ruby type
138
+ elsif ((a.java_kind_of? TrueClass) || (a.java_kind_of? FalseClass))
139
+ a
126
140
  elsif a.java_kind_of? java.util.List
127
141
  result = Array.new
128
142
  if a.size > 0
@@ -137,7 +151,9 @@ module Killbill
137
151
  end
138
152
  result
139
153
  else
140
- raise Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException.new("#{api} failure", "Unexpected parameter type #{a.class}")
154
+ # Since we don't pass the Context at this point, we can't raise any exceptions for unexpected types.
155
+ #raise Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException.new("#{api} failure", "Unexpected parameter type #{a.class}")
156
+ nil
141
157
  end
142
158
  end
143
159
  end
@@ -34,6 +34,16 @@ module Killbill
34
34
  end
35
35
  end
36
36
 
37
+ def to_refund_plugin_status(status)
38
+ if status == PaymentStatus::SUCCESS
39
+ Java::com.ning.billing.payment.plugin.api.RefundInfoPlugin::RefundPluginStatus::PROCESSED
40
+ elsif status == PaymentStatus::ERROR
41
+ Java::com.ning.billing.payment.plugin.api.RefundInfoPlugin::RefundPluginStatus::ERROR
42
+ else
43
+ Java::com.ning.billing.payment.plugin.api.RefundInfoPlugin::RefundPluginStatus::UNDEFINED
44
+ end
45
+ end
46
+
37
47
  def to_big_decimal(amount_in_cents)
38
48
  amount_in_cents.nil? ? java.math.BigDecimal::ZERO : java.math.BigDecimal.new('%.2f' % (amount_in_cents.to_i/100.0))
39
49
  end
@@ -74,6 +84,16 @@ module Killbill
74
84
  end
75
85
  end
76
86
 
87
+ def from_refund_plugin_status(status)
88
+ if status == Java::com.ning.billing.payment.plugin.api.RefundInfoPlugin::RefundPluginStatus::PROCESSED
89
+ PaymentStatus::SUCCESS
90
+ elsif status == Java::com.ning.billing.payment.plugin.api.RefundInfoPlugin::RefundPluginStatus::ERROR
91
+ PaymentStatus::ERROR
92
+ else
93
+ PaymentStatus::UNDEFINED
94
+ end
95
+ end
96
+
77
97
  def from_big_decimal(big_decimal)
78
98
  big_decimal.nil? ? 0 : big_decimal.multiply(java.math.BigDecimal.valueOf(100)).to_s.to_i
79
99
  end
@@ -20,7 +20,7 @@ module Killbill
20
20
  @amount = JConverter.to_big_decimal(refund_response.amount_in_cents)
21
21
  @created_date = JConverter.to_joda_date_time(refund_response.created_date)
22
22
  @effective_date = JConverter.to_joda_date_time(refund_response.effective_date)
23
- @status = JConverter.to_payment_plugin_status(refund_response.status)
23
+ @status = JConverter.to_refund_plugin_status(refund_response.status)
24
24
  @gateway_error = JConverter.to_string(refund_response.gateway_error)
25
25
  @gateway_error_code = JConverter.to_string(refund_response.gateway_error_code)
26
26
  end
@@ -16,7 +16,7 @@ module Killbill
16
16
  raise OperationUnsupportedByGatewayError
17
17
  end
18
18
 
19
- def charge(kb_payment_id, kb_payment_method_id, amount_in_cents, options = {})
19
+ def process_payment(kb_payment_id, kb_payment_method_id, amount_in_cents, options = {})
20
20
  raise OperationUnsupportedByGatewayError
21
21
  end
22
22
 
@@ -24,7 +24,7 @@ module Killbill
24
24
  raise OperationUnsupportedByGatewayError
25
25
  end
26
26
 
27
- def refund(kb_payment_id, amount_in_cents, options = {})
27
+ def process_refund(kb_payment_id, amount_in_cents, options = {})
28
28
  raise OperationUnsupportedByGatewayError
29
29
  end
30
30
 
@@ -44,7 +44,7 @@ module Killbill
44
44
  raise OperationUnsupportedByGatewayError
45
45
  end
46
46
 
47
- def get_payment_methods(kb_account_id, options = {})
47
+ def get_payment_methods(kb_account_id, refresh_from_gateway, options = {})
48
48
  raise OperationUnsupportedByGatewayError
49
49
  end
50
50
 
@@ -59,7 +59,9 @@ module Killbill
59
59
  end
60
60
 
61
61
  def logger=(logger)
62
- @logger = Killbill::Plugin::Logger.new(logger)
62
+ # logger is an OSGI LogService in the Killbill environment. For testing purposes,
63
+ # allow delegation to a standard logger
64
+ @logger = logger.respond_to?(:info) ? logger : Killbill::Plugin::Logger.new(logger)
63
65
  end
64
66
 
65
67
  def logger
@@ -29,6 +29,17 @@ describe Killbill::Plugin::PluginBase do
29
29
  lambda { plugin.blablabla }.should raise_error NoMethodError
30
30
  end
31
31
 
32
+ it 'should be able to default to the ruby logger for tests' do
33
+ logger = Logger.new(STDOUT)
34
+ logger.level = Logger::DEBUG
35
+
36
+ plugin = Killbill::Plugin::PluginBase.new
37
+ plugin.logger = logger
38
+ plugin.start_plugin
39
+
40
+ plugin.logger.level.should == logger.level
41
+ end
42
+
32
43
  it 'should be able to add custom code in the startup/shutdown sequence' do
33
44
  plugin = LifecycleNotificationPlugin.new
34
45
 
@@ -14,11 +14,11 @@ describe Killbill::Plugin::JPayment do
14
14
  end
15
15
 
16
16
  before(:each) do
17
- @jpayment.real_payment.send(:clear_exception_on_next_calls)
17
+ @jpayment.delegate_plugin.send(:clear_exception_on_next_calls)
18
18
  end
19
19
 
20
20
  it "should_test_charge_ok" do
21
- output = @jpayment.charge(@kb_payment_id, @kb_payment_method_id, @amount)
21
+ output = @jpayment.process_payment(@kb_payment_id, @kb_payment_method_id, @amount)
22
22
  output.get_amount.should be_an_instance_of java.math.BigDecimal
23
23
  output.get_amount.to_s.should == "50.00";
24
24
  output.get_status.should be_an_instance_of Java::com.ning.billing.payment.plugin.api.PaymentInfoPlugin::PaymentPluginStatus
@@ -26,8 +26,8 @@ describe Killbill::Plugin::JPayment do
26
26
  end
27
27
 
28
28
  it "should_test_charge_exception" do
29
- @jpayment.real_payment.send(:raise_exception_on_next_calls)
30
- lambda { @jpayment.charge(@kb_payment_id, @kb_payment_method_id, @amount) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
29
+ @jpayment.delegate_plugin.send(:raise_exception_on_next_calls)
30
+ lambda { @jpayment.process_payment(@kb_payment_id, @kb_payment_method_id, @amount) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
31
31
  end
32
32
 
33
33
  it "should_test_get_payment_info_ok" do
@@ -39,21 +39,21 @@ describe Killbill::Plugin::JPayment do
39
39
  end
40
40
 
41
41
  it "should_test_get_payment_info_exception" do
42
- @jpayment.real_payment.send(:raise_exception_on_next_calls)
42
+ @jpayment.delegate_plugin.send(:raise_exception_on_next_calls)
43
43
  lambda { @jpayment.get_payment_info(@kb_payment_method_id) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
44
44
  end
45
45
 
46
46
  it "should_test_refund_ok" do
47
- output = @jpayment.refund(@kb_payment_method_id, @amount)
47
+ output = @jpayment.process_refund(@kb_payment_method_id, @amount)
48
48
  output.get_amount.should be_an_instance_of java.math.BigDecimal
49
49
  output.get_amount.to_s.should == "50.00";
50
- output.get_status.should be_an_instance_of Java::com.ning.billing.payment.plugin.api.PaymentInfoPlugin::PaymentPluginStatus
50
+ output.get_status.should be_an_instance_of Java::com.ning.billing.payment.plugin.api.RefundInfoPlugin::RefundPluginStatus
51
51
  output.get_status.to_s.should == "PROCESSED"
52
52
  end
53
53
 
54
54
  it "should_test_refund_exception" do
55
- @jpayment.real_payment.send(:raise_exception_on_next_calls)
56
- lambda { @jpayment.refund(@kb_payment_method_id, @amount) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
55
+ @jpayment.delegate_plugin.send(:raise_exception_on_next_calls)
56
+ lambda { @jpayment.process_refund(@kb_payment_method_id, @amount) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
57
57
  end
58
58
 
59
59
  it "should_test_add_payment_method_ok" do
@@ -61,7 +61,7 @@ describe Killbill::Plugin::JPayment do
61
61
  end
62
62
 
63
63
  it "should_test_add_payment_method_exception" do
64
- @jpayment.real_payment.send(:raise_exception_on_next_calls)
64
+ @jpayment.delegate_plugin.send(:raise_exception_on_next_calls)
65
65
  lambda { @jpayment.add_payment_method(@kb_account_id, @kb_payment_method_id, @payment_method_plugin, true) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
66
66
  end
67
67
 
@@ -71,7 +71,7 @@ describe Killbill::Plugin::JPayment do
71
71
  end
72
72
 
73
73
  it "should_test_delete_payment_method_exception" do
74
- @jpayment.real_payment.send(:raise_exception_on_next_calls)
74
+ @jpayment.delegate_plugin.send(:raise_exception_on_next_calls)
75
75
  lambda { @jpayment.delete_payment_method(@kb_payment_method_id) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
76
76
  end
77
77
 
@@ -82,7 +82,7 @@ describe Killbill::Plugin::JPayment do
82
82
  end
83
83
 
84
84
  it "should_test_get_payment_method_detail_exception" do
85
- @jpayment.real_payment.send(:raise_exception_on_next_calls)
85
+ @jpayment.delegate_plugin.send(:raise_exception_on_next_calls)
86
86
  lambda { @jpayment.get_payment_method_detail(@kb_account_id, @kb_payment_method_id) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
87
87
  end
88
88
 
@@ -91,7 +91,7 @@ describe Killbill::Plugin::JPayment do
91
91
  end
92
92
 
93
93
  it "should_test_set_default_payment_method_exception" do
94
- @jpayment.real_payment.send(:raise_exception_on_next_calls)
94
+ @jpayment.delegate_plugin.send(:raise_exception_on_next_calls)
95
95
  lambda { @jpayment.set_default_payment_method(@kb_payment_method_id) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
96
96
  end
97
97
 
@@ -104,9 +104,8 @@ describe Killbill::Plugin::JPayment do
104
104
  current_payment_method = output.get(0)
105
105
  current_payment_method.get_account_id.to_s.should == @kb_account_id.to_s
106
106
  end
107
-
108
107
  it "should_get_payment_methods_exception" do
109
- @jpayment.real_payment.send(:raise_exception_on_next_calls)
108
+ @jpayment.delegate_plugin.send(:raise_exception_on_next_calls)
110
109
  lambda { @jpayment.get_payment_methods(@kb_account_id, true) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
111
110
  end
112
111
 
@@ -115,7 +114,7 @@ describe Killbill::Plugin::JPayment do
115
114
  end
116
115
 
117
116
  it "should_test_reset_payment_methods_exception" do
118
- @jpayment.real_payment.send(:raise_exception_on_next_calls)
117
+ @jpayment.delegate_plugin.send(:raise_exception_on_next_calls)
119
118
  lambda { @jpayment.reset_payment_methods(java.util.ArrayList.new) }.should raise_error Java::com.ning.billing.payment.plugin.api.PaymentPluginApiException
120
119
  end
121
120
  end
@@ -29,7 +29,7 @@ describe Killbill::Plugin::JRefundResponse do
29
29
  output.get_effective_date.should be_an_instance_of org.joda.time.DateTime
30
30
  #output.get_effective_date.to_s.should == effective_date.to_s;
31
31
 
32
- output.get_status.should be_an_instance_of Java::com.ning.billing.payment.plugin.api.PaymentInfoPlugin::PaymentPluginStatus
32
+ output.get_status.should be_an_instance_of Java::com.ning.billing.payment.plugin.api.RefundInfoPlugin::RefundPluginStatus
33
33
  output.get_status.to_s.should == "PROCESSED"
34
34
 
35
35
  output.get_gateway_error.should be_an_instance_of java.lang.String
@@ -20,15 +20,15 @@ describe Killbill::Plugin::Payment do
20
20
  end
21
21
 
22
22
  it "should raise exceptions for unsupported operations" do
23
- lambda { @plugin.charge(@external_account_key, @killbill_payment_id, @amount_in_cents) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
24
- lambda { @plugin.refund(@external_account_key, @killbill_payment_id, @amount_in_cents) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
23
+ lambda { @plugin.process_payment(@external_account_key, @killbill_payment_id, @amount_in_cents) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
24
+ lambda { @plugin.process_refund(@external_account_key, @killbill_payment_id, @amount_in_cents) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
25
25
  lambda { @plugin.get_payment_info(@killbill_payment_id) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
26
26
  lambda { @plugin.add_payment_method(@external_account_key, @payment_method, @payment_method_props, true ) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
27
27
  lambda { @plugin.delete_payment_method(@external_account_key, @external_payment_method_id) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
28
28
  lambda { @plugin.set_default_payment_method(@external_account_key, @payment_method) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
29
29
 
30
30
  lambda { @plugin.get_payment_method_detail(@external_account_key, @payment_method) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
31
- lambda { @plugin.get_payment_methods(@external_account_key) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
31
+ lambda { @plugin.get_payment_methods(@external_account_key, true) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
32
32
  lambda { @plugin.reset_payment_methods(@payment_methods) }.should raise_error Killbill::Plugin::Payment::OperationUnsupportedByGatewayError
33
33
  end
34
34
  end
@@ -11,7 +11,7 @@ module Killbill
11
11
  def get_name
12
12
  end
13
13
 
14
- def charge(kb_payment_id, kb_payment_method_id, amount_in_cents, options = {})
14
+ def process_payment(kb_payment_id, kb_payment_method_id, amount_in_cents, options = {})
15
15
  if @raise_exception
16
16
  raise StandardError.new("Test exception")
17
17
  else
@@ -27,7 +27,7 @@ module Killbill
27
27
  end
28
28
  end
29
29
 
30
- def refund(kb_payment_id, amount_in_cents, options = {})
30
+ def process_refund(kb_payment_id, amount_in_cents, options = {})
31
31
  if @raise_exception
32
32
  raise StandardError.new("Test exception")
33
33
  else
@@ -1,6 +1,8 @@
1
1
  require 'java'
2
2
 
3
3
  require 'bundler'
4
+ require 'logger'
5
+
4
6
  require 'killbill'
5
7
  # JRuby specific, not required by default
6
8
  require 'killbill/http_servlet'
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
5
4
  prerelease:
5
+ version: 1.0.9
6
6
  platform: ruby
7
7
  authors:
8
8
  - Killbill core team
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-21 00:00:00.000000000 Z
12
+ date: 2013-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jbundler
16
16
  version_requirements: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: 0.4.1
21
21
  none: false
22
22
  requirement: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.4.1
27
27
  none: false
@@ -31,13 +31,13 @@ dependencies:
31
31
  name: rack
32
32
  version_requirements: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - ! '>='
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: 1.5.2
37
37
  none: false
38
38
  requirement: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ! '>='
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
42
  version: 1.5.2
43
43
  none: false
@@ -47,13 +47,13 @@ dependencies:
47
47
  name: rake
48
48
  version_requirements: !ruby/object:Gem::Requirement
49
49
  requirements:
50
- - - ! '>='
50
+ - - ">="
51
51
  - !ruby/object:Gem::Version
52
52
  version: 0.8.7
53
53
  none: false
54
54
  requirement: !ruby/object:Gem::Requirement
55
55
  requirements:
56
- - - ! '>='
56
+ - - ">="
57
57
  - !ruby/object:Gem::Version
58
58
  version: 0.8.7
59
59
  none: false
@@ -63,13 +63,13 @@ dependencies:
63
63
  name: rspec
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 2.12.0
69
69
  none: false
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ~>
72
+ - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: 2.12.0
75
75
  none: false
@@ -79,13 +79,13 @@ dependencies:
79
79
  name: sinatra
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - ~>
82
+ - - "~>"
83
83
  - !ruby/object:Gem::Version
84
84
  version: 1.3.4
85
85
  none: false
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
90
  version: 1.3.4
91
91
  none: false
@@ -97,8 +97,8 @@ executables: []
97
97
  extensions: []
98
98
  extra_rdoc_files: []
99
99
  files:
100
- - .gitignore
101
- - .travis.yml
100
+ - ".gitignore"
101
+ - ".travis.yml"
102
102
  - Gemfile
103
103
  - Jarfile
104
104
  - README.md
@@ -144,25 +144,25 @@ licenses:
144
144
  - Apache License (2.0)
145
145
  post_install_message:
146
146
  rdoc_options:
147
- - --exclude
148
- - .
147
+ - "--exclude"
148
+ - "."
149
149
  require_paths:
150
150
  - lib
151
151
  required_ruby_version: !ruby/object:Gem::Requirement
152
152
  requirements:
153
- - - ! '>='
153
+ - - ">="
154
154
  - !ruby/object:Gem::Version
155
155
  version: 1.9.3
156
156
  none: false
157
157
  required_rubygems_version: !ruby/object:Gem::Requirement
158
158
  requirements:
159
- - - ! '>='
159
+ - - ">="
160
160
  - !ruby/object:Gem::Version
161
161
  segments:
162
162
  - 0
163
+ hash: 2
163
164
  version: !binary |-
164
165
  MA==
165
- hash: 2
166
166
  none: false
167
167
  requirements:
168
168
  - jar 'com.ning.billing:killbill-api'