trinidad 1.0.0 → 1.0.1

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/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: []