tccbuilder 0.2.5 → 0.3.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/VERSION +1 -1
- data/lib/tccbuilder.rb +10 -10
- data/lib/tccbuilder/cmdlet.rb +22 -14
- data/lib/tccbuilder/ext/string.rb +17 -0
- data/lib/tccbuilder/options.rb +30 -25
- data/lib/tccbuilder/tomcat6.rb +1 -2
- data/lib/tccbuilder/tomcat6/server_xml.rb +25 -32
- data/lib/tccbuilder/xml_elements.rb +8 -0
- data/lib/tccbuilder/xml_elements/base.rb +54 -0
- data/lib/tccbuilder/xml_elements/context.rb +9 -0
- data/lib/tccbuilder/xml_elements/valve.rb +12 -0
- data/lib/tccbuilder/xml_elements/virtual_host.rb +39 -0
- data/tccbuilder.gemspec +14 -5
- data/test/helper.rb +5 -1
- data/test/test_string_ext.rb +15 -0
- data/test/test_virtual_host.rb +91 -0
- metadata +15 -6
- data/lib/tccbuilder/tomcat6/virtual_host.rb +0 -111
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.1
|
data/lib/tccbuilder.rb
CHANGED
@@ -3,6 +3,8 @@ class TCCBuilder
|
|
3
3
|
require 'rexml/document'
|
4
4
|
require 'tccbuilder/errors'
|
5
5
|
require 'tccbuilder/cmdlet'
|
6
|
+
require 'tccbuilder/ext/string'
|
7
|
+
require 'tccbuilder/xml_elements'
|
6
8
|
|
7
9
|
attr_reader :options
|
8
10
|
attr_reader :version
|
@@ -19,25 +21,23 @@ class TCCBuilder
|
|
19
21
|
else
|
20
22
|
raise UnsupportedTomcatVersion, "Unsupported Tomcat version: #{@version}"
|
21
23
|
end
|
22
|
-
@server_xml = klass.new(@options
|
24
|
+
@server_xml = klass.new(@options[:config_file])
|
23
25
|
end
|
24
26
|
|
25
27
|
def add_virtual_host
|
26
|
-
raise VirtualHostAlreadyExists if self.server_xml.virtual_host_exists?(self.options
|
27
|
-
self.server_xml.add_virtual_host(self.options
|
28
|
+
raise VirtualHostAlreadyExists if self.server_xml.virtual_host_exists?(self.options[:name], self.options[:service])
|
29
|
+
self.server_xml.add_virtual_host(self.options[:name], self.options[:service], self.options[:app_base], self.options)
|
28
30
|
self.save
|
29
31
|
end
|
30
32
|
|
31
33
|
def rm_virtual_host
|
32
|
-
raise VirtualHostNotFound unless self.server_xml.virtual_host_exists?(self.options
|
33
|
-
self.server_xml.remove_virtual_host(self.options
|
34
|
+
raise VirtualHostNotFound unless self.server_xml.virtual_host_exists?(self.options[:name], self.options[:service])
|
35
|
+
self.server_xml.remove_virtual_host(self.options[:name], self.options[:service])
|
34
36
|
self.save
|
35
37
|
end
|
36
|
-
|
37
|
-
def
|
38
|
-
|
39
|
-
# self.server_xml.update_virtual_host(self.options.name, self.options.service)
|
40
|
-
# self.save
|
38
|
+
|
39
|
+
def virtual_host_exists
|
40
|
+
self.server_xml.virtual_host_exists?(self.options[:name], self.options[:service])
|
41
41
|
end
|
42
42
|
|
43
43
|
protected
|
data/lib/tccbuilder/cmdlet.rb
CHANGED
@@ -6,36 +6,44 @@ class TCCBuilder
|
|
6
6
|
def run!(bin_name, version, *arguments)
|
7
7
|
@options = Options.new(bin_name, arguments)
|
8
8
|
|
9
|
-
if @options
|
9
|
+
if @options[:invalid_command]
|
10
10
|
em_puts "Invalid command: #{@options.invalid_command}"
|
11
|
-
@options
|
11
|
+
@options[:show_help] = true
|
12
12
|
end
|
13
13
|
|
14
|
-
if @options
|
15
|
-
em_puts "Missing options: #{@options
|
16
|
-
@options
|
14
|
+
if @options[:missing_options] && !@options[:invalid_command]
|
15
|
+
em_puts "Missing options: #{@options[:missing_options].join(', ')}"
|
16
|
+
@options[:show_help] = true
|
17
17
|
end
|
18
18
|
|
19
|
-
if @options
|
20
|
-
em_puts @options
|
21
|
-
@options
|
19
|
+
if @options[:invalid_option]
|
20
|
+
em_puts @options[:invalid_option]
|
21
|
+
@options[:show_help] = true
|
22
22
|
end
|
23
23
|
|
24
|
-
if @options
|
25
|
-
puts @options
|
24
|
+
if @options[:show_help]
|
25
|
+
puts @options[:opts]
|
26
26
|
Kernel.abort
|
27
27
|
end
|
28
28
|
|
29
29
|
tccbuilder = TCCBuilder.new(version, @options)
|
30
30
|
|
31
31
|
begin
|
32
|
-
case @options
|
32
|
+
case @options[:command]
|
33
33
|
when "add_vhost"
|
34
34
|
tccbuilder.add_virtual_host
|
35
|
-
em_puts "VirtualHost successfully added! [#{@options
|
35
|
+
em_puts "VirtualHost successfully added! [#{@options[:name]}]"
|
36
36
|
when "rm_vhost"
|
37
37
|
tccbuilder.rm_virtual_host
|
38
|
-
em_puts "VirtualHost successfully deleted! [#{@options
|
38
|
+
em_puts "VirtualHost successfully deleted! [#{@options[:name]}]"
|
39
|
+
when "vhost_exists"
|
40
|
+
if tccbuilder.virtual_host_exists
|
41
|
+
em_puts "VirtualHost exists. [#{@options[:name]}]"
|
42
|
+
exit 0
|
43
|
+
else
|
44
|
+
em_puts "VirtualHost does not exist. [#{@options[:name]}]"
|
45
|
+
exit 1
|
46
|
+
end
|
39
47
|
end
|
40
48
|
return 0
|
41
49
|
rescue VirtualHostAlreadyExists
|
@@ -62,7 +70,7 @@ class TCCBuilder
|
|
62
70
|
private
|
63
71
|
|
64
72
|
def console_format(str)
|
65
|
-
"[
|
73
|
+
"[tccbuilder] #{str}"
|
66
74
|
end
|
67
75
|
end
|
68
76
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class String
|
2
|
+
def camel_case
|
3
|
+
str = self.dup
|
4
|
+
str.camel_case!
|
5
|
+
end
|
6
|
+
|
7
|
+
def camel_case!
|
8
|
+
arr = self.split('_')
|
9
|
+
arr.first.downcase!
|
10
|
+
return arr.first unless arr.count > 1
|
11
|
+
marr = [arr.first]
|
12
|
+
marr << arr[1..arr.count].collect do |word|
|
13
|
+
word.capitalize!
|
14
|
+
end
|
15
|
+
marr.join('')
|
16
|
+
end
|
17
|
+
end
|
data/lib/tccbuilder/options.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'ostruct'
|
2
2
|
|
3
3
|
class TCCBuilder
|
4
|
-
class Options <
|
4
|
+
class Options < Hash
|
5
5
|
require 'optparse'
|
6
6
|
|
7
7
|
attr_reader :opts
|
@@ -15,10 +15,12 @@ class TCCBuilder
|
|
15
15
|
super()
|
16
16
|
|
17
17
|
# First argument should be a valid command or help_flag
|
18
|
-
self
|
18
|
+
self[:command] = args.slice!(0)
|
19
19
|
|
20
20
|
# Setup default options
|
21
|
-
self
|
21
|
+
self[:service] = "Catalina"
|
22
|
+
self[:valves] = []
|
23
|
+
self[:aliases] = []
|
22
24
|
|
23
25
|
@opts = OptionParser.new do |opt|
|
24
26
|
opt.banner = "Usage: #{bin_name} [command] [options]"
|
@@ -31,65 +33,68 @@ class TCCBuilder
|
|
31
33
|
opt.separator "Specific options:"
|
32
34
|
|
33
35
|
opt.on("-c", "--config CONFIG", String, "Path to Tomcat server.xml config file.") do |f|
|
34
|
-
self
|
36
|
+
self[:config_file] = f
|
35
37
|
end
|
36
38
|
opt.on("-n", "--hostname HOSTNAME", String, "Hostname of the target Virtual Host.") do |f|
|
37
|
-
self
|
39
|
+
self[:name] = f
|
38
40
|
end
|
39
41
|
opt.on("-s", "--service [SERVICE]", String, "Service to place Virtual Host under. (Default: Catalina)") do |f|
|
40
|
-
self
|
42
|
+
self[:service] = f
|
41
43
|
end
|
42
44
|
opt.on("-a", "--app-base APP_BASE", String, "Application base of Virtual Host.") do |f|
|
43
|
-
self
|
45
|
+
self[:app_base] = f
|
44
46
|
end
|
45
47
|
opt.on("-p", "--path [PATH]", String, "Path of the Virtual Host's context.") do |f|
|
46
|
-
self
|
48
|
+
self[:path] = f
|
47
49
|
end
|
48
50
|
opt.on("-d", "--doc-base [DOC_BASE]", String, "Document base of the Virtual Host's context.") do |f|
|
49
|
-
self
|
51
|
+
self[:doc_base] = f
|
50
52
|
end
|
51
53
|
opt.on("--debug-level [LEVEL]", Integer, "Debug level of Virtual Host's context.") do |f|
|
52
|
-
self
|
54
|
+
self[:debug] = f
|
53
55
|
end
|
54
|
-
opt.on("--aliases
|
55
|
-
self
|
56
|
+
opt.on("--aliases sharkvers.us,example.com", Array, "Optional list of aliases for Virtual Host.") do |list|
|
57
|
+
self[:aliases] = list
|
58
|
+
end
|
59
|
+
opt.on("--valve className=org.apache.catalina.valves.AccessLogValve,directory=logs,suffix=.log", Array, "Adds a valve element to the virtual host.") do |f|
|
60
|
+
self[:valves] << f
|
56
61
|
end
|
57
62
|
opt.on("-C", "--class-name [CLASS_NAME]", String, "Java class name of the implementation to use.") do |f|
|
58
|
-
self
|
63
|
+
self[:class_name] = f
|
59
64
|
end
|
60
65
|
opt.on("--disable-unpack-wars", "Enable unpack wars.") do
|
61
|
-
self
|
66
|
+
self[:unpack_wars] = false
|
62
67
|
end
|
63
68
|
opt.on("--reloadable", "Enable reloadable flag.") do
|
64
|
-
self
|
69
|
+
self[:reloadable] = true
|
65
70
|
end
|
66
71
|
opt.on("--disable-auto-deploy", "Disables periodic checks for new or updated web applications while running.") do
|
67
|
-
self
|
72
|
+
self[:auto_deploy] = false
|
68
73
|
end
|
69
74
|
opt.on("--background-processor-delay", "Sets the delay in seconds between invocation of backgroundProcess method on host and child containers.") do |f|
|
70
|
-
self
|
75
|
+
self[:background_processor_delay] = f
|
71
76
|
end
|
72
77
|
opt.on("--disable-deploy-on-startup", "Indicates if web applications from this host should be automatically deployed when Tomcat starts.") do
|
73
|
-
self
|
78
|
+
self[:deploy_on_startup] = false
|
74
79
|
end
|
75
80
|
opt.on_tail(HELP_FLAG, "--help", "Show this message.") do
|
76
|
-
self
|
81
|
+
self[:show_help] = true
|
77
82
|
end
|
78
83
|
end
|
79
|
-
|
84
|
+
|
80
85
|
begin
|
81
86
|
@opts.parse!(args)
|
82
87
|
rescue OptionParser::InvalidOption => e
|
83
|
-
self
|
88
|
+
self[:invalid_option] = e
|
84
89
|
end
|
85
90
|
|
86
|
-
if self
|
87
|
-
self
|
91
|
+
if self[:command] == HELP_FLAG
|
92
|
+
self[:show_help] = true
|
88
93
|
else
|
89
94
|
mandatory_flags = [:config_file, :name]
|
90
|
-
missing_required_opts = mandatory_flags.select { |param| self.
|
95
|
+
missing_required_opts = mandatory_flags.select { |param| !self.has_key?(param) }
|
91
96
|
unless missing_required_opts.empty?
|
92
|
-
self
|
97
|
+
self[:missing_options] = missing_required_opts
|
93
98
|
end
|
94
99
|
end
|
95
100
|
end
|
data/lib/tccbuilder/tomcat6.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
|
1
3
|
class TCCBuilder
|
2
4
|
module Tomcat6
|
3
5
|
class ServerXML
|
4
|
-
require 'ostruct'
|
5
|
-
require 'rexml/document'
|
6
|
-
|
7
6
|
attr_reader :xml
|
8
7
|
attr_reader :file
|
8
|
+
|
9
9
|
FORMATTER = REXML::Formatters::Pretty.new
|
10
10
|
|
11
11
|
def initialize(file)
|
@@ -14,36 +14,33 @@ class TCCBuilder
|
|
14
14
|
@xml = REXML::Document.new(raw, :raw => :all).root
|
15
15
|
end
|
16
16
|
|
17
|
-
def add_virtual_host(name, service,
|
18
|
-
host = VirtualHost.new(name, service)
|
17
|
+
def add_virtual_host(name, service, app_base, options = {})
|
18
|
+
host = TCCBuilder::XMLElements::VirtualHost.new(name, service)
|
19
19
|
|
20
|
-
# All implementations of Host support the following attribute:
|
21
|
-
host.
|
22
|
-
host.
|
23
|
-
host.background_processor_delay =
|
24
|
-
host.class_name =
|
25
|
-
host.deploy_on_startup =
|
20
|
+
# All implementations of Host support the following attribute:
|
21
|
+
host.auto_deploy = options[:auto_deploy] if options.has_key?(:auto_deploy)
|
22
|
+
host.app_base = options[:app_base] if options.has_key?(:app_base)
|
23
|
+
host.background_processor_delay = options[:background_processor_delay] if options.has_key?(:background_processor_delay)
|
24
|
+
host.class_name = options[:class_name] if options.has_key?(:class_name)
|
25
|
+
host.deploy_on_startup = options[:deploy_on_startup] if options.has_key?(:deploy_on_startup)
|
26
26
|
# The standard implementation of Host is org.apache.catalina.core.StandardHost. It supports the following additional attributes:
|
27
|
-
host.unpack_wars =
|
27
|
+
host.unpack_wars = options[:unpack_wars] if options.has_key?(:unpack_wars)
|
28
28
|
|
29
|
+
host.add_context
|
29
30
|
# All implementations of Context support the following attributes:
|
30
|
-
host.path =
|
31
|
-
host.doc_base =
|
32
|
-
host.debug =
|
33
|
-
host.reloadable =
|
34
|
-
|
35
|
-
if
|
36
|
-
|
37
|
-
host.add_alias(al)
|
38
|
-
end
|
31
|
+
host.context.path = options[:path] || String.new
|
32
|
+
host.context.doc_base = options[:doc_base] || String.new
|
33
|
+
host.context.debug = options[:debug] if options.has_key?(:debug)
|
34
|
+
host.context.reloadable = options[:reloadable] if options.has_key?(:reloadable)
|
35
|
+
|
36
|
+
if options[:valves]
|
37
|
+
options[:valves].each { |valve| host.add_valve(valve) }
|
39
38
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
:pattern => "common"
|
46
|
-
|
39
|
+
|
40
|
+
if options[:aliases]
|
41
|
+
options[:aliases].each { |al| host.add_alias(al) }
|
42
|
+
end
|
43
|
+
|
47
44
|
engine_element = get_engine_element(service)
|
48
45
|
engine_element.add_element(host.to_rexml)
|
49
46
|
end
|
@@ -52,10 +49,6 @@ class TCCBuilder
|
|
52
49
|
@xml.delete_element("Service[@name='#{service}']/Engine/Host[@name='#{name}']")
|
53
50
|
end
|
54
51
|
|
55
|
-
def update_virtual_host(name, service, params)
|
56
|
-
host = @xml.elements["Server[@name='#{service}']/Engine/Host[@name='#{name}']"]
|
57
|
-
end
|
58
|
-
|
59
52
|
def virtual_host_exists?(name, service)
|
60
53
|
host = @xml.elements["Service[@name='#{service}']/Engine/Host[@name='#{name}']"]
|
61
54
|
host.nil? ? false : true
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class TCCBuilder
|
2
|
+
module XMLElements
|
3
|
+
autoload :Base, 'tccbuilder/xml_elements/base'
|
4
|
+
autoload :Context, 'tccbuilder/xml_elements/context'
|
5
|
+
autoload :Valve, 'tccbuilder/xml_elements/valve'
|
6
|
+
autoload :VirtualHost, 'tccbuilder/xml_elements/virtual_host'
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
|
3
|
+
class TCCBuilder
|
4
|
+
module XMLElements
|
5
|
+
class Base
|
6
|
+
attr_reader :attributes
|
7
|
+
|
8
|
+
def initialize(name, attributes = {})
|
9
|
+
@key_element = REXML::Element.new(name)
|
10
|
+
attributes.each do |k,v|
|
11
|
+
add_attribute(k, v)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def add_attribute(name, value)
|
16
|
+
@key_element.attributes[name.to_s.camel_case!] = value
|
17
|
+
end
|
18
|
+
|
19
|
+
def attributes
|
20
|
+
@key_element.attributes
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_attribute(name)
|
24
|
+
@key_element.attributes[name.to_s.camel_case!]
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_rexml
|
28
|
+
@key_element
|
29
|
+
end
|
30
|
+
|
31
|
+
def method_missing(method_sym, *args, &block)
|
32
|
+
method_str = method_sym.to_s
|
33
|
+
if method_str =~ /^(.+)\=$/
|
34
|
+
add_attribute($1, args.first)
|
35
|
+
elsif attrib = get_attribute(method_str)
|
36
|
+
attrib
|
37
|
+
else
|
38
|
+
super
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def respond_to?(method_sym, include_private = false)
|
43
|
+
method_str = method_sym.to_s
|
44
|
+
if method_str =~ /^(.+)\=$/
|
45
|
+
true
|
46
|
+
elsif get_attribute(method_str)
|
47
|
+
true
|
48
|
+
else
|
49
|
+
super
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class TCCBuilder
|
2
|
+
module XMLElements
|
3
|
+
class VirtualHost < Base
|
4
|
+
attr_reader :service
|
5
|
+
|
6
|
+
attr_reader :aliases
|
7
|
+
attr_reader :valves
|
8
|
+
attr_reader :context
|
9
|
+
|
10
|
+
def initialize(name, service, attributes = {})
|
11
|
+
super("Host", attributes)
|
12
|
+
@aliases = []
|
13
|
+
@valves = []
|
14
|
+
@context = nil
|
15
|
+
@service = service
|
16
|
+
self.name = name
|
17
|
+
end
|
18
|
+
|
19
|
+
def add_alias(text)
|
20
|
+
al = @key_element.add_element("Alias")
|
21
|
+
al.text = text
|
22
|
+
return al
|
23
|
+
end
|
24
|
+
|
25
|
+
def add_valve(class_name, options = {})
|
26
|
+
valve = Valve.new(class_name, options)
|
27
|
+
@key_element.add_element(valve.to_rexml)
|
28
|
+
@valves << valve
|
29
|
+
return valve
|
30
|
+
end
|
31
|
+
|
32
|
+
def add_context(options = {})
|
33
|
+
context = Context.new(options)
|
34
|
+
@key_element.add_element(context.to_rexml)
|
35
|
+
@context = context
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/tccbuilder.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{tccbuilder}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jamie Winsor"]
|
12
|
-
s.date = %q{2010-10
|
12
|
+
s.date = %q{2010-11-10}
|
13
13
|
s.default_executable = %q{tc6confbldr}
|
14
14
|
s.description = %q{Utilities to assist in configuring Tomcat via Ruby or the command line}
|
15
15
|
s.email = %q{resetexistence@gmail.com}
|
@@ -29,13 +29,20 @@ Gem::Specification.new do |s|
|
|
29
29
|
"lib/tccbuilder.rb",
|
30
30
|
"lib/tccbuilder/cmdlet.rb",
|
31
31
|
"lib/tccbuilder/errors.rb",
|
32
|
+
"lib/tccbuilder/ext/string.rb",
|
32
33
|
"lib/tccbuilder/options.rb",
|
33
34
|
"lib/tccbuilder/tomcat6.rb",
|
34
35
|
"lib/tccbuilder/tomcat6/server_xml.rb",
|
35
|
-
"lib/tccbuilder/
|
36
|
+
"lib/tccbuilder/xml_elements.rb",
|
37
|
+
"lib/tccbuilder/xml_elements/base.rb",
|
38
|
+
"lib/tccbuilder/xml_elements/context.rb",
|
39
|
+
"lib/tccbuilder/xml_elements/valve.rb",
|
40
|
+
"lib/tccbuilder/xml_elements/virtual_host.rb",
|
36
41
|
"tccbuilder.gemspec",
|
37
42
|
"test/helper.rb",
|
38
|
-
"test/
|
43
|
+
"test/test_string_ext.rb",
|
44
|
+
"test/test_tccbuilder.rb",
|
45
|
+
"test/test_virtual_host.rb"
|
39
46
|
]
|
40
47
|
s.homepage = %q{http://github.com/resetexistence/tccbuilder}
|
41
48
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -44,7 +51,9 @@ Gem::Specification.new do |s|
|
|
44
51
|
s.summary = %q{Utilities to assist in configuring Tomcat via Ruby or the command line}
|
45
52
|
s.test_files = [
|
46
53
|
"test/helper.rb",
|
47
|
-
"test/
|
54
|
+
"test/test_string_ext.rb",
|
55
|
+
"test/test_tccbuilder.rb",
|
56
|
+
"test/test_virtual_host.rb"
|
48
57
|
]
|
49
58
|
|
50
59
|
if s.respond_to? :specification_version then
|
data/test/helper.rb
CHANGED
@@ -3,7 +3,11 @@ require 'test/unit'
|
|
3
3
|
|
4
4
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
5
5
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
6
|
-
require '
|
6
|
+
require 'tccbuilder'
|
7
|
+
require 'ruby-debug'
|
7
8
|
|
8
9
|
class Test::Unit::TestCase
|
10
|
+
def new_sample_vhost
|
11
|
+
TCCBuilder::XMLElements::VirtualHost.new("example.com", "catalina", "web/apps")
|
12
|
+
end
|
9
13
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestTCCBuilder < Test::Unit::TestCase
|
4
|
+
require 'tccbuilder/ext/string'
|
5
|
+
|
6
|
+
def test_camel_case_one_word_should_not_modify
|
7
|
+
one_word = "jamie"
|
8
|
+
assert_equal "jamie", one_word.camel_case!
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_camel_case_two_words_should_modify
|
12
|
+
two_words = "jamie_winsor"
|
13
|
+
assert_equal "jamieWinsor", two_words.camel_case!
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestVirtualHost < Test::Unit::TestCase
|
4
|
+
require 'tccbuilder/tomcat6'
|
5
|
+
|
6
|
+
def test_attribute_auto_asignment
|
7
|
+
vhost_name = "example.com"
|
8
|
+
vhost = TCCBuilder::XMLElements::VirtualHost.new(vhost_name, "catalina", "web/apps")
|
9
|
+
assert_equal(vhost.name, vhost_name)
|
10
|
+
vhost.name = new_vhost_name = "example2.com"
|
11
|
+
assert_equal(vhost.name, new_vhost_name)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_setting_attributes_should_camel_case
|
15
|
+
vhost = new_sample_vhost
|
16
|
+
new_vhost_name = "sharkvers.us"
|
17
|
+
vhost.name = new_vhost_name
|
18
|
+
vhost.background_processor_delay = "true"
|
19
|
+
vhost.class_name = "org.apache.something"
|
20
|
+
assert vhost.attributes.has_key?('name')
|
21
|
+
assert vhost.attributes.has_key?('backgroundProcessorDelay')
|
22
|
+
assert vhost.attributes.has_key?('className')
|
23
|
+
assert !vhost.attributes.has_key?('background_processor_delay')
|
24
|
+
assert !vhost.attributes.has_key?('class_name')
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_getting_attributes_should_respond_to_non_camel_case
|
28
|
+
vhost = new_sample_vhost
|
29
|
+
vhost.name = new_vhost_name = "sharkvers.us"
|
30
|
+
vhost.background_processor_delay = background_processor_delay = "true"
|
31
|
+
vhost.class_name = class_name = "org.apache.something"
|
32
|
+
assert_equal vhost.name, "sharkvers.us"
|
33
|
+
assert_equal vhost.background_processor_delay, background_processor_delay
|
34
|
+
assert_equal vhost.class_name, class_name
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_adding_context
|
38
|
+
vhost = new_sample_vhost
|
39
|
+
assert_nil vhost.context
|
40
|
+
path = "/"
|
41
|
+
doc_base = "webapps/apps"
|
42
|
+
debug = "0"
|
43
|
+
reloadable = "true"
|
44
|
+
vhost.add_context :path => path,
|
45
|
+
:doc_base => doc_base,
|
46
|
+
:debug => debug,
|
47
|
+
:reloadable => reloadable
|
48
|
+
|
49
|
+
assert vhost.context
|
50
|
+
assert_equal vhost.context.path, path
|
51
|
+
assert_equal vhost.context.doc_base, doc_base
|
52
|
+
assert_equal vhost.context.debug, debug
|
53
|
+
assert_equal vhost.context.reloadable, reloadable
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_adding_valves
|
57
|
+
vhost = new_sample_vhost
|
58
|
+
assert_equal 0, vhost.valves.length
|
59
|
+
class_name = "org.apache.catalina.valves.AccessLogValve"
|
60
|
+
directory = "logs"
|
61
|
+
prefix = "access_log."
|
62
|
+
suffix = ".log"
|
63
|
+
pattern = "common"
|
64
|
+
vhost.add_valve class_name,
|
65
|
+
:directory => directory,
|
66
|
+
:prefix => prefix,
|
67
|
+
:suffix => suffix,
|
68
|
+
:pattern => pattern
|
69
|
+
assert_equal 1, vhost.valves.count
|
70
|
+
assert_equal vhost.valves.first.directory, directory
|
71
|
+
assert_equal vhost.valves.first.prefix, prefix
|
72
|
+
assert_equal vhost.valves.first.suffix, suffix
|
73
|
+
assert_equal vhost.valves.first.pattern, pattern
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_should_add_multiple_valves
|
77
|
+
vhost = new_sample_vhost
|
78
|
+
assert_equal 0, vhost.valves.length
|
79
|
+
vhost.add_valve "org.apache.catalina.valves.AccessLogValve",
|
80
|
+
:directory => "logs",
|
81
|
+
:prefix => "access_log.",
|
82
|
+
:suffix => ".log",
|
83
|
+
:pattern => "common"
|
84
|
+
vhost.add_valve "org.apache.catalina.valves.AccessLogValve",
|
85
|
+
:directory => "logs",
|
86
|
+
:prefix => "access_log.",
|
87
|
+
:suffix => ".log",
|
88
|
+
:pattern => "common"
|
89
|
+
assert_equal 2, vhost.valves.count
|
90
|
+
end
|
91
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tccbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 3
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jamie Winsor
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10
|
18
|
+
date: 2010-11-10 00:00:00 -08:00
|
19
19
|
default_executable: tc6confbldr
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -39,13 +39,20 @@ files:
|
|
39
39
|
- lib/tccbuilder.rb
|
40
40
|
- lib/tccbuilder/cmdlet.rb
|
41
41
|
- lib/tccbuilder/errors.rb
|
42
|
+
- lib/tccbuilder/ext/string.rb
|
42
43
|
- lib/tccbuilder/options.rb
|
43
44
|
- lib/tccbuilder/tomcat6.rb
|
44
45
|
- lib/tccbuilder/tomcat6/server_xml.rb
|
45
|
-
- lib/tccbuilder/
|
46
|
+
- lib/tccbuilder/xml_elements.rb
|
47
|
+
- lib/tccbuilder/xml_elements/base.rb
|
48
|
+
- lib/tccbuilder/xml_elements/context.rb
|
49
|
+
- lib/tccbuilder/xml_elements/valve.rb
|
50
|
+
- lib/tccbuilder/xml_elements/virtual_host.rb
|
46
51
|
- tccbuilder.gemspec
|
47
52
|
- test/helper.rb
|
53
|
+
- test/test_string_ext.rb
|
48
54
|
- test/test_tccbuilder.rb
|
55
|
+
- test/test_virtual_host.rb
|
49
56
|
has_rdoc: true
|
50
57
|
homepage: http://github.com/resetexistence/tccbuilder
|
51
58
|
licenses: []
|
@@ -82,4 +89,6 @@ specification_version: 3
|
|
82
89
|
summary: Utilities to assist in configuring Tomcat via Ruby or the command line
|
83
90
|
test_files:
|
84
91
|
- test/helper.rb
|
92
|
+
- test/test_string_ext.rb
|
85
93
|
- test/test_tccbuilder.rb
|
94
|
+
- test/test_virtual_host.rb
|
@@ -1,111 +0,0 @@
|
|
1
|
-
class TCCBuilder
|
2
|
-
module Tomcat6
|
3
|
-
class VirtualHost
|
4
|
-
attr_reader :service
|
5
|
-
|
6
|
-
attr_reader :app_base
|
7
|
-
attr_reader :auto_deploy
|
8
|
-
attr_reader :background_processor_delay
|
9
|
-
attr_reader :class_name
|
10
|
-
attr_reader :deploy_on_startup
|
11
|
-
attr_reader :name
|
12
|
-
attr_reader :unpack_wars
|
13
|
-
|
14
|
-
attr_reader :path
|
15
|
-
attr_reader :doc_base
|
16
|
-
attr_reader :debug
|
17
|
-
attr_reader :reloadable
|
18
|
-
|
19
|
-
attr_reader :aliases
|
20
|
-
|
21
|
-
def initialize(name, service)
|
22
|
-
@host_element = REXML::Element.new("Host")
|
23
|
-
@context_element = nil
|
24
|
-
@service = service
|
25
|
-
self.name = name
|
26
|
-
end
|
27
|
-
|
28
|
-
def app_base=(value)
|
29
|
-
add_host_attribute("appBase", value)
|
30
|
-
end
|
31
|
-
|
32
|
-
def auto_deploy=(value)
|
33
|
-
add_host_attribute("autoDeploy", value)
|
34
|
-
end
|
35
|
-
|
36
|
-
def background_processor_delay=(value)
|
37
|
-
add_host_attribute("backgroundProcessorDelay", value)
|
38
|
-
end
|
39
|
-
|
40
|
-
def class_name=(value)
|
41
|
-
add_host_attribute("className", value)
|
42
|
-
end
|
43
|
-
|
44
|
-
def deploy_on_startup=(value)
|
45
|
-
add_host_attribute("deployOnStartup", value)
|
46
|
-
end
|
47
|
-
|
48
|
-
def name
|
49
|
-
get_host_attribute("name")
|
50
|
-
end
|
51
|
-
|
52
|
-
def name=(value)
|
53
|
-
add_host_attribute("name", value)
|
54
|
-
end
|
55
|
-
|
56
|
-
def unpack_wars=(value)
|
57
|
-
add_host_attribute("unpackWars", value)
|
58
|
-
end
|
59
|
-
|
60
|
-
def path=(value)
|
61
|
-
add_context_attribute("path", value)
|
62
|
-
end
|
63
|
-
|
64
|
-
def doc_base=(value)
|
65
|
-
add_context_attribute("docBase", value)
|
66
|
-
end
|
67
|
-
|
68
|
-
def debug=(value)
|
69
|
-
add_context_attribute("debug", value)
|
70
|
-
end
|
71
|
-
|
72
|
-
def reloadable=(value)
|
73
|
-
add_context_attribute("reloadable", value)
|
74
|
-
end
|
75
|
-
|
76
|
-
def add_alias(text)
|
77
|
-
al = @host_element.add_element("Alias")
|
78
|
-
al.text = text
|
79
|
-
return al
|
80
|
-
end
|
81
|
-
|
82
|
-
def add_valve(class_name, options = {})
|
83
|
-
valve = @host_element.add_element("Valve")
|
84
|
-
valve.attributes["className"] = class_name
|
85
|
-
options.each do |key, value|
|
86
|
-
valve.attributes[key.to_s] = value
|
87
|
-
end
|
88
|
-
return valve
|
89
|
-
end
|
90
|
-
|
91
|
-
def to_rexml
|
92
|
-
@host_element
|
93
|
-
end
|
94
|
-
|
95
|
-
private
|
96
|
-
|
97
|
-
def add_host_attribute(name, value)
|
98
|
-
@host_element.attributes[name] = value
|
99
|
-
end
|
100
|
-
|
101
|
-
def get_host_attribute(name)
|
102
|
-
@host_element.attributes[name]
|
103
|
-
end
|
104
|
-
|
105
|
-
def add_context_attribute(name, value)
|
106
|
-
@context_element = @host_element.add_element("Context") if @context_element.nil?
|
107
|
-
@context_element.attributes[name] = value
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|