Class: Trinidad::Lifecycle::Default

Inherits:
Base
  • Object
show all
Defined in:
lib/trinidad/lifecycle/lifecycle_listener_default.rb

Instance Attribute Summary

Attributes inherited from Base

#webapp

Instance Method Summary collapse

Methods inherited from Base

#configure_logging, #initialize, #lifecycleEvent, #remove_defaults

Constructor Details

This class inherits a constructor from Trinidad::Lifecycle::Base

Instance Method Details

#add_application_jars(class_loader) ⇒ Object



66
67
68
69
70
71
72
73
74
# File 'lib/trinidad/lifecycle/lifecycle_listener_default.rb', line 66

def add_application_jars(class_loader)
  return unless @webapp.libs_dir

  resources_dir = File.join(@webapp.web_app_dir, @webapp.libs_dir, '**', '*.jar')

  Dir[resources_dir].each do |resource|
    class_loader.addURL(java.io.File.new(resource).to_url)
  end
end

#add_application_java_classes(class_loader) ⇒ Object



76
77
78
79
80
81
# File 'lib/trinidad/lifecycle/lifecycle_listener_default.rb', line 76

def add_application_java_classes(class_loader)
  return unless @webapp.classes_dir

  resources_dir = File.join(@webapp.web_app_dir, @webapp.classes_dir)
  class_loader.addURL(java.io.File.new(resources_dir).to_url)
end

#configure_context_loader(context) ⇒ Object



55
56
57
58
59
60
61
62
63
64
# File 'lib/trinidad/lifecycle/lifecycle_listener_default.rb', line 55

def configure_context_loader(context)
  class_loader = @webapp.class_loader

  add_application_jars(class_loader)
  add_application_java_classes(class_loader)

  loader = Trinidad::Tomcat::WebappLoader.new(class_loader)
  loader.container = context
  context.loader = loader
end

#configure_defaults(context) ⇒ Object



4
5
6
7
8
9
10
11
12
13
# File 'lib/trinidad/lifecycle/lifecycle_listener_default.rb', line 4

def configure_defaults(context)
  super
  deployment_descriptor = configure_deployment_descriptor(context)
  unless deployment_descriptor
    configure_rack_servlet(context)
    configure_rack_listener(context)
  end
  configure_init_params(context)
  configure_context_loader(context)
end

#configure_deployment_descriptor(context) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/trinidad/lifecycle/lifecycle_listener_default.rb', line 15

def configure_deployment_descriptor(context)
  if descriptor = @webapp.default_deployment_descriptor
    listeners = context.findLifecycleListeners
    context_config = listeners && listeners.find do |listener|
      listener.is_a?(Trinidad::Tomcat::ContextConfig)
    end

    unless context_config
      context_config = Trinidad::Tomcat::ContextConfig.new
      context.addLifecycleListener(context_config)
    end

    context_config.setDefaultWebXml(descriptor)
  end
  descriptor
end

#configure_init_params(context) ⇒ Object



49
50
51
52
53
# File 'lib/trinidad/lifecycle/lifecycle_listener_default.rb', line 49

def configure_init_params(context)
  @webapp.init_params.each do |name, value|
    context.addParameter(name, value)
  end
end

#configure_rack_listener(context) ⇒ Object



45
46
47
# File 'lib/trinidad/lifecycle/lifecycle_listener_default.rb', line 45

def configure_rack_listener(context)
  context.addApplicationListener(@webapp.rack_listener) unless @webapp.servlet[:instance]
end

#configure_rack_servlet(context) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/trinidad/lifecycle/lifecycle_listener_default.rb', line 32

def configure_rack_servlet(context)
  wrapper = context.create_wrapper
  if @webapp.servlet[:instance]
    wrapper.servlet = @webapp.servlet[:instance]
  else
    wrapper.servlet_class = @webapp.servlet[:class]
  end
  wrapper.name = @webapp.servlet[:name]

  context.add_child(wrapper)
  context.add_servlet_mapping('/*', wrapper.name)
end