Class: Trinidad::WebAppLifecycleListener

Inherits:
Object
  • Object
show all
Includes:
LifecycleListener
Defined in:
lib/trinidad/web_app_lifecycle_listener.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(webapp) ⇒ WebAppLifecycleListener

Returns a new instance of WebAppLifecycleListener.



10
11
12
# File 'lib/trinidad/web_app_lifecycle_listener.rb', line 10

def initialize(webapp)
  @webapp = webapp
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



8
9
10
# File 'lib/trinidad/web_app_lifecycle_listener.rb', line 8

def context
  @context
end

Instance Method Details

#add_application_jars(class_loader) ⇒ Object



74
75
76
77
78
79
80
81
82
# File 'lib/trinidad/web_app_lifecycle_listener.rb', line 74

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



84
85
86
87
88
89
# File 'lib/trinidad/web_app_lifecycle_listener.rb', line 84

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_loaderObject



63
64
65
66
67
68
69
70
71
72
# File 'lib/trinidad/web_app_lifecycle_listener.rb', line 63

def configure_context_loader
  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_deployment_descriptorObject



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

def configure_deployment_descriptor
  if descriptor = @webapp.default_deployment_descriptor
    @context.setDefaultWebXml(descriptor)

    context_config = Trinidad::Tomcat::ContextConfig.new
    context_config.setDefaultWebXml(descriptor)

    @context.addLifecycleListener(context_config)
  end
  descriptor
end

#configure_init_paramsObject



57
58
59
60
61
# File 'lib/trinidad/web_app_lifecycle_listener.rb', line 57

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

#configure_rack_listenerObject



53
54
55
# File 'lib/trinidad/web_app_lifecycle_listener.rb', line 53

def configure_rack_listener
  @context.addApplicationListener(@webapp.rack_listener)
end

#configure_rack_servletObject



44
45
46
47
48
49
50
51
# File 'lib/trinidad/web_app_lifecycle_listener.rb', line 44

def configure_rack_servlet
  wrapper = @context.create_wrapper
  wrapper.servlet_class = @webapp.servlet[:class]
  wrapper.name = @webapp.servlet[:name]

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

#init_defaults(context) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/trinidad/web_app_lifecycle_listener.rb', line 20

def init_defaults(context)
  @context = context

  deployment_descriptor = configure_deployment_descriptor
  unless deployment_descriptor
    configure_rack_servlet
    configure_rack_listener
  end
  configure_init_params
  configure_context_loader
end

#lifecycleEvent(event) ⇒ Object



14
15
16
17
18
# File 'lib/trinidad/web_app_lifecycle_listener.rb', line 14

def lifecycleEvent(event)
  if Lifecycle::BEFORE_START_EVENT == event.type
    init_defaults(event.lifecycle)
  end
end