reality-generators 1.3.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/reality/generators.rb +2 -0
- data/lib/reality/generators/buildr_integration.rb +69 -67
- data/lib/reality/generators/generator.rb +19 -18
- data/lib/reality/generators/standard_artifact_dsl.rb +121 -0
- data/lib/reality/generators/standard_template_set.rb +29 -0
- data/lib/reality/generators/target_manager.rb +3 -3
- data/lib/reality/generators/template.rb +1 -1
- data/lib/reality/generators/template_set.rb +1 -1
- data/lib/reality/generators/template_set_container.rb +16 -3
- data/reality-generators.gemspec +3 -3
- data/test/generators/jpa/model.rb +63 -0
- data/test/generators/{templates → jpa/templates}/mytemplate.java.erb +0 -0
- data/test/generators/{templates/rubytemplate.rb → jpa/templates/rubytemplate.java.rb} +0 -0
- data/test/generators/test_erb_template.rb +1 -1
- data/test/generators/test_generator.rb +12 -13
- data/test/generators/test_ruby_template.rb +2 -2
- data/test/generators/test_standard_artifact_dsl.rb +216 -0
- data/test/generators/test_standard_template_set.rb +24 -0
- data/test/generators/test_target_manager.rb +3 -3
- data/test/generators/test_template.rb +11 -7
- data/test/generators/test_template_set.rb +6 -7
- data/test/generators/test_template_set_container.rb +3 -3
- data/test/helper.rb +14 -10
- metadata +13 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd884c4080b180702c66c240bc3782989c7e0533
|
4
|
+
data.tar.gz: 80120fc316eb2ab3136c5be04e4f7f359afac81d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 749439d7af5d2316f8b22960c893a5b277ca074031e8c915e4dbfe7f5d18c2d99600dcaeee9344d5a5ba2a2d7d3c7d9d6c70b6ace3c59d0aefbc1765befded8c
|
7
|
+
data.tar.gz: 675da30cf2daa432a2e66cde10fb35a407ee7753eb9e2e0f92a32c96c7b863723ad312257df618cc6567c020829b35d7a1e49e45c00b985223efd6e4a46f0fd5
|
data/lib/reality/generators.rb
CHANGED
@@ -27,5 +27,7 @@ require 'reality/generators/erb_template'
|
|
27
27
|
require 'reality/generators/template_set'
|
28
28
|
require 'reality/generators/template_set_container'
|
29
29
|
require 'reality/generators/generator'
|
30
|
+
require 'reality/generators/standard_template_set'
|
31
|
+
require 'reality/generators/standard_artifact_dsl'
|
30
32
|
|
31
33
|
require 'reality/generators/buildr_integration'
|
@@ -14,87 +14,89 @@
|
|
14
14
|
|
15
15
|
module Reality #nodoc
|
16
16
|
module Generators #nodoc
|
17
|
-
module
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
else
|
27
|
-
buildr_project.clean { rm_rf target_dir }
|
28
|
-
file(File.expand_path(target_dir) => [generator_task])
|
29
|
-
|
30
|
-
# Is there java source generated in project?
|
31
|
-
if templates.any? { |template| template.output_path =~ /^main\/java\/.*/ }
|
32
|
-
main_java_dir = "#{target_dir}/main/java"
|
33
|
-
file(main_java_dir => [generator_task]) do
|
34
|
-
mkdir_p main_java_dir
|
17
|
+
module Buildr
|
18
|
+
class << self
|
19
|
+
# This method is called from a Rake or Buildr task to configure the Buildr
|
20
|
+
# project so that it knows the location of all the generated artifacts and
|
21
|
+
# adds them to the appropriate compile paths etc.
|
22
|
+
def configure_buildr_project(buildr_project, generator_task, templates, target_dir)
|
23
|
+
if buildr_project.nil?
|
24
|
+
task('clean') do
|
25
|
+
rm_rf target_dir
|
35
26
|
end
|
36
|
-
|
37
|
-
buildr_project.
|
38
|
-
|
39
|
-
buildr_project.iml.main_generated_source_directories << main_java_dir if buildr_project.iml?
|
40
|
-
end
|
27
|
+
else
|
28
|
+
buildr_project.clean { rm_rf target_dir }
|
29
|
+
file(File.expand_path(target_dir) => [generator_task])
|
41
30
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
31
|
+
# Is there java source generated in project?
|
32
|
+
if templates.any? { |template| template.output_path =~ /^main\/java\/.*/ }
|
33
|
+
main_java_dir = "#{target_dir}/main/java"
|
34
|
+
file(main_java_dir => [generator_task]) do
|
35
|
+
mkdir_p main_java_dir
|
36
|
+
end
|
37
|
+
buildr_project.compile.using :javac
|
38
|
+
buildr_project.compile.from main_java_dir
|
39
|
+
# Need to force this as it may have already been cached and thus will not recalculate
|
40
|
+
buildr_project.iml.main_generated_source_directories << main_java_dir if buildr_project.iml?
|
47
41
|
end
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
42
|
+
|
43
|
+
# Is there resources generated in project?
|
44
|
+
if templates.any? { |template| template.output_path =~ /^main\/resources\/.*/ }
|
45
|
+
main_resources_dir = "#{target_dir}/main/resources"
|
46
|
+
file(main_resources_dir => [generator_task]) do
|
47
|
+
mkdir_p main_resources_dir
|
48
|
+
end
|
49
|
+
buildr_project.resources.enhance([generator_task])
|
50
|
+
buildr_project.resources.filter.into buildr_project.path_to(:target, :main, :resources) unless buildr_project.resources.target
|
51
|
+
buildr_project.resources do |t|
|
52
|
+
t.enhance do
|
53
|
+
if File.exist?(main_resources_dir)
|
54
|
+
FileUtils.mkdir_p buildr_project.resources.target.to_s
|
55
|
+
FileUtils.cp_r "#{main_resources_dir}/.", buildr_project.resources.target.to_s
|
56
|
+
end
|
55
57
|
end
|
56
58
|
end
|
59
|
+
buildr_project.iml.main_generated_resource_directories << main_resources_dir if buildr_project.iml?
|
57
60
|
end
|
58
|
-
buildr_project.iml.main_generated_resource_directories << main_resources_dir if buildr_project.iml?
|
59
|
-
end
|
60
61
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
62
|
+
# Is there assets generated in project?
|
63
|
+
if templates.any? { |template| template.output_path =~ /^main\/webapp\/.*/ }
|
64
|
+
webapp_dir = File.expand_path("#{target_dir}/main/webapp")
|
65
|
+
buildr_project.assets.enhance([generator_task])
|
66
|
+
buildr_project.assets.paths << file(webapp_dir => [generator_task]) do
|
67
|
+
mkdir_p webapp_dir
|
68
|
+
end
|
67
69
|
end
|
68
|
-
end
|
69
70
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
71
|
+
# Is there test java source generated in project?
|
72
|
+
if templates.any? { |template| template.output_path =~ /^test\/java\/.*/ }
|
73
|
+
test_java_dir = "#{target_dir}/test/java"
|
74
|
+
file(test_java_dir => [generator_task]) do
|
75
|
+
mkdir_p test_java_dir
|
76
|
+
end
|
77
|
+
buildr_project.test.compile.from test_java_dir
|
78
|
+
# Need to force this as it may have already been cached and thus will not recalculate
|
79
|
+
buildr_project.iml.test_generated_source_directories << test_java_dir if buildr_project.iml?
|
75
80
|
end
|
76
|
-
buildr_project.test.compile.from test_java_dir
|
77
|
-
# Need to force this as it may have already been cached and thus will not recalculate
|
78
|
-
buildr_project.iml.test_generated_source_directories << test_java_dir if buildr_project.iml?
|
79
|
-
end
|
80
81
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
82
|
+
# Is there resources generated in project?
|
83
|
+
if templates.any? { |template| template.output_path =~ /^test\/resources\/.*/ }
|
84
|
+
test_resources_dir = "#{target_dir}/test/resources"
|
85
|
+
file(test_resources_dir => [generator_task]) do
|
86
|
+
mkdir_p test_resources_dir
|
87
|
+
end
|
88
|
+
buildr_project.test.resources.enhance([generator_task])
|
89
|
+
buildr_project.test.resources.filter.into buildr_project.path_to(:target, :test, :resources) unless buildr_project.test.resources.target
|
90
|
+
buildr_project.test.resources do |t|
|
91
|
+
t.enhance do
|
92
|
+
if File.exist?(test_resources_dir)
|
93
|
+
FileUtils.mkdir_p buildr_project.test.resources.target.to_s
|
94
|
+
FileUtils.cp_r "#{test_resources_dir}/.", buildr_project.test.resources.target.to_s
|
95
|
+
end
|
94
96
|
end
|
95
97
|
end
|
98
|
+
buildr_project.iml.test_generated_resource_directories << test_resources_dir if buildr_project.iml?
|
96
99
|
end
|
97
|
-
buildr_project.iml.test_generated_resource_directories << test_resources_dir if buildr_project.iml?
|
98
100
|
end
|
99
101
|
end
|
100
102
|
end
|
@@ -14,11 +14,18 @@
|
|
14
14
|
|
15
15
|
module Reality #nodoc
|
16
16
|
module Generators #nodoc
|
17
|
-
|
17
|
+
class Generator
|
18
|
+
|
19
|
+
def initialize(template_set_container)
|
20
|
+
@template_set_container = template_set_container
|
21
|
+
end
|
22
|
+
|
23
|
+
attr_reader :template_set_container
|
24
|
+
|
18
25
|
# Return a list of templates loaded from specified template_set_keys
|
19
|
-
def load_templates_from_template_sets(
|
26
|
+
def load_templates_from_template_sets(template_set_keys)
|
20
27
|
template_map = {}
|
21
|
-
load_templates(
|
28
|
+
load_templates(template_map, template_set_keys, [])
|
22
29
|
template_map.values
|
23
30
|
end
|
24
31
|
|
@@ -29,13 +36,13 @@ module Reality #nodoc
|
|
29
36
|
# The traversal starts from a root element of specified element_type and
|
30
37
|
# traverses all elements that are contained transitively by the root element.
|
31
38
|
# The templates then generate files from traversed elements.
|
32
|
-
def generate(
|
39
|
+
def generate(element_type, element, directory, templates, filter)
|
33
40
|
unprocessed_files = (Dir["#{directory}/**/*.*"] + Dir["#{directory}/**/*"]).uniq
|
34
41
|
|
35
42
|
Generators.debug "Templates to process: #{templates.collect { |t| t.name }.inspect}"
|
36
43
|
|
37
44
|
targets = {}
|
38
|
-
collect_generation_targets(
|
45
|
+
collect_generation_targets(element_type, element, element, targets)
|
39
46
|
|
40
47
|
templates.each do |template|
|
41
48
|
Generators.debug "Evaluating template: #{template.name}"
|
@@ -66,12 +73,12 @@ module Reality #nodoc
|
|
66
73
|
|
67
74
|
private
|
68
75
|
|
69
|
-
def load_templates(
|
76
|
+
def load_templates(template_map, template_set_keys, processed_template_sets)
|
70
77
|
template_set_keys.each do |template_set_key|
|
71
78
|
next if processed_template_sets.include?(template_set_key)
|
72
|
-
template_set = template_set_container.template_set_by_name(template_set_key)
|
79
|
+
template_set = self.template_set_container.template_set_by_name(template_set_key)
|
73
80
|
processed_template_sets << template_set_key
|
74
|
-
load_templates(
|
81
|
+
load_templates(template_map, template_set.required_template_sets, processed_template_sets)
|
75
82
|
template_set.templates.each do |template|
|
76
83
|
template_map[template.name] = template
|
77
84
|
end
|
@@ -92,11 +99,11 @@ module Reality #nodoc
|
|
92
99
|
# ...
|
93
100
|
# }
|
94
101
|
#
|
95
|
-
def collect_generation_targets(
|
102
|
+
def collect_generation_targets(element_type, scope_element, element, targets)
|
96
103
|
(targets[element_type] ||= []) << [scope_element, element]
|
97
104
|
|
98
|
-
template_set_container.target_manager.targets_by_container(element_type).each do |target|
|
99
|
-
next unless handle_subelement?(element, target.key)
|
105
|
+
self.template_set_container.target_manager.targets_by_container(element_type).each do |target|
|
106
|
+
next unless self.template_set_container.handle_subelement?(element, target.key)
|
100
107
|
subelements = nil
|
101
108
|
subscope = nil
|
102
109
|
if target.standard?
|
@@ -110,16 +117,10 @@ module Reality #nodoc
|
|
110
117
|
subelements = [subelements] unless subelements.is_a?(Array)
|
111
118
|
|
112
119
|
subelements.each do |subelement|
|
113
|
-
collect_generation_targets(
|
120
|
+
collect_generation_targets(target.qualified_key, subscope || subelement, subelement, targets)
|
114
121
|
end
|
115
122
|
end
|
116
123
|
end
|
117
|
-
|
118
|
-
# A hook to control whether certain paths in model should
|
119
|
-
# be follow when collecting generation targets
|
120
|
-
def handle_subelement?(object, sub_feature_key)
|
121
|
-
true
|
122
|
-
end
|
123
124
|
end
|
124
125
|
end
|
125
126
|
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
#
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
3
|
+
# you may not use this file except in compliance with the License.
|
4
|
+
# You may obtain a copy of the License at
|
5
|
+
#
|
6
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
10
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
11
|
+
# See the License for the specific language governing permissions and
|
12
|
+
# limitations under the License.
|
13
|
+
#
|
14
|
+
|
15
|
+
module Reality #nodoc
|
16
|
+
module Generators #nodoc
|
17
|
+
|
18
|
+
# This module is typically included into the facet extension objects. It
|
19
|
+
# simplifies the definition of templates from the facet extension objects.
|
20
|
+
#
|
21
|
+
# Note: The framework needs to supply a method template_set_container
|
22
|
+
#
|
23
|
+
# The module assumes that facets are defined using a specific convention.
|
24
|
+
# Namely that by convention facets are defined in a file named `.../<myfacet>/model.rb`
|
25
|
+
# and templates are defined in a file named `.../<myfacet>/templates/<templatekey>.<output_extension>.<template_extension>`
|
26
|
+
# When attempting to derive default values for configuration it will be derived using these conventions.
|
27
|
+
#
|
28
|
+
module ArtifactDSL
|
29
|
+
|
30
|
+
#
|
31
|
+
# Define a java artifact. This is a wrapper around the artifact() method
|
32
|
+
# that makes additional assumptions for java based artifacts. This method
|
33
|
+
# assumes a maven-style file system layout (i.e. java is stored in main/java or test/java).
|
34
|
+
# It also assumes that the facet has the fully qualified name of the artifact in a method
|
35
|
+
# named with the convention "qualified_<artifact_key>_name"
|
36
|
+
#
|
37
|
+
# The options supported include those supplied to the artifact method plus:
|
38
|
+
# * :artifact_category - The option must be one of :main or :test and determines which source hierarchy the code is added to.
|
39
|
+
#
|
40
|
+
def java_artifact(template_set_suffix, artifact_key, options = {})
|
41
|
+
options = options.dup
|
42
|
+
artifact_category = options.delete(:artifact_category) || :main
|
43
|
+
Reality::Generators.error("artifact_category '#{artifact_category}' is not a known type") unless [:main, :test].include?(artifact_category)
|
44
|
+
filename_pattern = "#{artifact_category}/java/\#{#{self.target_key}.#{self.facet_key}.qualified_#{artifact_key}_name.gsub(\".\",\"/\")}.java"
|
45
|
+
artifact(template_set_suffix, artifact_key, filename_pattern, options)
|
46
|
+
end
|
47
|
+
|
48
|
+
#
|
49
|
+
# Define an artifact and attach it to template_set.
|
50
|
+
# This assumes that the the template is named with the convention "<facet_templates_directory>/<artifact_key>.<file_extension>"
|
51
|
+
# with the file extension derived from the supplied filename pattern.
|
52
|
+
#
|
53
|
+
# The template set is prefixed with the name of the facet from which this is extended.
|
54
|
+
#
|
55
|
+
# The options supported include:
|
56
|
+
# * :facets - additional facets that must be enabled for the facet to be generated.
|
57
|
+
# * :helpers - additional helpers that are added to the default helpers.
|
58
|
+
# * :guard - The :guard option passed to the template.
|
59
|
+
#
|
60
|
+
def artifact(template_set_suffix, artifact_key, filename_pattern, options = {})
|
61
|
+
Reality::Options.check(options, [:facets, :guard, :helpers], Reality::Generators, 'define artifact')
|
62
|
+
|
63
|
+
facets = [self.facet_key] + (options[:facets].nil? ? [] : options[:facets])
|
64
|
+
|
65
|
+
guard = options[:guard]
|
66
|
+
|
67
|
+
artifact_type = self.target_key
|
68
|
+
|
69
|
+
template_set_key = :"#{self.facet_key}_#{template_set_suffix}"
|
70
|
+
|
71
|
+
file_extension = File.extname(filename_pattern)[1...9999]
|
72
|
+
|
73
|
+
template_set = template_set_container.template_set_by_name?(template_set_key) ?
|
74
|
+
template_set_container.template_set_by_name(template_set_key) :
|
75
|
+
template_set_container.template_set(template_set_key)
|
76
|
+
|
77
|
+
base_template_filename = "#{facet_templates_directory}/#{artifact_key}.#{file_extension}"
|
78
|
+
template_extension = File.exist?("#{base_template_filename}.erb") ? 'erb' : 'rb'
|
79
|
+
template_filename = "#{base_template_filename}.#{template_extension}"
|
80
|
+
|
81
|
+
|
82
|
+
helpers = template_set_container.derive_default_helpers(options.merge(:file_type => file_extension, :artifact_type => artifact_type, :facet_key => self.facet_key)) +
|
83
|
+
(options[:helpers].nil? ? [] : options[:helpers])
|
84
|
+
|
85
|
+
if 'erb' == template_extension
|
86
|
+
template_set.erb_template(facets,
|
87
|
+
artifact_type,
|
88
|
+
template_filename,
|
89
|
+
filename_pattern,
|
90
|
+
helpers,
|
91
|
+
:guard => guard)
|
92
|
+
else
|
93
|
+
template_set.ruby_template(facets,
|
94
|
+
artifact_type,
|
95
|
+
template_filename,
|
96
|
+
filename_pattern,
|
97
|
+
helpers,
|
98
|
+
:guard => guard)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def facet_templates_directory
|
103
|
+
@facet_templates_directory ||= "#{facet_directory}/templates"
|
104
|
+
end
|
105
|
+
|
106
|
+
def facet_directory
|
107
|
+
@facet_directory ||= nil
|
108
|
+
if @facet_directory.nil?
|
109
|
+
caller_locations.each do |location|
|
110
|
+
if location.absolute_path =~ /.*\/#{self.facet_key}\/model\.rb$/
|
111
|
+
@facet_directory = File.dirname(location.absolute_path)
|
112
|
+
break
|
113
|
+
end
|
114
|
+
end
|
115
|
+
Reality::Generators.error("Unable to locate facet_directory for facet #{self.facet_key}. Caller trace: #{caller_locations.collect{|c|c.absolute_path}.inspect}") if @facet_directory.nil?
|
116
|
+
end
|
117
|
+
@facet_directory
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
3
|
+
# you may not use this file except in compliance with the License.
|
4
|
+
# You may obtain a copy of the License at
|
5
|
+
#
|
6
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
10
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
11
|
+
# See the License for the specific language governing permissions and
|
12
|
+
# limitations under the License.
|
13
|
+
#
|
14
|
+
|
15
|
+
module Reality #nodoc
|
16
|
+
module Generators #nodoc
|
17
|
+
|
18
|
+
# A standard template set that simple methods for creating templates using included template types
|
19
|
+
class StandardTemplateSet < TemplateSet
|
20
|
+
def erb_template(facets, target, template_filename, output_filename_pattern, helpers = [], options = {})
|
21
|
+
Reality::Generators::ErbTemplate.new(self, facets, target.to_sym, template_filename, output_filename_pattern, helpers, options)
|
22
|
+
end
|
23
|
+
|
24
|
+
def ruby_template(facets, target, template_filename, output_filename_pattern, helpers = [], options = {})
|
25
|
+
Reality::Generators::RubyTemplate.new(self, facets, target.to_sym, template_filename, output_filename_pattern, helpers, options)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -26,7 +26,7 @@ module Reality #nodoc
|
|
26
26
|
@container_key = container_key.nil? ? nil : container_key.to_sym
|
27
27
|
|
28
28
|
if @container_key && !target_manager.target_by_key?(@container_key)
|
29
|
-
|
29
|
+
Reality::Generators.error("Target '#{key}' defines container as '#{@container_key}' but no such target exists.")
|
30
30
|
end
|
31
31
|
|
32
32
|
@target_manager.send(:register_target, self)
|
@@ -69,7 +69,7 @@ module Reality #nodoc
|
|
69
69
|
|
70
70
|
def target_by_key(key)
|
71
71
|
target = target_map[key.to_sym]
|
72
|
-
|
72
|
+
Reality::Generators.error("Can not find target with key '#{key}'") unless target
|
73
73
|
target
|
74
74
|
end
|
75
75
|
|
@@ -88,7 +88,7 @@ module Reality #nodoc
|
|
88
88
|
private
|
89
89
|
|
90
90
|
def register_target(target)
|
91
|
-
|
91
|
+
Reality::Generators.error("Attempting to redefine target #{target.qualified_key}") if target_map[target.qualified_key]
|
92
92
|
target_map[target.qualified_key] = target
|
93
93
|
end
|
94
94
|
|
@@ -71,7 +71,7 @@ module Reality #nodoc
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def name
|
74
|
-
@name ||= "#{self.template_set.name}:#{self.template_key.gsub(
|
74
|
+
@name ||= "#{self.template_set.name}:#{self.template_key.gsub(/^(.*\/)?templates\/(.*)\.#{template_extension}$/, '\2')}"
|
75
75
|
end
|
76
76
|
|
77
77
|
protected
|
@@ -29,7 +29,7 @@ module Reality #nodoc
|
|
29
29
|
super(options, &block)
|
30
30
|
self.required_template_sets.each do |template_set_name|
|
31
31
|
unless container.template_set_by_name?(template_set_name)
|
32
|
-
|
32
|
+
Reality::Generators.error("TemplateSet '#{self.name}' defined requirement on template set '#{template_set_name}' that does not exist.")
|
33
33
|
end
|
34
34
|
end
|
35
35
|
container.send(:register_template_set, self)
|
@@ -45,18 +45,31 @@ module Reality #nodoc
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def generator
|
48
|
-
@generator ||=
|
48
|
+
@generator ||= Reality::Generators::Generator.new(self)
|
49
|
+
end
|
50
|
+
|
51
|
+
# A hook to control whether certain paths in model should
|
52
|
+
# be follow when collecting generation targets
|
53
|
+
def handle_subelement?(object, sub_feature_key)
|
54
|
+
true
|
55
|
+
end
|
56
|
+
|
57
|
+
# Hook for deriving the default set of helpers when defining
|
58
|
+
# templates using the artifact DSL. Typically this is overridden
|
59
|
+
# in framework specific template set containers
|
60
|
+
def derive_default_helpers(options)
|
61
|
+
[]
|
49
62
|
end
|
50
63
|
|
51
64
|
protected
|
52
65
|
|
53
66
|
def register_template_set(template_set)
|
54
|
-
|
67
|
+
Reality::Generators.error("Attempting to redefine template_set #{template_set.name}") if template_set_map[template_set.name.to_s]
|
55
68
|
template_set_map[template_set.name.to_s] = template_set
|
56
69
|
end
|
57
70
|
|
58
71
|
def new_template_set(name, options, &block)
|
59
|
-
Generators.
|
72
|
+
Reality::Generators::StandardTemplateSet.new(self, name.to_s, options, &block)
|
60
73
|
end
|
61
74
|
|
62
75
|
def new_generator
|
data/reality-generators.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{reality-generators}
|
5
|
-
s.version = '1.
|
5
|
+
s.version = '1.5.0'
|
6
6
|
s.platform = Gem::Platform::RUBY
|
7
7
|
|
8
8
|
s.authors = ['Peter Donald']
|
@@ -21,8 +21,8 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.has_rdoc = false
|
22
22
|
s.rdoc_options = %w(--line-numbers --inline-source --title reality-generators)
|
23
23
|
|
24
|
-
s.add_dependency 'reality-core', '>= 1.
|
25
|
-
s.add_dependency 'reality-naming', '>= 1.
|
24
|
+
s.add_dependency 'reality-core', '>= 1.7.0'
|
25
|
+
s.add_dependency 'reality-naming', '>= 1.6.0'
|
26
26
|
s.add_dependency 'reality-orderedhash', '>= 1.0.0'
|
27
27
|
|
28
28
|
s.add_development_dependency(%q<minitest>, ['= 5.9.1'])
|
@@ -0,0 +1,63 @@
|
|
1
|
+
class TestFacetExtension
|
2
|
+
module MyHelperModule
|
3
|
+
end
|
4
|
+
|
5
|
+
class << self
|
6
|
+
include Reality::Generators::ArtifactDSL
|
7
|
+
|
8
|
+
def template_set_container
|
9
|
+
Reality::TestCase::TestTemplateSetContainer
|
10
|
+
end
|
11
|
+
|
12
|
+
def target_key
|
13
|
+
:entity
|
14
|
+
end
|
15
|
+
|
16
|
+
def facet_key
|
17
|
+
:jpa
|
18
|
+
end
|
19
|
+
|
20
|
+
def define_artifacts1
|
21
|
+
artifact(:models, :mytemplate, 'main/java/#{entity.qualified_name}.java')
|
22
|
+
end
|
23
|
+
|
24
|
+
def define_artifacts2
|
25
|
+
artifact(:models, :rubytemplate, 'main/java/#{entity.qualified_name}.java')
|
26
|
+
end
|
27
|
+
|
28
|
+
def define_artifacts3
|
29
|
+
artifact(:models,
|
30
|
+
:mytemplate,
|
31
|
+
'main/java/#{entity.qualified_name}.java',
|
32
|
+
:facets => [:ee],
|
33
|
+
:helpers => [MyHelperModule],
|
34
|
+
:guard => 'entity.jpa.good?')
|
35
|
+
end
|
36
|
+
|
37
|
+
def define_artifacts4
|
38
|
+
artifact(:models, :mytemplate, 'main/java/#{entity.qualified_name}.java')
|
39
|
+
end
|
40
|
+
|
41
|
+
def define_artifacts5
|
42
|
+
artifact(:models, :mytemplate, 'main/java/#{entity.qualified_name}.java')
|
43
|
+
artifact(:qa_models, :mytemplate, 'test/java/#{entity.qualified_name}.java')
|
44
|
+
artifact(:qa_models, :rubytemplate, 'main/java/#{entity.qualified_name}.java')
|
45
|
+
end
|
46
|
+
|
47
|
+
def define_artifacts6
|
48
|
+
artifact(:models, :mytemplate, 'main/java/#{entity.qualified_name}.java', :bad_option => true)
|
49
|
+
end
|
50
|
+
|
51
|
+
def define_artifacts7
|
52
|
+
java_artifact(:models, :mytemplate)
|
53
|
+
end
|
54
|
+
|
55
|
+
def define_artifacts8
|
56
|
+
java_artifact(:models, :mytemplate, :artifact_category => :test)
|
57
|
+
end
|
58
|
+
|
59
|
+
def define_artifacts9
|
60
|
+
java_artifact(:models, :mytemplate, :artifact_category => :main)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
File without changes
|
File without changes
|
@@ -16,7 +16,7 @@ class Reality::Generators::TestErbTemplate < Reality::TestCase
|
|
16
16
|
template_set = Reality::Generators::TemplateSet.new(TestTemplateSetContainer, 'foo')
|
17
17
|
|
18
18
|
output_filename_pattern = 'main/java/#{component.name}.java'
|
19
|
-
template_filename = File.expand_path(File.dirname(__FILE__) + '/templates/mytemplate.java.erb')
|
19
|
+
template_filename = File.expand_path(File.dirname(__FILE__) + '/jpa/templates/mytemplate.java.erb')
|
20
20
|
TestTemplateSetContainer.target_manager.target(:component)
|
21
21
|
|
22
22
|
template1 = Reality::Generators::ErbTemplate.new(template_set, [], :component, template_filename, output_filename_pattern, [], {})
|
@@ -59,11 +59,11 @@ class Reality::Generators::TestGenerator < Reality::TestCase
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def facet_enabled?(facet)
|
62
|
-
facet == :jpa ?
|
62
|
+
facet == :jpa ? !!self.jpa : false
|
63
63
|
end
|
64
64
|
|
65
65
|
def jpa
|
66
|
-
@jpa
|
66
|
+
@jpa ||= nil
|
67
67
|
end
|
68
68
|
|
69
69
|
def enable_jpa!
|
@@ -90,7 +90,7 @@ class Reality::Generators::TestGenerator < Reality::TestCase
|
|
90
90
|
TestTemplateSetContainer.target_manager.target(:unit, :repository, :facet_key => :jpa)
|
91
91
|
|
92
92
|
targets = {}
|
93
|
-
TestTemplateSetContainer.generator.send(:collect_generation_targets,
|
93
|
+
TestTemplateSetContainer.generator.send(:collect_generation_targets, :repository, repository, repository, targets)
|
94
94
|
|
95
95
|
assert_equal true, targets.include?(:repository)
|
96
96
|
assert_equal true, targets.include?(:entity)
|
@@ -119,7 +119,7 @@ class Reality::Generators::TestGenerator < Reality::TestCase
|
|
119
119
|
repository.enable_jpa!
|
120
120
|
|
121
121
|
targets = {}
|
122
|
-
TestTemplateSetContainer.generator.send(:collect_generation_targets,
|
122
|
+
TestTemplateSetContainer.generator.send(:collect_generation_targets, :repository, repository, repository, targets)
|
123
123
|
|
124
124
|
# No units have been defined so no extra targets
|
125
125
|
assert_equal 3, targets.size
|
@@ -128,7 +128,7 @@ class Reality::Generators::TestGenerator < Reality::TestCase
|
|
128
128
|
repository.jpa.unit(:MyUnit2)
|
129
129
|
|
130
130
|
targets = {}
|
131
|
-
TestTemplateSetContainer.generator.send(:collect_generation_targets,
|
131
|
+
TestTemplateSetContainer.generator.send(:collect_generation_targets, :repository, repository, repository, targets)
|
132
132
|
|
133
133
|
assert_equal true, targets.include?(:repository)
|
134
134
|
assert_equal true, targets.include?(:entity)
|
@@ -189,12 +189,12 @@ class Reality::Generators::TestGenerator < Reality::TestCase
|
|
189
189
|
TestTemplateSetContainer.target_manager.target(:attribute, :entity)
|
190
190
|
TestTemplateSetContainer.target_manager.target(:unit, :repository, :facet_key => :jpa)
|
191
191
|
|
192
|
-
template_set = TestTemplateSetContainer.template_set(:test) do |
|
193
|
-
RepositoryTemplate.new(
|
192
|
+
template_set = TestTemplateSetContainer.template_set(:test) do |t|
|
193
|
+
RepositoryTemplate.new(t, [], :repository, 'repository.java', 'main/java/#{repository.name}.java')
|
194
194
|
|
195
|
-
EntityTemplate.new(
|
196
|
-
AttributeTemplate.new(
|
197
|
-
UnitTemplate.new(
|
195
|
+
EntityTemplate.new(t, [], :entity, 'entity.java', 'main/java/#{entity.qualified_name.gsub(".","/")}.java', [], :guard => 'entity.qualified_name == "MyRepo.MyEntityB"')
|
196
|
+
AttributeTemplate.new(t, [], :attribute, 'attribute.java', 'main/java/#{attribute.qualified_name.gsub(".","/")}.java')
|
197
|
+
UnitTemplate.new(t, [], :'jpa.unit', 'unit.java', 'main/java/units/#{unit.name.gsub(".","/")}.java', [], {})
|
198
198
|
end
|
199
199
|
|
200
200
|
target_directory = "#{temp_dir}/generated/erb_template"
|
@@ -211,7 +211,7 @@ class Reality::Generators::TestGenerator < Reality::TestCase
|
|
211
211
|
|
212
212
|
filter = Proc.new { |artifact_type, artifact| artifact_type != :attribute || %w(MyAttr1 MyAttr2).include?(artifact.name.to_s) }
|
213
213
|
TestTemplateSetContainer.generator.
|
214
|
-
generate(
|
214
|
+
generate(:repository, repository, target_directory, template_set.templates, filter)
|
215
215
|
|
216
216
|
assert_equal false, File.directory?("#{target_directory}/some")
|
217
217
|
assert_equal false, File.exist?("#{target_directory}/main/java/Touched.java")
|
@@ -269,8 +269,7 @@ class Reality::Generators::TestGenerator < Reality::TestCase
|
|
269
269
|
end
|
270
270
|
|
271
271
|
template_set_keys = [:template_set_1, :template_set_4]
|
272
|
-
templates = TestTemplateSetContainer.generator.
|
273
|
-
load_templates_from_template_sets(TestTemplateSetContainer, template_set_keys)
|
272
|
+
templates = TestTemplateSetContainer.generator.load_templates_from_template_sets(template_set_keys)
|
274
273
|
|
275
274
|
assert_equal 6, templates.size
|
276
275
|
assert_equal %w(template_set_1:attribute.java template_set_1:entity.java template_set_1:repository1.java template_set_1:unit.java template_set_4:attribute4.java template_set_4:repository4.java),
|
@@ -16,7 +16,7 @@ class Reality::Generators::TestRubyTemplate < Reality::TestCase
|
|
16
16
|
template_set = Reality::Generators::TemplateSet.new(TestTemplateSetContainer, 'foo')
|
17
17
|
|
18
18
|
output_filename_pattern = 'main/java/#{component.name}.java'
|
19
|
-
template_filename = File.expand_path(File.dirname(__FILE__) + '/templates/rubytemplate.rb')
|
19
|
+
template_filename = File.expand_path(File.dirname(__FILE__) + '/jpa/templates/rubytemplate.java.rb')
|
20
20
|
TestTemplateSetContainer.target_manager.target(:component)
|
21
21
|
|
22
22
|
template1 = Reality::Generators::RubyTemplate.new(template_set, [], :component, template_filename, output_filename_pattern, [], {})
|
@@ -30,7 +30,7 @@ class Reality::Generators::TestRubyTemplate < Reality::TestCase
|
|
30
30
|
assert_equal template_filename, template1.template_key
|
31
31
|
assert_equal nil, template1.guard
|
32
32
|
assert_equal({}, template1.extra_data)
|
33
|
-
assert_equal 'foo:rubytemplate', template1.name
|
33
|
+
assert_equal 'foo:rubytemplate.java', template1.name
|
34
34
|
|
35
35
|
target_basedir = "#{temp_dir}/generated/ruby_template"
|
36
36
|
target_filename = "#{target_basedir}/main/java/SimpleModel.java"
|
@@ -0,0 +1,216 @@
|
|
1
|
+
require File.expand_path('../../helper', __FILE__)
|
2
|
+
require File.expand_path('../jpa/model', __FILE__)
|
3
|
+
|
4
|
+
class Reality::Generators::TestStandardArtifactDSL < Reality::TestCase
|
5
|
+
def test_artifact_with_erb_template
|
6
|
+
TestTemplateSetContainer.target_manager.target(:entity)
|
7
|
+
|
8
|
+
TestFacetExtension.define_artifacts1
|
9
|
+
|
10
|
+
assert_equal TestTemplateSetContainer.template_sets.size, 1
|
11
|
+
|
12
|
+
assert_equal TestTemplateSetContainer.template_set_by_name?(:jpa_models), true
|
13
|
+
|
14
|
+
template_set = TestTemplateSetContainer.template_set_by_name(:jpa_models)
|
15
|
+
|
16
|
+
assert_equal true, template_set.template_by_name?('jpa_models:mytemplate.java')
|
17
|
+
|
18
|
+
mytemplate = template_set.template_by_name('jpa_models:mytemplate.java')
|
19
|
+
|
20
|
+
assert_equal mytemplate.name, 'jpa_models:mytemplate.java'
|
21
|
+
assert_equal mytemplate.output_filename_pattern, 'main/java/#{entity.qualified_name}.java'
|
22
|
+
assert_equal template_set, mytemplate.template_set
|
23
|
+
assert_equal [:jpa], mytemplate.facets
|
24
|
+
assert_equal :entity, mytemplate.target
|
25
|
+
assert_equal [], mytemplate.helpers
|
26
|
+
assert_equal File.expand_path("#{File.dirname(__FILE__)}/jpa/templates/mytemplate.java.erb"), mytemplate.template_key
|
27
|
+
assert_equal nil, mytemplate.guard
|
28
|
+
assert_equal({}, mytemplate.extra_data)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_artifact_with_ruby_template
|
32
|
+
TestTemplateSetContainer.target_manager.target(:entity)
|
33
|
+
|
34
|
+
TestFacetExtension.define_artifacts2
|
35
|
+
|
36
|
+
assert_equal TestTemplateSetContainer.template_sets.size, 1
|
37
|
+
|
38
|
+
assert_equal TestTemplateSetContainer.template_set_by_name?(:jpa_models), true
|
39
|
+
|
40
|
+
template_set = TestTemplateSetContainer.template_set_by_name(:jpa_models)
|
41
|
+
|
42
|
+
assert_equal true, template_set.template_by_name?('jpa_models:rubytemplate.java')
|
43
|
+
|
44
|
+
mytemplate = template_set.template_by_name('jpa_models:rubytemplate.java')
|
45
|
+
|
46
|
+
assert_equal mytemplate.name, 'jpa_models:rubytemplate.java'
|
47
|
+
assert_equal mytemplate.output_filename_pattern, 'main/java/#{entity.qualified_name}.java'
|
48
|
+
assert_equal template_set, mytemplate.template_set
|
49
|
+
assert_equal [:jpa], mytemplate.facets
|
50
|
+
assert_equal :entity, mytemplate.target
|
51
|
+
assert_equal [], mytemplate.helpers
|
52
|
+
assert_equal File.expand_path("#{File.dirname(__FILE__)}/jpa/templates/rubytemplate.java.rb"), mytemplate.template_key
|
53
|
+
assert_equal nil, mytemplate.guard
|
54
|
+
assert_equal({}, mytemplate.extra_data)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_artifact_with_options
|
58
|
+
TestTemplateSetContainer.target_manager.target(:entity)
|
59
|
+
|
60
|
+
TestFacetExtension.define_artifacts3
|
61
|
+
|
62
|
+
assert_equal TestTemplateSetContainer.template_sets.size, 1
|
63
|
+
|
64
|
+
assert_equal TestTemplateSetContainer.template_set_by_name?(:jpa_models), true
|
65
|
+
|
66
|
+
template_set = TestTemplateSetContainer.template_set_by_name(:jpa_models)
|
67
|
+
|
68
|
+
assert_equal true, template_set.template_by_name?('jpa_models:mytemplate.java')
|
69
|
+
|
70
|
+
mytemplate = template_set.template_by_name('jpa_models:mytemplate.java')
|
71
|
+
|
72
|
+
assert_equal mytemplate.name, 'jpa_models:mytemplate.java'
|
73
|
+
assert_equal mytemplate.output_filename_pattern, 'main/java/#{entity.qualified_name}.java'
|
74
|
+
assert_equal template_set, mytemplate.template_set
|
75
|
+
assert_equal [:jpa, :ee], mytemplate.facets
|
76
|
+
assert_equal :entity, mytemplate.target
|
77
|
+
assert_equal [TestFacetExtension::MyHelperModule], mytemplate.helpers
|
78
|
+
assert_equal File.expand_path("#{File.dirname(__FILE__)}/jpa/templates/mytemplate.java.erb"), mytemplate.template_key
|
79
|
+
assert_equal 'entity.jpa.good?', mytemplate.guard
|
80
|
+
assert_equal({}, mytemplate.extra_data)
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_artifact_with_default_helpers
|
84
|
+
TestTemplateSetContainer.target_manager.target(:entity)
|
85
|
+
|
86
|
+
TestTemplateSetContainer.helpers = [TestFacetExtension::MyHelperModule]
|
87
|
+
|
88
|
+
TestFacetExtension.define_artifacts4
|
89
|
+
|
90
|
+
assert_equal TestTemplateSetContainer.template_sets.size, 1
|
91
|
+
|
92
|
+
assert_equal TestTemplateSetContainer.template_set_by_name?(:jpa_models), true
|
93
|
+
|
94
|
+
template_set = TestTemplateSetContainer.template_set_by_name(:jpa_models)
|
95
|
+
|
96
|
+
assert_equal true, template_set.template_by_name?('jpa_models:mytemplate.java')
|
97
|
+
|
98
|
+
mytemplate = template_set.template_by_name('jpa_models:mytemplate.java')
|
99
|
+
|
100
|
+
assert_equal mytemplate.name, 'jpa_models:mytemplate.java'
|
101
|
+
assert_equal mytemplate.output_filename_pattern, 'main/java/#{entity.qualified_name}.java'
|
102
|
+
assert_equal template_set, mytemplate.template_set
|
103
|
+
assert_equal [:jpa], mytemplate.facets
|
104
|
+
assert_equal :entity, mytemplate.target
|
105
|
+
assert_equal [TestFacetExtension::MyHelperModule], mytemplate.helpers
|
106
|
+
assert_equal File.expand_path("#{File.dirname(__FILE__)}/jpa/templates/mytemplate.java.erb"), mytemplate.template_key
|
107
|
+
assert_equal nil, mytemplate.guard
|
108
|
+
assert_equal({}, mytemplate.extra_data)
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_multiple_artifact_definitions
|
112
|
+
TestTemplateSetContainer.target_manager.target(:entity)
|
113
|
+
|
114
|
+
TestFacetExtension.define_artifacts5
|
115
|
+
|
116
|
+
assert_equal TestTemplateSetContainer.template_sets.size, 2
|
117
|
+
|
118
|
+
assert_equal TestTemplateSetContainer.template_set_by_name?(:jpa_models), true
|
119
|
+
assert_equal TestTemplateSetContainer.template_set_by_name?(:jpa_qa_models), true
|
120
|
+
|
121
|
+
template_set1 = TestTemplateSetContainer.template_set_by_name(:jpa_models)
|
122
|
+
assert_equal 1, template_set1.templates.size
|
123
|
+
assert_equal true, template_set1.template_by_name?('jpa_models:mytemplate.java')
|
124
|
+
|
125
|
+
template_set2 = TestTemplateSetContainer.template_set_by_name(:jpa_qa_models)
|
126
|
+
assert_equal 2, template_set2.templates.size
|
127
|
+
assert_equal true, template_set2.template_by_name?('jpa_qa_models:mytemplate.java')
|
128
|
+
assert_equal true, template_set2.template_by_name?('jpa_qa_models:rubytemplate.java')
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_artifact_bad_option
|
132
|
+
TestTemplateSetContainer.target_manager.target(:entity)
|
133
|
+
|
134
|
+
assert_generator_error("Unknown option ':bad_option' passed to define artifact") do
|
135
|
+
TestFacetExtension.define_artifacts6
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_java_artifact
|
140
|
+
TestTemplateSetContainer.target_manager.target(:entity)
|
141
|
+
|
142
|
+
TestFacetExtension.define_artifacts7
|
143
|
+
|
144
|
+
assert_equal TestTemplateSetContainer.template_sets.size, 1
|
145
|
+
|
146
|
+
assert_equal TestTemplateSetContainer.template_set_by_name?(:jpa_models), true
|
147
|
+
|
148
|
+
template_set = TestTemplateSetContainer.template_set_by_name(:jpa_models)
|
149
|
+
|
150
|
+
assert_equal true, template_set.template_by_name?('jpa_models:mytemplate.java')
|
151
|
+
|
152
|
+
mytemplate = template_set.template_by_name('jpa_models:mytemplate.java')
|
153
|
+
|
154
|
+
assert_equal mytemplate.name, 'jpa_models:mytemplate.java'
|
155
|
+
assert_equal mytemplate.output_filename_pattern, 'main/java/#{entity.jpa.qualified_mytemplate_name.gsub(".","/")}.java'
|
156
|
+
assert_equal template_set, mytemplate.template_set
|
157
|
+
assert_equal [:jpa], mytemplate.facets
|
158
|
+
assert_equal :entity, mytemplate.target
|
159
|
+
assert_equal [], mytemplate.helpers
|
160
|
+
assert_equal File.expand_path("#{File.dirname(__FILE__)}/jpa/templates/mytemplate.java.erb"), mytemplate.template_key
|
161
|
+
assert_equal nil, mytemplate.guard
|
162
|
+
assert_equal({}, mytemplate.extra_data)
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_test_java_artifact
|
166
|
+
TestTemplateSetContainer.target_manager.target(:entity)
|
167
|
+
|
168
|
+
TestFacetExtension.define_artifacts8
|
169
|
+
|
170
|
+
assert_equal TestTemplateSetContainer.template_sets.size, 1
|
171
|
+
|
172
|
+
assert_equal TestTemplateSetContainer.template_set_by_name?(:jpa_models), true
|
173
|
+
|
174
|
+
template_set = TestTemplateSetContainer.template_set_by_name(:jpa_models)
|
175
|
+
|
176
|
+
assert_equal true, template_set.template_by_name?('jpa_models:mytemplate.java')
|
177
|
+
|
178
|
+
mytemplate = template_set.template_by_name('jpa_models:mytemplate.java')
|
179
|
+
|
180
|
+
assert_equal mytemplate.name, 'jpa_models:mytemplate.java'
|
181
|
+
assert_equal mytemplate.output_filename_pattern, 'test/java/#{entity.jpa.qualified_mytemplate_name.gsub(".","/")}.java'
|
182
|
+
assert_equal template_set, mytemplate.template_set
|
183
|
+
assert_equal [:jpa], mytemplate.facets
|
184
|
+
assert_equal :entity, mytemplate.target
|
185
|
+
assert_equal [], mytemplate.helpers
|
186
|
+
assert_equal File.expand_path("#{File.dirname(__FILE__)}/jpa/templates/mytemplate.java.erb"), mytemplate.template_key
|
187
|
+
assert_equal nil, mytemplate.guard
|
188
|
+
assert_equal({}, mytemplate.extra_data)
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_main_java_artifact
|
192
|
+
TestTemplateSetContainer.target_manager.target(:entity)
|
193
|
+
|
194
|
+
TestFacetExtension.define_artifacts9
|
195
|
+
|
196
|
+
assert_equal TestTemplateSetContainer.template_sets.size, 1
|
197
|
+
|
198
|
+
assert_equal TestTemplateSetContainer.template_set_by_name?(:jpa_models), true
|
199
|
+
|
200
|
+
template_set = TestTemplateSetContainer.template_set_by_name(:jpa_models)
|
201
|
+
|
202
|
+
assert_equal true, template_set.template_by_name?('jpa_models:mytemplate.java')
|
203
|
+
|
204
|
+
mytemplate = template_set.template_by_name('jpa_models:mytemplate.java')
|
205
|
+
|
206
|
+
assert_equal mytemplate.name, 'jpa_models:mytemplate.java'
|
207
|
+
assert_equal mytemplate.output_filename_pattern, 'main/java/#{entity.jpa.qualified_mytemplate_name.gsub(".","/")}.java'
|
208
|
+
assert_equal template_set, mytemplate.template_set
|
209
|
+
assert_equal [:jpa], mytemplate.facets
|
210
|
+
assert_equal :entity, mytemplate.target
|
211
|
+
assert_equal [], mytemplate.helpers
|
212
|
+
assert_equal File.expand_path("#{File.dirname(__FILE__)}/jpa/templates/mytemplate.java.erb"), mytemplate.template_key
|
213
|
+
assert_equal nil, mytemplate.guard
|
214
|
+
assert_equal({}, mytemplate.extra_data)
|
215
|
+
end
|
216
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.expand_path('../../helper', __FILE__)
|
2
|
+
|
3
|
+
class Reality::Generators::TestStandardTemplateSet < Reality::TestCase
|
4
|
+
def test_template_set
|
5
|
+
TestTemplateSetContainer.target_manager.target(:component)
|
6
|
+
|
7
|
+
template_set =
|
8
|
+
Reality::Generators::StandardTemplateSet.new(TestTemplateSetContainer,
|
9
|
+
:iris_entity,
|
10
|
+
:description => 'Templates that generate iris entities') do |t|
|
11
|
+
|
12
|
+
t.erb_template([], :component, 'jpa/templates/mytemplate.java.erb', 'src/main/#{component.name}')
|
13
|
+
t.ruby_template([], :component, 'jpa/templates/rubytemplate.java.rb', 'src/main/#{component.name}2')
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
assert_equal :iris_entity, template_set.name
|
18
|
+
assert_equal [], template_set.required_template_sets
|
19
|
+
assert_equal 2, template_set.templates.size
|
20
|
+
assert_equal 'Templates that generate iris entities', template_set.description
|
21
|
+
assert_equal true, template_set.template_by_name?('iris_entity:rubytemplate.java')
|
22
|
+
assert_equal true, template_set.template_by_name?('iris_entity:mytemplate.java')
|
23
|
+
end
|
24
|
+
end
|
@@ -49,9 +49,9 @@ class Reality::Generators::TestTargetManager < Reality::TestCase
|
|
49
49
|
assert_equal nil, target1.facet_key
|
50
50
|
assert_equal true, target1.standard?
|
51
51
|
|
52
|
-
|
52
|
+
assert_generator_error('Attempting to redefine target project') { Reality::Generators::Target.new(target_manager, :project, nil, {}) }
|
53
53
|
|
54
|
-
|
54
|
+
assert_generator_error("Target 'foo' defines container as 'bar' but no such target exists.") { Reality::Generators::Target.new(target_manager, :foo, :bar, {}) }
|
55
55
|
end
|
56
56
|
|
57
57
|
def test_target_manager_basic_operation
|
@@ -84,6 +84,6 @@ class Reality::Generators::TestTargetManager < Reality::TestCase
|
|
84
84
|
assert_equal 1, target_manager.targets_by_container(:project).size
|
85
85
|
assert_equal :component, target_manager.targets_by_container(:project)[0].key
|
86
86
|
|
87
|
-
|
87
|
+
assert_generator_error("Can not find target with key 'foo'") { target_manager.target_by_key(:foo) }
|
88
88
|
end
|
89
89
|
end
|
@@ -64,12 +64,12 @@ class Reality::Generators::TestTemplate < Reality::TestCase
|
|
64
64
|
name = 'Foo'
|
65
65
|
options = {:guard => guard, :name => name, :extra_data => extra_data}
|
66
66
|
|
67
|
-
|
67
|
+
assert_generator_error('Unexpected facets: "X"') do
|
68
68
|
Reality::Generators::Template.new(template_set, 'X', target, template_key, helpers, options)
|
69
|
-
|
70
|
-
|
69
|
+
end
|
70
|
+
assert_generator_error("Unknown target 'component' for template 'someMagicKey'. Valid targets include: ") do
|
71
71
|
Reality::Generators::Template.new(template_set, facets, target, template_key, helpers, options)
|
72
|
-
|
72
|
+
end
|
73
73
|
|
74
74
|
TestTemplateSetContainer.target_manager.target(target)
|
75
75
|
|
@@ -85,7 +85,7 @@ class Reality::Generators::TestTemplate < Reality::TestCase
|
|
85
85
|
assert_equal name, template1.name
|
86
86
|
assert_equal name, template1.to_s
|
87
87
|
|
88
|
-
|
88
|
+
assert_generator_error('output_path unimplemented') { template1.output_path }
|
89
89
|
|
90
90
|
render_context = template1.send(:create_context, 'SomeValue')
|
91
91
|
|
@@ -116,6 +116,10 @@ class Reality::Generators::TestTemplate < Reality::TestCase
|
|
116
116
|
end
|
117
117
|
|
118
118
|
class StringTemplate < Reality::Generators::SingleFileOutputTemplate
|
119
|
+
def template_extension
|
120
|
+
'erb'
|
121
|
+
end
|
122
|
+
|
119
123
|
def render_to_string(context_binding)
|
120
124
|
'X'
|
121
125
|
end
|
@@ -125,7 +129,7 @@ class Reality::Generators::TestTemplate < Reality::TestCase
|
|
125
129
|
template_set = Reality::Generators::TemplateSet.new(TestTemplateSetContainer, 'foo')
|
126
130
|
|
127
131
|
output_filename_pattern = 'main/java/#{component.name}.java'
|
128
|
-
template_key = 'MyFiles/templates/foo.erb
|
132
|
+
template_key = 'MyFiles/templates/foo.java.erb'
|
129
133
|
TestTemplateSetContainer.target_manager.target(:component)
|
130
134
|
|
131
135
|
template1 = StringTemplate.new(template_set, [], :component, template_key, output_filename_pattern, [], {})
|
@@ -139,7 +143,7 @@ class Reality::Generators::TestTemplate < Reality::TestCase
|
|
139
143
|
assert_equal template_key, template1.template_key
|
140
144
|
assert_equal nil, template1.guard
|
141
145
|
assert_equal({}, template1.extra_data)
|
142
|
-
assert_equal 'foo:
|
146
|
+
assert_equal 'foo:foo.java', template1.name
|
143
147
|
|
144
148
|
target_basedir = "#{temp_dir}/generated/single_file_template"
|
145
149
|
target_filename = "#{target_basedir}/main/java/SimpleModel.java"
|
@@ -4,11 +4,11 @@ class Reality::Generators::TestTemplateSet < Reality::TestCase
|
|
4
4
|
def test_template_set
|
5
5
|
TestTemplateSetContainer.target_manager.target(:component)
|
6
6
|
|
7
|
-
|
7
|
+
assert_generator_error("TemplateSet 'iris_entity' defined requirement on template set 'iris_shared' that does not exist.") do
|
8
8
|
Reality::Generators::TemplateSet.new(TestTemplateSetContainer,
|
9
9
|
:iris_entity,
|
10
10
|
:required_template_sets => [:iris_shared])
|
11
|
-
|
11
|
+
end
|
12
12
|
|
13
13
|
template_set1 = Reality::Generators::TemplateSet.new(TestTemplateSetContainer, :iris_shared)
|
14
14
|
|
@@ -31,7 +31,7 @@ class Reality::Generators::TestTemplateSet < Reality::TestCase
|
|
31
31
|
template = Reality::Generators::ErbTemplate.new(template_set2,
|
32
32
|
[],
|
33
33
|
:component,
|
34
|
-
'templates/mytemplate.java.erb',
|
34
|
+
'jpa/templates/mytemplate.java.erb',
|
35
35
|
'src/main/#{component.name}',
|
36
36
|
[],
|
37
37
|
{})
|
@@ -39,15 +39,14 @@ class Reality::Generators::TestTemplateSet < Reality::TestCase
|
|
39
39
|
assert_equal true, template_set2.template_by_name?(template.name)
|
40
40
|
assert_equal template, template_set2.template_by_name(template.name)
|
41
41
|
|
42
|
-
|
42
|
+
assert_generator_error('Template already exists with specified name iris_entity:mytemplate.java') do
|
43
43
|
Reality::Generators::ErbTemplate.new(template_set2,
|
44
44
|
[],
|
45
45
|
:component,
|
46
|
-
'templates/mytemplate.java.erb',
|
46
|
+
'jpa/templates/mytemplate.java.erb',
|
47
47
|
'src/main/#{component.name}',
|
48
48
|
[],
|
49
49
|
{})
|
50
|
-
|
51
|
-
|
50
|
+
end
|
52
51
|
end
|
53
52
|
end
|
@@ -4,13 +4,13 @@ class Reality::Generators::TestTemplateSetContainer < Reality::TestCase
|
|
4
4
|
def test_template_set_container
|
5
5
|
assert_equal 0, TestTemplateSetContainer.template_sets.size
|
6
6
|
assert_equal false, TestTemplateSetContainer.template_set_by_name?(:foo)
|
7
|
-
|
7
|
+
assert_generator_error('Unable to locate template_set foo') { TestTemplateSetContainer.template_set_by_name(:foo) }
|
8
8
|
|
9
|
-
|
9
|
+
assert_generator_error("TemplateSet 'iris_entity' defined requirement on template set 'iris_shared' that does not exist.") do
|
10
10
|
Reality::Generators::TemplateSet.new(TestTemplateSetContainer,
|
11
11
|
:iris_entity,
|
12
12
|
:required_template_sets => [:iris_shared])
|
13
|
-
|
13
|
+
end
|
14
14
|
|
15
15
|
template_set1 = TestTemplateSetContainer.template_set(:foo)
|
16
16
|
|
data/test/helper.rb
CHANGED
@@ -6,26 +6,24 @@ require 'reality/generators'
|
|
6
6
|
|
7
7
|
class Reality::TestCase < Minitest::Test
|
8
8
|
include Test::Unit::Assertions
|
9
|
-
|
10
|
-
module TestGenerator
|
11
|
-
class << self
|
12
|
-
include Reality::Generators::Generator
|
13
|
-
end
|
14
|
-
end
|
9
|
+
include Reality::Logging::Assertions
|
15
10
|
|
16
11
|
module TestTemplateSetContainer
|
17
12
|
class << self
|
18
13
|
include Reality::Generators::TemplateSetContainer
|
19
14
|
|
20
|
-
def
|
21
|
-
|
15
|
+
def derive_default_helpers(options)
|
16
|
+
helpers
|
22
17
|
end
|
23
18
|
|
24
|
-
|
25
|
-
|
19
|
+
attr_writer :helpers
|
20
|
+
|
21
|
+
def helpers
|
22
|
+
@helpers ||= []
|
26
23
|
end
|
27
24
|
|
28
25
|
def reset
|
26
|
+
helpers.clear
|
29
27
|
template_set_map.clear
|
30
28
|
target_manager.reset_targets
|
31
29
|
end
|
@@ -52,4 +50,10 @@ class Reality::TestCase < Minitest::Test
|
|
52
50
|
end
|
53
51
|
@temp_dir
|
54
52
|
end
|
53
|
+
|
54
|
+
def assert_generator_error(expected_message, &block)
|
55
|
+
assert_logging_error(Reality::Generators, expected_message) do
|
56
|
+
yield block
|
57
|
+
end
|
58
|
+
end
|
55
59
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reality-generators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Donald
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: reality-core
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.7.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.7.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: reality-naming
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.6.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.6.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: reality-orderedhash
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,17 +102,22 @@ files:
|
|
102
102
|
- lib/reality/generators/generator.rb
|
103
103
|
- lib/reality/generators/render_context.rb
|
104
104
|
- lib/reality/generators/ruby_template.rb
|
105
|
+
- lib/reality/generators/standard_artifact_dsl.rb
|
106
|
+
- lib/reality/generators/standard_template_set.rb
|
105
107
|
- lib/reality/generators/target_manager.rb
|
106
108
|
- lib/reality/generators/template.rb
|
107
109
|
- lib/reality/generators/template_set.rb
|
108
110
|
- lib/reality/generators/template_set_container.rb
|
109
111
|
- reality-generators.gemspec
|
110
|
-
- test/generators/
|
111
|
-
- test/generators/templates/
|
112
|
+
- test/generators/jpa/model.rb
|
113
|
+
- test/generators/jpa/templates/mytemplate.java.erb
|
114
|
+
- test/generators/jpa/templates/rubytemplate.java.rb
|
112
115
|
- test/generators/test_erb_template.rb
|
113
116
|
- test/generators/test_generator.rb
|
114
117
|
- test/generators/test_render_context.rb
|
115
118
|
- test/generators/test_ruby_template.rb
|
119
|
+
- test/generators/test_standard_artifact_dsl.rb
|
120
|
+
- test/generators/test_standard_template_set.rb
|
116
121
|
- test/generators/test_target_manager.rb
|
117
122
|
- test/generators/test_template.rb
|
118
123
|
- test/generators/test_template_set.rb
|