rubylet 0.1.0-java → 1.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 1.0.0
@@ -1,2 +1,3 @@
1
1
  require 'rubylet/servlet'
2
2
  require 'rubylet/environment'
3
+ require 'rubylet/session/container_store'
@@ -107,11 +107,11 @@ class Rubylet::Environment < Hash
107
107
  self['rack.multiprocess'] = false
108
108
  self['rack.run_once'] = false
109
109
 
110
- if servlet.param('useSessions')
110
+ if servlet.param('rubylet.useSessions')
111
111
  self['rack.session'] = Rubylet::Session.new(req)
112
112
  end
113
113
 
114
- if servlet.param('userLogger')
114
+ if servlet.param('rubylet.useLogger')
115
115
  self['rack.logger'] = Rubylet::Logger.new(context)
116
116
  end
117
117
 
@@ -130,6 +130,7 @@ class Rubylet::Environment < Hash
130
130
  self['SERVER_PROTOCOL'] = req.getProtocol
131
131
  self['SERVER_SOFTWARE'] = context.getServerInfo
132
132
 
133
+ self['java.servlet_request'] = req
133
134
  self['java.context_path'] = req.getContextPath
134
135
  self['java.path_info'] = req.getPathInfo
135
136
  self['java.servlet_path'] = req.getServletPath
@@ -13,11 +13,11 @@ module Rubylet
13
13
  @servlet_config = servletConfig
14
14
  @context = servletConfig.getServletContext
15
15
 
16
- rackup_file = param('rackupFile') || 'config.ru'
16
+ rackup_file = param('rubylet.rackupFile') || 'config.ru'
17
17
  @app, _opts = Rack::Builder.parse_file(rackup_file)
18
18
 
19
19
  if defined?(Rails) && defined?(Rails::Application) && (@app < Rails::Application)
20
- servlet_path = @servlet_config.getInitParameter('servletPath')
20
+ servlet_path = @servlet_config.getInitParameter('rubylet.servletPath')
21
21
  relative_root = if servlet_path
22
22
  File.join(@context.context_path, servlet_path)
23
23
  else
@@ -1,33 +1,63 @@
1
- class Rubylet::Session
1
+ # A Rack compatible session object that forwards to an underlying
2
+ # +javax.servlet.http.HttpSession+.
3
+ module Rubylet
4
+ class Session
5
+ # @param [javax.servlet.http.HttpServletRequest] req
6
+ # @param [Hash] options
7
+ # @option options [Integer] :expire_after The max inactive interval, in seconds
8
+ def initialize(req, options={})
9
+ @javaSession = req.getSession
2
10
 
3
- def initialize(req)
4
- @javaSession = req.getSession
5
- end
6
-
7
- def store(key, value)
8
- @javaSession.setAttribute(key, value)
9
- end
10
-
11
- alias_method :[]=, :store
12
-
13
- def fetch(key, default = nil)
14
- @javaSession.getAttribute(key) || default
15
- end
16
-
17
- alias_method :[], :fetch
18
-
19
- def delete(key)
20
- @javaSession.removeAttribute(key)
21
- end
22
-
23
- def clear
24
- @javaSession.getAttributeNames.each {|key| delete(key) }
25
- end
11
+ if @javaSession.isNew
12
+ if exp = options[:expire_after]
13
+ req.setMaxInactiveInterval exp.to_i
14
+ end
15
+ end
16
+ end
17
+
18
+ def store(key, value)
19
+ @javaSession.setAttribute(key, value)
20
+ end
21
+ alias_method :[]=, :store
22
+
23
+ def fetch(key, default = nil)
24
+ @javaSession.getAttribute(key) || default
25
+ end
26
+ alias_method :[], :fetch
27
+
28
+ def delete(key)
29
+ @javaSession.removeAttribute(key)
30
+ end
31
+
32
+ def clear
33
+ @javaSession.getAttributeNames.each {|key| delete(key) }
34
+ end
35
+
36
+ # This method is not required by the Rack SPEC for session
37
+ # objects, but Rails calls it anyway in +actionpack (3.2.9)
38
+ # lib/action_dispatch/middleware/flash.rb:258:in `call'+
39
+ def has_key?(key)
40
+ !(fetch(key).nil?)
41
+ end
42
+ alias_method :include?, :has_key?
43
+ alias_method :key?, :has_key?
44
+ alias_method :member?, :has_key?
45
+
46
+ # Used by Rails but not required by Rack.
47
+ def destroy
48
+ @javaSession.invalidate
49
+ end
50
+
51
+ def to_hash
52
+ hash = {}
53
+ @javaSession.getAttributeNames.each do
54
+ |key| hash[key] = @javaSession.getAttribute(key)
55
+ end
56
+ hash
57
+ end
26
58
 
27
- def to_hash
28
- hash = {}
29
- @javaSession.getAttributeNames.each {|key| hash[key] = @javaSession.getAttribute(key) }
30
- hash
59
+ def inspect
60
+ to_hash.inspect
61
+ end
31
62
  end
32
-
33
63
  end
@@ -0,0 +1,27 @@
1
+ require 'rubylet/session'
2
+
3
+ # Rack middleware to make the servlet container's sessions available to ruby.
4
+ module Rubylet
5
+ class Session
6
+ class ContainerStore
7
+ def initialize(app, options={})
8
+ @app = app
9
+ @options = options
10
+ end
11
+
12
+ def call(env)
13
+ context(env)
14
+ end
15
+
16
+ # For Rack::Util::Context
17
+ def context(env, app=@app)
18
+ if req = env['java.servlet_request']
19
+ env['rack.session'] = Session.new(req, @options)
20
+ else
21
+ env['rack.errors'].puts 'java.servlet_request not found; cannot make session'
22
+ end
23
+ app.call(env)
24
+ end
25
+ end
26
+ end
27
+ end
metadata CHANGED
@@ -2,15 +2,69 @@
2
2
  name: rubylet
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 1.0.0
6
6
  platform: java
7
7
  authors:
8
8
  - CG Labs
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-13 00:00:00.000000000 Z
12
+ date: 2012-12-31 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rack
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
32
+ - !ruby/object:Gem::Dependency
33
+ name: mechanize
34
+ version_requirements: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: !binary |-
39
+ MA==
40
+ none: false
41
+ requirement: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: !binary |-
46
+ MA==
47
+ none: false
48
+ prerelease: false
49
+ type: :development
50
+ - !ruby/object:Gem::Dependency
51
+ name: mini_aether
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: !binary |-
57
+ MA==
58
+ none: false
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: !binary |-
64
+ MA==
65
+ none: false
66
+ prerelease: false
67
+ type: :development
14
68
  - !ruby/object:Gem::Dependency
15
69
  name: minitest-matchers
16
70
  version_requirements: !ruby/object:Gem::Requirement
@@ -75,18 +129,19 @@ files:
75
129
  - VERSION
76
130
  - MIT-LICENSE
77
131
  - lib/rubylet.rb
78
- - lib/rubylet/mem_file_io.rb
79
132
  - lib/rubylet/environment.rb
80
- - lib/rubylet/rewindable_io.rb
81
- - lib/rubylet/input.rb
82
- - lib/rubylet/tee_io.rb
83
133
  - lib/rubylet/errors.rb
84
- - lib/rubylet/session.rb
134
+ - lib/rubylet/input.rb
85
135
  - lib/rubylet/logger.rb
136
+ - lib/rubylet/mem_file_io.rb
137
+ - lib/rubylet/rewindable_io.rb
86
138
  - lib/rubylet/servlet.rb
139
+ - lib/rubylet/session.rb
140
+ - lib/rubylet/tee_io.rb
141
+ - lib/rubylet/session/container_store.rb
87
142
  - spec/spec_helper.rb
88
- - spec/rubylet/rewindable_io_spec.rb
89
143
  - spec/rubylet/mem_file_io_spec.rb
144
+ - spec/rubylet/rewindable_io_spec.rb
90
145
  - spec/rubylet/tee_io_spec.rb
91
146
  homepage:
92
147
  licenses: []
@@ -98,21 +153,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
153
  requirements:
99
154
  - - ! '>='
100
155
  - !ruby/object:Gem::Version
101
- version: !binary |-
102
- MA==
103
156
  segments:
104
157
  - 0
105
158
  hash: 2
159
+ version: !binary |-
160
+ MA==
106
161
  none: false
107
162
  required_rubygems_version: !ruby/object:Gem::Requirement
108
163
  requirements:
109
164
  - - ! '>='
110
165
  - !ruby/object:Gem::Version
111
- version: !binary |-
112
- MA==
113
166
  segments:
114
167
  - 0
115
168
  hash: 2
169
+ version: !binary |-
170
+ MA==
116
171
  none: false
117
172
  requirements: []
118
173
  rubyforge_project: