trinidad 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.0.1 (2010-11-04)
2
+
3
+ * fix problem loading lifecycle
4
+
1
5
  == 1.0.0 (2010-11-04)
2
6
 
3
7
  * Warbler support
data/lib/trinidad.rb CHANGED
@@ -24,5 +24,5 @@ require 'trinidad/rackup_web_app'
24
24
  require 'trinidad/war_web_app'
25
25
 
26
26
  module Trinidad
27
- VERSION = '1.0.0'
27
+ VERSION = '1.0.1'
28
28
  end
@@ -0,0 +1,75 @@
1
+ module Trinidad
2
+ module Lifecycle
3
+ class Base
4
+ include Trinidad::Tomcat::LifecycleListener
5
+
6
+ def initialize(webapp)
7
+ @webapp = webapp
8
+ @configured_logger = false
9
+ end
10
+
11
+ def lifecycleEvent(event)
12
+ if Trinidad::Tomcat::Lifecycle::BEFORE_START_EVENT == event.type
13
+ context = event.lifecycle
14
+ configure_defaults(context)
15
+ end
16
+ end
17
+
18
+ def configure_defaults(context)
19
+ remove_defaults(context)
20
+ configure_logging
21
+ end
22
+
23
+ def remove_defaults(context)
24
+ context.remove_welcome_file('index.jsp')
25
+ context.remove_welcome_file('index.htm')
26
+ context.remove_welcome_file('index.html')
27
+
28
+ jsp_servlet = context.find_child('jsp')
29
+ context.remove_child(jsp_servlet) if jsp_servlet
30
+
31
+ context.remove_servlet_mapping('*.jspx')
32
+ context.remove_servlet_mapping('*.jsp')
33
+
34
+ context.process_tlds = false
35
+ context.xml_validation = false
36
+ end
37
+
38
+ def configure_logging
39
+ return if @configured_logger
40
+
41
+ log_path = File.join(@webapp.work_dir, 'log', "#{@webapp.environment}.log")
42
+ log_file = java.io.File.new(log_path)
43
+
44
+ unless log_file.exists
45
+ log_file.parent_file.mkdirs
46
+ log_file.create_new_file
47
+ end
48
+
49
+ jlogging = java.util.logging
50
+
51
+ log_handler = jlogging.FileHandler.new(log_path, true)
52
+ logger = jlogging.Logger.get_logger("")
53
+
54
+ log_level = @webapp.log
55
+ unless %w{ALL CONFIG FINE FINER FINEST INFO OFF SEVERE WARNING}.include?(log_level)
56
+ puts "Invalid log level #{log_level}, using default: INFO"
57
+ log_level = 'INFO'
58
+ end
59
+
60
+ level = jlogging.Level.parse(log_level)
61
+
62
+ logger.handlers.each do |handler|
63
+ handler.level = level
64
+ end
65
+
66
+ logger.level = level
67
+
68
+ log_handler.formatter = jlogging.SimpleFormatter.new
69
+ logger.add_handler(log_handler)
70
+
71
+ @configured_logger = true
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,75 @@
1
+ module Trinidad
2
+ module Lifecycle
3
+ class Default < Base
4
+ def configure_defaults(context)
5
+ super
6
+ deployment_descriptor = configure_deployment_descriptor(context)
7
+ unless deployment_descriptor
8
+ configure_rack_servlet(context)
9
+ configure_rack_listener(context)
10
+ end
11
+ configure_init_params(context)
12
+ configure_context_loader(context)
13
+ end
14
+
15
+ def configure_deployment_descriptor(context)
16
+ if descriptor = @webapp.default_deployment_descriptor
17
+ context.setDefaultWebXml(descriptor)
18
+
19
+ context_config = Trinidad::Tomcat::ContextConfig.new
20
+ context_config.setDefaultWebXml(descriptor)
21
+
22
+ context.addLifecycleListener(context_config)
23
+ end
24
+ descriptor
25
+ end
26
+
27
+ def configure_rack_servlet(context)
28
+ wrapper = context.create_wrapper
29
+ wrapper.servlet_class = @webapp.servlet[:class]
30
+ wrapper.name = @webapp.servlet[:name]
31
+
32
+ context.add_child(wrapper)
33
+ context.add_servlet_mapping('/*', wrapper.name)
34
+ end
35
+
36
+ def configure_rack_listener(context)
37
+ context.addApplicationListener(@webapp.rack_listener)
38
+ end
39
+
40
+ def configure_init_params(context)
41
+ @webapp.init_params.each do |name, value|
42
+ context.addParameter(name, value)
43
+ end
44
+ end
45
+
46
+ def configure_context_loader(context)
47
+ class_loader = @webapp.class_loader
48
+
49
+ add_application_jars(class_loader)
50
+ add_application_java_classes(class_loader)
51
+
52
+ loader = Trinidad::Tomcat::WebappLoader.new(class_loader)
53
+ loader.container = context
54
+ context.loader = loader
55
+ end
56
+
57
+ def add_application_jars(class_loader)
58
+ return unless @webapp.libs_dir
59
+
60
+ resources_dir = File.join(@webapp.web_app_dir, @webapp.libs_dir, '**', '*.jar')
61
+
62
+ Dir[resources_dir].each do |resource|
63
+ class_loader.addURL(java.io.File.new(resource).to_url)
64
+ end
65
+ end
66
+
67
+ def add_application_java_classes(class_loader)
68
+ return unless @webapp.classes_dir
69
+
70
+ resources_dir = File.join(@webapp.web_app_dir, @webapp.classes_dir)
71
+ class_loader.addURL(java.io.File.new(resources_dir).to_url)
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,16 @@
1
+ module Trinidad
2
+ module Lifecycle
3
+ class War < Base
4
+ def configure_defaults(context)
5
+ super
6
+ configure_class_loader(context)
7
+ end
8
+
9
+ def configure_class_loader(context)
10
+ loader = Trinidad::Tomcat::WebappLoader.new(@webapp.class_loader)
11
+ loader.container = context
12
+ context.loader = loader
13
+ end
14
+ end
15
+ end
16
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 0
9
- version: 1.0.0
8
+ - 1
9
+ version: 1.0.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - David Calavera
@@ -104,6 +104,9 @@ files:
104
104
  - lib/trinidad/server.rb
105
105
  - lib/trinidad/war_web_app.rb
106
106
  - lib/trinidad/web_app.rb
107
+ - lib/trinidad/lifecycle/lifecycle_listener_base.rb
108
+ - lib/trinidad/lifecycle/lifecycle_listener_default.rb
109
+ - lib/trinidad/lifecycle/lifecycle_listener_war.rb
107
110
  has_rdoc: true
108
111
  homepage: http://github.com/calavera/trinidad
109
112
  licenses: []