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 +1 -1
- data/lib/rubylet.rb +1 -0
- data/lib/rubylet/environment.rb +3 -2
- data/lib/rubylet/servlet.rb +2 -2
- data/lib/rubylet/session.rb +59 -29
- data/lib/rubylet/session/container_store.rb +27 -0
- metadata +67 -12
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
1.0.0
|
data/lib/rubylet.rb
CHANGED
data/lib/rubylet/environment.rb
CHANGED
@@ -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('
|
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
|
data/lib/rubylet/servlet.rb
CHANGED
@@ -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
|
data/lib/rubylet/session.rb
CHANGED
@@ -1,33 +1,63 @@
|
|
1
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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
|
-
|
28
|
-
|
29
|
-
|
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:
|
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-
|
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/
|
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:
|