vraptor-scaffold 1.2.3 → 1.3.0.rc
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +7 -0
- data/Gemfile.lock +1 -1
- data/README.textile +1 -0
- data/lib/vraptor-scaffold/execution.rb +9 -8
- data/lib/vraptor-scaffold/generators/app/app_generator.rb +51 -9
- data/lib/vraptor-scaffold/generators/app/dependency_manager.rb +38 -9
- data/lib/vraptor-scaffold/generators/app/templates/build.xml +146 -146
- data/lib/vraptor-scaffold/generators/app/templates/eclipse/classpath-gae.erb +15 -0
- data/lib/vraptor-scaffold/generators/app/templates/eclipse/project-gae.erb +47 -0
- data/lib/vraptor-scaffold/generators/app/templates/eclipse/settings-gae/com.google.gdt.eclipse.core.prefs +5 -0
- data/lib/vraptor-scaffold/generators/app/templates/eclipse/settings-gae/org.eclipse.jdt.core.prefs +8 -0
- data/lib/vraptor-scaffold/generators/app/templates/eclipse/settings-gae/org.eclipse.wst.common.component.tt +10 -0
- data/lib/vraptor-scaffold/generators/app/templates/eclipse/settings-gae/org.eclipse.wst.common.project.facet.core.xml +9 -0
- data/lib/vraptor-scaffold/generators/app/templates/eclipse/settings-gae/org.eclipse.wst.jsdt.ui.superType.container +1 -0
- data/lib/vraptor-scaffold/generators/app/templates/eclipse/settings-gae/org.eclipse.wst.jsdt.ui.superType.name +1 -0
- data/lib/vraptor-scaffold/generators/app/templates/gae/ObjectifyFactory.java.tt +30 -0
- data/lib/vraptor-scaffold/generators/app/templates/gae/appengine-web.xml.tt +13 -0
- data/lib/vraptor-scaffold/generators/app/templates/gae/ivysettings.xml +10 -0
- data/lib/vraptor-scaffold/generators/app/templates/gae/logging.properties +28 -0
- data/lib/vraptor-scaffold/generators/app/templates/orm/Repository-objectify.java.tt +41 -0
- data/lib/vraptor-scaffold/generators/app/templates/vraptor-scaffold.erb +1 -1
- data/lib/vraptor-scaffold/generators/app/templates/webapp/WEB-INF/web.xml.tt +2 -2
- data/lib/vraptor-scaffold/generators/scaffold/attribute.rb +1 -1
- data/lib/vraptor-scaffold/generators/scaffold/base_scaffold.rb +7 -1
- data/lib/vraptor-scaffold/generators/scaffold/controller_generator/controller_generator.rb +10 -5
- data/lib/vraptor-scaffold/generators/scaffold/model_generator/model_generator.rb +10 -4
- data/lib/vraptor-scaffold/generators/scaffold/model_generator/objectify_model_generator.rb +20 -0
- data/lib/vraptor-scaffold/generators/scaffold/model_generator/templates/objectify_model.erb +33 -0
- data/lib/vraptor-scaffold/generators/scaffold/repository_generator/objectify_repository_generator.rb +25 -0
- data/lib/vraptor-scaffold/generators/scaffold/repository_generator/repository_generator.rb +9 -4
- data/lib/vraptor-scaffold/generators/scaffold/repository_generator/templates/objectify_repository.erb +22 -0
- data/lib/vraptor-scaffold/generators/scaffold/repository_generator/templates/objectify_repository_impl.erb +16 -0
- data/lib/vraptor-scaffold/generators/scaffold/scaffold_generator.rb +10 -3
- data/lib/vraptor-scaffold/generators/scaffold/template_engine_generator/freemarker_generator/freemarker_generator.rb +5 -4
- data/lib/vraptor-scaffold/generators/scaffold/template_engine_generator/jsp_generator/jsp_generator.rb +5 -4
- data/lib/vraptor-scaffold/generators/scaffold/template_engine_generator/template_engine_generator.rb +7 -1
- data/lib/vraptor-scaffold/load_paths.rb +3 -1
- data/lib/vraptor-scaffold/runner.rb +1 -0
- data/lib/vraptor-scaffold/runner/start.rb +29 -0
- data/lib/vraptor-scaffold/version.rb +1 -1
- data/maven/repo/br/com/caelum/vraptor-gae/1.0/vraptor-gae-1.0.jar +0 -0
- data/spec/resources/vraptor-scaffold-objectify.properties +7 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/vraptor-scaffold/configuration_spec.rb +3 -0
- data/spec/vraptor-scaffold/execution_spec.rb +5 -1
- data/spec/vraptor-scaffold/generators/app/app_generator_spec.rb +77 -2
- data/spec/vraptor-scaffold/generators/app/dependency_manager_spec.rb +18 -3
- data/spec/vraptor-scaffold/generators/app/templates/ObjectifyFactory.java +30 -0
- data/spec/vraptor-scaffold/generators/app/templates/{Repository.java → RepositoryJPA.java} +0 -0
- data/spec/vraptor-scaffold/generators/app/templates/RepositoryObjectify.java +41 -0
- data/spec/vraptor-scaffold/generators/app/templates/build.gradle +1 -1
- data/spec/vraptor-scaffold/generators/app/templates/build.xml +146 -0
- data/spec/vraptor-scaffold/generators/app/templates/classpath-gae +18 -0
- data/spec/vraptor-scaffold/generators/app/templates/freemarker-web.xml +1 -1
- data/spec/vraptor-scaffold/generators/app/templates/gae-jsp-web.xml +45 -0
- data/spec/vraptor-scaffold/generators/app/templates/ivy-gae.xml +45 -0
- data/spec/vraptor-scaffold/generators/app/templates/ivy.xml +1 -1
- data/spec/vraptor-scaffold/generators/app/templates/jsp-web.xml +1 -1
- data/spec/vraptor-scaffold/generators/app/templates/pom-heroku.xml +5 -5
- data/spec/vraptor-scaffold/generators/app/templates/pom.xml +5 -5
- data/spec/vraptor-scaffold/generators/app/templates/project-gae +47 -0
- data/spec/vraptor-scaffold/generators/plugin/expected_configs/build.gradle +1 -1
- data/spec/vraptor-scaffold/generators/plugin/expected_configs/default_org_build.gradle +1 -1
- data/spec/vraptor-scaffold/generators/plugin/expected_configs/default_org_ivy.xml +1 -1
- data/spec/vraptor-scaffold/generators/plugin/expected_configs/default_org_pom.xml +5 -5
- data/spec/vraptor-scaffold/generators/plugin/expected_configs/ivy.xml +1 -1
- data/spec/vraptor-scaffold/generators/plugin/expected_configs/pom.xml +5 -5
- data/spec/vraptor-scaffold/generators/scaffold/attribute_spec.rb +5 -1
- data/spec/vraptor-scaffold/generators/scaffold/controller_generator/controller_generator_spec.rb +6 -2
- data/spec/vraptor-scaffold/generators/scaffold/freemarker_generator/freemarker_generator_spec.rb +4 -0
- data/spec/vraptor-scaffold/generators/scaffold/jsp_generator/jsp_generator_spec.rb +4 -0
- data/spec/vraptor-scaffold/generators/scaffold/model_generator/model_generator_spec.rb +4 -0
- data/spec/vraptor-scaffold/generators/scaffold/model_generator/objectify_model_generator_spec.rb +40 -0
- data/spec/vraptor-scaffold/generators/scaffold/model_generator/templates/ObjectifyFactory.java +33 -0
- data/spec/vraptor-scaffold/generators/scaffold/model_generator/templates/Objectify_Product.java +38 -0
- data/spec/vraptor-scaffold/generators/scaffold/repository_generator/objectify_repository_generator_spec.rb +33 -0
- data/spec/vraptor-scaffold/generators/scaffold/repository_generator/repository_generator_spec.rb +12 -4
- data/spec/vraptor-scaffold/generators/scaffold/repository_generator/templates/Objectify_ProductRepository.java +22 -0
- data/spec/vraptor-scaffold/generators/scaffold/repository_generator/templates/Objectify_ProductRepositoryImpl.java +16 -0
- data/spec/vraptor-scaffold/generators/scaffold/scaffold_generator_spec.rb +14 -1
- data/spec/vraptor-scaffold/runner/scaffold_spec.rb +5 -5
- data/spec/vraptor-scaffold/runner/start_spec.rb +51 -0
- metadata +54 -19
@@ -0,0 +1,22 @@
|
|
1
|
+
package <%= Configuration.package %>.<%= Configuration.repositories_package %>;
|
2
|
+
|
3
|
+
import java.util.List;
|
4
|
+
|
5
|
+
import <%= Configuration.full_models_package %>.<%= class_name %>;
|
6
|
+
|
7
|
+
public interface <%= repository_interface_name %> {
|
8
|
+
/*
|
9
|
+
* Delete the methods you don't want to expose
|
10
|
+
*/
|
11
|
+
|
12
|
+
void create(<%= class_name %> entity);
|
13
|
+
|
14
|
+
void update(<%= class_name %> entity);
|
15
|
+
|
16
|
+
void destroy(<%= class_name %> entity);
|
17
|
+
|
18
|
+
<%= class_name %> find(Long id);
|
19
|
+
|
20
|
+
List<<%= class_name %>> findAll();
|
21
|
+
|
22
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
package <%= Configuration.package %>.<%= Configuration.repositories_package %>;
|
2
|
+
|
3
|
+
import <%= orm_import %>;
|
4
|
+
|
5
|
+
import br.com.caelum.vraptor.ioc.Component;
|
6
|
+
import <%= Configuration.full_models_package %>.<%= class_name %>;
|
7
|
+
|
8
|
+
@Component
|
9
|
+
public class <%= repository_impl_name %>
|
10
|
+
extends Repository<<%= class_name %>>
|
11
|
+
implements <%= repository_interface_name %> {
|
12
|
+
|
13
|
+
<%= repository_impl_name %>(<%= orm_class %> <%= orm_parameter_name %>) {
|
14
|
+
super(<%= orm_parameter_name %>);
|
15
|
+
}
|
16
|
+
}
|
@@ -2,7 +2,8 @@ class ScaffoldGenerator < VraptorScaffold::Base
|
|
2
2
|
|
3
3
|
attr_accessor :generated_attributes
|
4
4
|
argument :model
|
5
|
-
argument :attributes, :type => :hash, :default => {}, :banner => "field:type field:type"
|
5
|
+
argument :attributes, :type => :hash, :default => {}, :banner => "field:type field:type"
|
6
|
+
|
6
7
|
|
7
8
|
def self.banner
|
8
9
|
"vraptor scaffold #{self.arguments.map(&:usage).join(' ')}"
|
@@ -21,11 +22,17 @@ class ScaffoldGenerator < VraptorScaffold::Base
|
|
21
22
|
end
|
22
23
|
|
23
24
|
def model_generator
|
24
|
-
ModelGenerator
|
25
|
+
models_generator_available = {"jpa" => ModelGenerator,
|
26
|
+
"hibernate" => ModelGenerator,
|
27
|
+
"objectify" => ObjectifyModelGenerator }
|
28
|
+
models_generator_available.fetch(Configuration.orm).new(model, @generated_attributes).build
|
25
29
|
end
|
26
30
|
|
27
31
|
def repository_generator
|
28
|
-
RepositoryGenerator
|
32
|
+
repository_generators_available = {"jpa" => RepositoryGenerator,
|
33
|
+
"hibernate" => RepositoryGenerator,
|
34
|
+
"objectify" => ObjectifyRepositoryGenerator }
|
35
|
+
repository_generators_available.fetch(Configuration.orm).new(model, @generated_attributes).build
|
29
36
|
end
|
30
37
|
|
31
38
|
def template_engine_generator
|
@@ -1,9 +1,5 @@
|
|
1
1
|
class FreemarkerGenerator < TemplateEngineGenerator
|
2
2
|
|
3
|
-
def self.source_root
|
4
|
-
File.dirname(__FILE__)
|
5
|
-
end
|
6
|
-
|
7
3
|
def view_folder
|
8
4
|
"views"
|
9
5
|
end
|
@@ -15,4 +11,9 @@ class FreemarkerGenerator < TemplateEngineGenerator
|
|
15
11
|
def path
|
16
12
|
"${base}/#{base_path}"
|
17
13
|
end
|
14
|
+
|
15
|
+
def source_root
|
16
|
+
File.join File.dirname(__FILE__), "templates"
|
17
|
+
end
|
18
|
+
|
18
19
|
end
|
@@ -1,9 +1,5 @@
|
|
1
1
|
class JspGenerator < TemplateEngineGenerator
|
2
2
|
|
3
|
-
def self.source_root
|
4
|
-
File.dirname(__FILE__)
|
5
|
-
end
|
6
|
-
|
7
3
|
def view_folder
|
8
4
|
"jsp"
|
9
5
|
end
|
@@ -15,4 +11,9 @@ class JspGenerator < TemplateEngineGenerator
|
|
15
11
|
def path url=""
|
16
12
|
%Q{${pageContext.request.contextPath}/#{base_path}#{url}}
|
17
13
|
end
|
14
|
+
|
15
|
+
def source_root
|
16
|
+
File.join File.dirname(__FILE__), "templates"
|
17
|
+
end
|
18
|
+
|
18
19
|
end
|
data/lib/vraptor-scaffold/generators/scaffold/template_engine_generator/template_engine_generator.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
class TemplateEngineGenerator < BaseScaffold
|
2
2
|
|
3
3
|
def build
|
4
|
+
define_source_paths
|
4
5
|
create_view("index")
|
5
6
|
create_view("show")
|
6
7
|
create_view("form")
|
@@ -9,12 +10,17 @@ class TemplateEngineGenerator < BaseScaffold
|
|
9
10
|
end
|
10
11
|
|
11
12
|
def create_view(template_name, file_name=template_name)
|
12
|
-
template("
|
13
|
+
template("#{template_name}.erb", "#{views_path}/#{file_name}.#{extension}")
|
13
14
|
end
|
14
15
|
|
15
16
|
def views_path
|
16
17
|
File.join Configuration::WEB_INF, view_folder, model_parameter_name
|
17
18
|
end
|
19
|
+
|
20
|
+
def template_path
|
21
|
+
"src/templates/views"
|
22
|
+
end
|
23
|
+
|
18
24
|
end
|
19
25
|
|
20
26
|
require File.dirname(__FILE__) + "/jsp_generator/jsp_generator"
|
@@ -9,6 +9,8 @@ require File.dirname(__FILE__) + '/generators/scaffold/attribute'
|
|
9
9
|
require File.dirname(__FILE__) + '/generators/scaffold/scaffold_generator'
|
10
10
|
require File.dirname(__FILE__) + '/generators/scaffold/base_scaffold'
|
11
11
|
require File.dirname(__FILE__) + '/generators/scaffold/model_generator/model_generator'
|
12
|
+
require File.dirname(__FILE__) + '/generators/scaffold/model_generator/objectify_model_generator'
|
12
13
|
require File.dirname(__FILE__) + '/generators/scaffold/repository_generator/repository_generator'
|
14
|
+
require File.dirname(__FILE__) + '/generators/scaffold/repository_generator/objectify_repository_generator'
|
13
15
|
require File.dirname(__FILE__) + '/generators/scaffold/controller_generator/controller_generator'
|
14
|
-
require File.dirname(__FILE__) + '/generators/scaffold/template_engine_generator/template_engine_generator'
|
16
|
+
require File.dirname(__FILE__) + '/generators/scaffold/template_engine_generator/template_engine_generator'
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module VraptorScaffold
|
2
|
+
module Runner
|
3
|
+
|
4
|
+
class Start
|
5
|
+
def run(args)
|
6
|
+
validate
|
7
|
+
Kernel.system("ant compile")
|
8
|
+
Kernel.system("sh $APPENGINE_SDK_HOME/bin/dev_appserver.sh #{Configuration::WEB_APP}")
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def validate
|
14
|
+
unless File.exist?("src")
|
15
|
+
Kernel.puts "To run vraptor start please go to the project root folder."
|
16
|
+
Kernel::exit
|
17
|
+
end
|
18
|
+
unless Configuration.orm == "objectify"
|
19
|
+
Kernel.puts "vraptor start command is available only for gae apps."
|
20
|
+
Kernel::exit
|
21
|
+
end
|
22
|
+
unless ENV['APPENGINE_SDK_HOME']
|
23
|
+
Kernel.puts "To run vraptor start, configure environment variable APPENGINE_SDK_HOME."
|
24
|
+
Kernel::exit
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
Binary file
|
data/spec/spec_helper.rb
CHANGED
@@ -14,6 +14,11 @@ def mock_config_file
|
|
14
14
|
Configuration.stub!(:config).and_return(file)
|
15
15
|
end
|
16
16
|
|
17
|
+
def mock_objectify_config_file
|
18
|
+
file = YAML.load_file File.join( File.dirname(__FILE__), "resources", "vraptor-scaffold-objectify.properties")
|
19
|
+
Configuration.stub!(:config).and_return(file)
|
20
|
+
end
|
21
|
+
|
17
22
|
def exists_and_identical?(source, created)
|
18
23
|
c = File.open(created).read.gsub( /\r/m, "" )
|
19
24
|
c2 = File.open(source).read.gsub( /\r/m, "" )
|
@@ -81,11 +81,13 @@ describe Configuration do
|
|
81
81
|
Configuration.test_class_path("models", "Product.java").should == "src/test/java/br/com/caelum/models/Product.java"
|
82
82
|
end
|
83
83
|
end
|
84
|
+
|
84
85
|
context "hibernate" do
|
85
86
|
before(:each) do
|
86
87
|
config = {"template_engine" => "jsp", "package" => "br.com.caelum", "orm" => "hibernate"}
|
87
88
|
YAML.stub!(:load_file).with(Configuration::FILENAME).and_return(config)
|
88
89
|
end
|
90
|
+
|
89
91
|
it "should know orm" do
|
90
92
|
Configuration.orm.should == "hibernate"
|
91
93
|
end
|
@@ -94,6 +96,7 @@ describe Configuration do
|
|
94
96
|
Configuration.hibernate?.should be_true
|
95
97
|
end
|
96
98
|
end
|
99
|
+
|
97
100
|
context "properties without default configs" do
|
98
101
|
before(:each) do
|
99
102
|
config = {}
|
@@ -31,6 +31,10 @@ describe VraptorScaffold::Execution do
|
|
31
31
|
@execution.runner_for("plugin").should == VraptorScaffold::Runner::Plugin
|
32
32
|
end
|
33
33
|
|
34
|
+
it "should be start application when start action" do
|
35
|
+
@execution.runner_for("start").should == VraptorScaffold::Runner::Start
|
36
|
+
end
|
37
|
+
|
34
38
|
it "should be commands help when scaffold when unknown action" do
|
35
39
|
@execution.runner_for("xpto").should == VraptorScaffold::Runner::CommandsHelp
|
36
40
|
end
|
@@ -44,4 +48,4 @@ describe VraptorScaffold::Execution do
|
|
44
48
|
@execution.run(['new', 'app'])
|
45
49
|
end
|
46
50
|
|
47
|
-
end
|
51
|
+
end
|
@@ -74,7 +74,7 @@ describe AppGenerator do
|
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should create generic repository" do
|
77
|
-
source = File.join File.dirname(__FILE__), "templates", "
|
77
|
+
source = File.join File.dirname(__FILE__), "templates", "RepositoryJPA.java"
|
78
78
|
destination = "#{@app}/repository/Repository.java"
|
79
79
|
exists_and_identical?(source, destination)
|
80
80
|
end
|
@@ -290,7 +290,7 @@ describe AppGenerator do
|
|
290
290
|
end
|
291
291
|
|
292
292
|
it "should create build.xml" do
|
293
|
-
source = File.join
|
293
|
+
source = File.join File.dirname(__FILE__), "templates", "build.xml"
|
294
294
|
destination = "#{@project_path}/build.xml"
|
295
295
|
exists_and_identical?(source, destination)
|
296
296
|
end
|
@@ -441,6 +441,11 @@ describe AppGenerator do
|
|
441
441
|
Kernel.should_receive(:exit)
|
442
442
|
AppGenerator.new(@project_path, ["-j=1.x"])
|
443
443
|
end
|
444
|
+
|
445
|
+
it "should be invalid when gae and heroku are selected" do
|
446
|
+
Kernel.should_receive(:exit)
|
447
|
+
AppGenerator.new(@project_path, ["-g", "-h"])
|
448
|
+
end
|
444
449
|
end
|
445
450
|
|
446
451
|
context "heroku app" do
|
@@ -468,4 +473,74 @@ describe AppGenerator do
|
|
468
473
|
end
|
469
474
|
end
|
470
475
|
|
476
|
+
context "gae app" do
|
477
|
+
before(:all) do
|
478
|
+
@project_path = "gae"
|
479
|
+
AppGenerator.new(@project_path, ["--gae"]).invoke_all
|
480
|
+
@main_java = "#{@project_path}/#{Configuration::MAIN_SRC}"
|
481
|
+
@app = "#{@main_java}/app"
|
482
|
+
end
|
483
|
+
|
484
|
+
after(:all) do
|
485
|
+
FileUtils.remove_dir(@project_path)
|
486
|
+
end
|
487
|
+
|
488
|
+
it "should create ivy.xml" do
|
489
|
+
source = File.join File.dirname(__FILE__), "templates", "ivy-gae.xml"
|
490
|
+
destination = "#{@project_path}/ivy.xml"
|
491
|
+
exists_and_identical?(source, destination)
|
492
|
+
end
|
493
|
+
|
494
|
+
it "should create ivysettings.xml" do
|
495
|
+
File.exist?("#{@project_path}/ivysettings.xml").should be_true
|
496
|
+
end
|
497
|
+
|
498
|
+
it "should not create generic entity" do
|
499
|
+
File.exist?("#{@app}/model/Entity.java").should be_false
|
500
|
+
end
|
501
|
+
|
502
|
+
it "should create appengine-web xml to run gae apps" do
|
503
|
+
File.exist?("#{@project_path}/#{Configuration::WEB_INF}/appengine-web.xml").should be_true
|
504
|
+
end
|
505
|
+
|
506
|
+
it "should create logging properties for gae apps" do
|
507
|
+
File.exist?("#{@project_path}/#{Configuration::WEB_INF}/logging.properties").should be_true
|
508
|
+
end
|
509
|
+
|
510
|
+
it "should create web.xml" do
|
511
|
+
source = File.join File.dirname(__FILE__), "templates", "gae-jsp-web.xml"
|
512
|
+
destination = "#{@project_path}/#{Configuration::WEB_INF}/web.xml"
|
513
|
+
exists_and_identical?(source, destination)
|
514
|
+
end
|
515
|
+
|
516
|
+
it "should generate a objectify repository" do
|
517
|
+
source = File.join File.dirname(__FILE__), "templates", "RepositoryObjectify.java"
|
518
|
+
destination = "#{@project_path}/#{Configuration::MAIN_SRC}/app/repositories/Repository.java"
|
519
|
+
exists_and_identical?(source, destination)
|
520
|
+
end
|
521
|
+
|
522
|
+
it "should generate a objectify resource factory" do
|
523
|
+
source = File.join File.dirname(__FILE__), "templates", "ObjectifyFactory.java"
|
524
|
+
destination = "#{@project_path}/#{Configuration::MAIN_SRC}/app/infra/ObjectifyFactory.java"
|
525
|
+
exists_and_identical?(source, destination)
|
526
|
+
end
|
527
|
+
|
528
|
+
it "should create a specific .classpath for gae" do
|
529
|
+
source = File.join File.dirname(__FILE__), "templates", "classpath-gae"
|
530
|
+
destination = "#{@project_path}/.classpath"
|
531
|
+
exists_and_identical?(source, destination)
|
532
|
+
end
|
533
|
+
|
534
|
+
it "should create a specific .project for gae" do
|
535
|
+
source = File.join File.dirname(__FILE__), "templates", "project-gae"
|
536
|
+
destination = "#{@project_path}/.project"
|
537
|
+
exists_and_identical?(source, destination)
|
538
|
+
end
|
539
|
+
|
540
|
+
it "should create .settings" do
|
541
|
+
settings = File.join @project_path, ".settings"
|
542
|
+
File.exist?(settings).should be_true
|
543
|
+
end
|
544
|
+
end
|
545
|
+
|
471
546
|
end
|
@@ -1,19 +1,34 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
|
2
2
|
|
3
3
|
describe DependencyManager do
|
4
|
-
|
4
|
+
|
5
5
|
before(:each) do
|
6
6
|
others_dependency = mock(Dependency)
|
7
7
|
others_dependency.stub!(:exclusions).and_return([])
|
8
8
|
Dependency.stub!(:new).and_return(others_dependency)
|
9
9
|
@dependency = mock(Dependency)
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
context "compile scope" do
|
13
13
|
it "should include freemarker dependency when template is freemarker" do
|
14
14
|
options = {:template_engine => "ftl"}
|
15
15
|
Dependency.stub!(:new).with("org.freemarker", "freemarker", "2.3.18").and_return(@dependency)
|
16
16
|
DependencyManager.new(options).compile_scope.include?(@dependency).should be_true
|
17
17
|
end
|
18
|
+
|
19
|
+
context "dependencies for a gae app" do
|
20
|
+
it "should include gae dependencies when gae project option is selected" do
|
21
|
+
options = {:gae => true}
|
22
|
+
Dependency.stub!(:new).with("com.googlecode.objectify", "objectify", "3.1").and_return(@dependency)
|
23
|
+
DependencyManager.new(options).compile_scope.include?(@dependency).should be_true
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should not have hibernate persistence dependencies when gae project option is selected" do
|
27
|
+
options = {:gae => true}
|
28
|
+
Dependency.stub!(:new).with("org.hibernate", "hibernate-entitymanager", "3.6.7.Final").and_return(@dependency)
|
29
|
+
DependencyManager.new(options).compile_scope.include?(@dependency).should be_false
|
30
|
+
end
|
31
|
+
end
|
18
32
|
end
|
19
|
-
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
package app.infra;
|
2
|
+
|
3
|
+
import javax.annotation.PostConstruct;
|
4
|
+
|
5
|
+
import br.com.caelum.vraptor.ioc.Component;
|
6
|
+
import br.com.caelum.vraptor.ioc.ComponentFactory;
|
7
|
+
import br.com.caelum.vraptor.ioc.RequestScoped;
|
8
|
+
|
9
|
+
import com.googlecode.objectify.Objectify;
|
10
|
+
import com.googlecode.objectify.ObjectifyService;
|
11
|
+
|
12
|
+
@Component
|
13
|
+
@RequestScoped
|
14
|
+
public class ObjectifyFactory implements ComponentFactory<Objectify> {
|
15
|
+
|
16
|
+
private Objectify session;
|
17
|
+
|
18
|
+
static {
|
19
|
+
}
|
20
|
+
|
21
|
+
@PostConstruct
|
22
|
+
public void abreSession() {
|
23
|
+
session = ObjectifyService.begin();
|
24
|
+
}
|
25
|
+
|
26
|
+
@Override
|
27
|
+
public Objectify getInstance() {
|
28
|
+
return session;
|
29
|
+
}
|
30
|
+
}
|
File without changes
|
@@ -0,0 +1,41 @@
|
|
1
|
+
package app.repositories;
|
2
|
+
|
3
|
+
import java.lang.reflect.ParameterizedType;
|
4
|
+
import java.util.List;
|
5
|
+
|
6
|
+
import com.googlecode.objectify.Objectify;
|
7
|
+
|
8
|
+
class Repository<T> {
|
9
|
+
|
10
|
+
protected final Objectify objectify;
|
11
|
+
|
12
|
+
public Repository(Objectify objectify) {
|
13
|
+
this.objectify = objectify;
|
14
|
+
}
|
15
|
+
|
16
|
+
public void create(T entity) {
|
17
|
+
objectify.put(entity);
|
18
|
+
}
|
19
|
+
|
20
|
+
public void update(T entity) {
|
21
|
+
objectify.put(entity);
|
22
|
+
}
|
23
|
+
|
24
|
+
public void destroy(T entity) {
|
25
|
+
objectify.delete(entity);
|
26
|
+
}
|
27
|
+
|
28
|
+
public T find(Long id) {
|
29
|
+
return objectify.get(getParameterizedClass(), id);
|
30
|
+
}
|
31
|
+
|
32
|
+
public List<T> findAll() {
|
33
|
+
return objectify.query(getParameterizedClass()).list();
|
34
|
+
}
|
35
|
+
|
36
|
+
@SuppressWarnings("unchecked")
|
37
|
+
private Class<T> getParameterizedClass() {
|
38
|
+
ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass();
|
39
|
+
return (Class<T>) parameterizedType.getActualTypeArguments()[0];
|
40
|
+
}
|
41
|
+
}
|