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