rubylet 0.1.0-java → 1.0.0-java

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
- 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: