vraptor-scaffold 0.0.1.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.gitignore +5 -0
  2. data/Gemfile +12 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +19 -0
  5. data/Rakefile +33 -0
  6. data/TODO.txt +7 -0
  7. data/bin/vraptor +7 -0
  8. data/lib/generators/app_generator/app_generator.rb +88 -0
  9. data/lib/generators/app_generator/templates/FreemarkerPathResolver.java +23 -0
  10. data/lib/generators/app_generator/templates/decorators.xml +7 -0
  11. data/lib/generators/app_generator/templates/index.jsp +8 -0
  12. data/lib/generators/app_generator/templates/log4j.xml +20 -0
  13. data/lib/generators/app_generator/templates/main.ftl +12 -0
  14. data/lib/generators/app_generator/templates/persistence.xml +18 -0
  15. data/lib/generators/app_generator/templates/pom.erb +101 -0
  16. data/lib/generators/app_generator/templates/web.xml +52 -0
  17. data/lib/generators/attribute.rb +8 -0
  18. data/lib/generators/base.rb +5 -0
  19. data/lib/generators/scaffold_generator/base_scaffold.rb +21 -0
  20. data/lib/generators/scaffold_generator/controller_generator/controller_generator.rb +18 -0
  21. data/lib/generators/scaffold_generator/controller_generator/templates/controller.erb +72 -0
  22. data/lib/generators/scaffold_generator/freemarker_generator/freemarker_generator.rb +13 -0
  23. data/lib/generators/scaffold_generator/freemarker_generator/templates/edit.erb +12 -0
  24. data/lib/generators/scaffold_generator/freemarker_generator/templates/index.erb +29 -0
  25. data/lib/generators/scaffold_generator/freemarker_generator/templates/new.erb +11 -0
  26. data/lib/generators/scaffold_generator/freemarker_generator/templates/show.erb +12 -0
  27. data/lib/generators/scaffold_generator/model_generator/model_generator.rb +10 -0
  28. data/lib/generators/scaffold_generator/model_generator/templates/model.erb +35 -0
  29. data/lib/generators/scaffold_generator/scaffold_generator.rb +8 -0
  30. data/lib/load_paths.rb +16 -0
  31. data/lib/vraptor-scaffold.rb +11 -0
  32. data/spec/lib/generators/app_generator/app_generator_spec.rb +146 -0
  33. data/spec/lib/generators/app_generator/templates/pom.xml +101 -0
  34. data/spec/lib/generators/attribute_spec.rb +0 -0
  35. data/spec/lib/generators/scaffold_generator/controller_generator/controller_generator_spec.rb +20 -0
  36. data/spec/lib/generators/scaffold_generator/controller_generator/templates/ProductController.java +72 -0
  37. data/spec/lib/generators/scaffold_generator/freemarker_generator/freemarker_generator_spec.rb +30 -0
  38. data/spec/lib/generators/scaffold_generator/model_generator/model_generator_spec.rb +20 -0
  39. data/spec/lib/generators/scaffold_generator/model_generator/templates/Product.java +40 -0
  40. data/spec/lib/generators/scaffold_generator/scaffold_generator_spec.rb +35 -0
  41. data/spec/lib/vraptor-scaffold_spec.rb +37 -0
  42. data/spec/spec.opts +4 -0
  43. data/spec/spec_helper.rb +3 -0
  44. data/vraptor-scaffold.gemspec +92 -0
  45. metadata +121 -0
@@ -0,0 +1,101 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>vraptor-scaffold</groupId>
5
+ <artifactId>vraptor-scaffold</artifactId>
6
+ <packaging>war</packaging>
7
+ <version>0.0.1-SNAPSHOT</version>
8
+ <name>vraptor-scaffold</name>
9
+
10
+ <build>
11
+ <plugins>
12
+ <plugin>
13
+ <artifactId>maven-compiler-plugin</artifactId>
14
+ <version>2.0.2</version>
15
+ <configuration>
16
+ <source>1.6</source>
17
+ <target>1.6</target>
18
+ </configuration>
19
+ </plugin>
20
+ <plugin>
21
+ <artifactId>maven-eclipse-plugin</artifactId>
22
+ <configuration>
23
+ <downloadSources>true</downloadSources>
24
+ <downloadJavadocs>true</downloadJavadocs>
25
+ <wtpversion>2.0</wtpversion>
26
+ </configuration>
27
+ </plugin>
28
+ <plugin>
29
+ <groupId>org.apache.maven.plugins</groupId>
30
+ <artifactId>maven-war-plugin</artifactId>
31
+ <version>2.0</version>
32
+ </plugin>
33
+ </plugins>
34
+ </build>
35
+
36
+ <dependencies>
37
+ <dependency>
38
+ <groupId>junit</groupId>
39
+ <artifactId>junit</artifactId>
40
+ <version>4.8.1</version>
41
+ <scope>test</scope>
42
+ </dependency>
43
+ <dependency>
44
+ <groupId>org.mockito</groupId>
45
+ <artifactId>mockito-all</artifactId>
46
+ <version>1.8.5</version>
47
+ <scope>test</scope>
48
+ </dependency>
49
+ <dependency>
50
+ <groupId>hsqldb</groupId>
51
+ <artifactId>hsqldb</artifactId>
52
+ <version>1.8.0.10</version>
53
+ </dependency>
54
+ <dependency>
55
+ <groupId>br.com.caelum</groupId>
56
+ <artifactId>vraptor</artifactId>
57
+ <version>3.1.2</version>
58
+ </dependency>
59
+ <dependency>
60
+ <groupId>opensymphony</groupId>
61
+ <artifactId>sitemesh</artifactId>
62
+ <version>2.4.2</version>
63
+ </dependency>
64
+ <dependency>
65
+ <groupId>org.freemarker</groupId>
66
+ <artifactId>freemarker</artifactId>
67
+ <version>2.3.16</version>
68
+ </dependency>
69
+ <dependency>
70
+ <groupId>javax.persistence</groupId>
71
+ <artifactId>persistence-api</artifactId>
72
+ <version>1.0</version>
73
+ </dependency>
74
+ <dependency>
75
+ <groupId>org.hibernate</groupId>
76
+ <artifactId>hibernate-entitymanager</artifactId>
77
+ <version>3.4.0.GA</version>
78
+ <exclusions>
79
+ <exclusion>
80
+ <artifactId>slf4j-api</artifactId>
81
+ <groupId>org.slf4j</groupId>
82
+ </exclusion>
83
+ </exclusions>
84
+ </dependency>
85
+ <dependency>
86
+ <groupId>javax.servlet</groupId>
87
+ <artifactId>servlet-api</artifactId>
88
+ <version>2.5</version>
89
+ <scope>provided</scope>
90
+ </dependency>
91
+ </dependencies>
92
+
93
+ <reporting>
94
+ <plugins>
95
+ <plugin>
96
+ <groupId>org.codehaus.mojo</groupId>
97
+ <artifactId>cobertura-maven-plugin</artifactId>
98
+ </plugin>
99
+ </plugins>
100
+ </reporting>
101
+ </project>
File without changes
@@ -0,0 +1,20 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../../spec_helper")
2
+
3
+ describe ControllerGenerator do
4
+
5
+ before(:each) do
6
+ @generator = ControllerGenerator.new(["product", "name:string", "value:double"])
7
+ @generator.build
8
+ end
9
+
10
+ after(:each) do
11
+ FileUtils.remove_dir("src")
12
+ end
13
+
14
+ it "should create controller" do
15
+ from = File.expand_path(File.dirname(__FILE__) + "/templates/ProductController.java")
16
+ to = "src/main/java/app/controllers/ProductController.java"
17
+ FileUtils.compare_file(from, to).should be_true
18
+ end
19
+
20
+ end
@@ -0,0 +1,72 @@
1
+ package app.controllers;
2
+
3
+ import java.util.List;
4
+
5
+ import javax.persistence.EntityManager;
6
+
7
+ import app.models.Product;
8
+ import br.com.caelum.vraptor.Delete;
9
+ import br.com.caelum.vraptor.Get;
10
+ import br.com.caelum.vraptor.Path;
11
+ import br.com.caelum.vraptor.Post;
12
+ import br.com.caelum.vraptor.Put;
13
+ import br.com.caelum.vraptor.Resource;
14
+ import br.com.caelum.vraptor.Result;
15
+ import br.com.caelum.vraptor.view.Results;
16
+
17
+ @Resource
18
+ public class ProductController {
19
+
20
+ private Result result;
21
+ private EntityManager entityManager;
22
+
23
+ public ProductController(Result result, EntityManager entityManager) {
24
+ this.entityManager = entityManager;
25
+ this.result = result;
26
+ }
27
+
28
+ @Get
29
+ @Path("/products")
30
+ public List<Product> index() {
31
+ return entityManager.createQuery("from Product").getResultList();
32
+ }
33
+
34
+ @Post
35
+ @Path("/products")
36
+ public void create(Product product) {
37
+ entityManager.persist(product);
38
+ result.use(Results.logic()).redirectTo(ProductController.class).index();
39
+ }
40
+
41
+ @Get
42
+ @Path("/products/new")
43
+ public Product newProduct() {
44
+ return new Product();
45
+ }
46
+
47
+ @Put
48
+ @Path("/products")
49
+ public void update(Product product) {
50
+ entityManager.merge(product);
51
+ result.use(Results.logic()).redirectTo(ProductController.class).index();
52
+ }
53
+
54
+ @Get
55
+ @Path("/products/product.id/edit")
56
+ public Product edit(Product product) {
57
+ return entityManager.find(Product.class, product.getId());
58
+ }
59
+
60
+ @Get
61
+ @Path("/products/product.id/show")
62
+ public Product show(Product product) {
63
+ return entityManager.find(Product.class, product.getId());
64
+ }
65
+
66
+ @Delete
67
+ @Path("/products")
68
+ public void destroy(Product product) {
69
+ entityManager.remove(entityManager.find(Product.class, product.getId()));
70
+ result.use(Results.logic()).redirectTo(ProductController.class).index();
71
+ }
72
+ }
@@ -0,0 +1,30 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../../spec_helper")
2
+
3
+ describe FreemarkerGenerator do
4
+
5
+ before(:each) do
6
+ @generator = FreemarkerGenerator.new(["product", "name:string", "value:double"])
7
+ @generator.build
8
+ end
9
+
10
+ after(:each) do
11
+ FileUtils.remove_dir("src")
12
+ end
13
+
14
+ it "should create index view" do
15
+ File.exist?("src/main/webapp/WEB-INF/freemarker/product/index.ftl").should be_true
16
+ end
17
+
18
+ it "should create show view" do
19
+ File.exist?("src/main/webapp/WEB-INF/freemarker/product/show.ftl").should be_true
20
+ end
21
+
22
+ it "should create new view" do
23
+ File.exist?("src/main/webapp/WEB-INF/freemarker/product/new.ftl").should be_true
24
+ end
25
+
26
+ it "should create edit view" do
27
+ File.exist?("src/main/webapp/WEB-INF/freemarker/product/edit.ftl").should be_true
28
+ end
29
+
30
+ end
@@ -0,0 +1,20 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../../spec_helper")
2
+
3
+ describe ModelGenerator do
4
+
5
+ before(:each) do
6
+ @generator = ModelGenerator.new(["product", "name:string", "value:double"])
7
+ @generator.build
8
+ end
9
+
10
+ after(:each) do
11
+ FileUtils.remove_dir("src")
12
+ end
13
+
14
+ it "should create model" do
15
+ from = File.expand_path(File.dirname(__FILE__) + "/templates/Product.java")
16
+ to = "src/main/java/app/models/Product.java"
17
+ FileUtils.compare_file(from, to).should be_true
18
+ end
19
+
20
+ end
@@ -0,0 +1,40 @@
1
+ package app.models;
2
+
3
+ import javax.persistence.Entity;
4
+ import javax.persistence.GeneratedValue;
5
+ import javax.persistence.Id;
6
+
7
+ @Entity
8
+ public class Product {
9
+
10
+ @Id @GeneratedValue
11
+ private Long id;
12
+
13
+ private String name;
14
+ private Double value;
15
+
16
+ public void setId(Long id) {
17
+ this.id = id;
18
+ }
19
+
20
+ public Long getId() {
21
+ return id;
22
+ }
23
+
24
+ public void setName(String name) {
25
+ this.name = name;
26
+ }
27
+
28
+ public String getName() {
29
+ return name;
30
+ }
31
+
32
+ public void setValue(Double value) {
33
+ this.value = value;
34
+ }
35
+
36
+ public Double getValue() {
37
+ return value;
38
+ }
39
+
40
+ }
@@ -0,0 +1,35 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
2
+
3
+ describe ScaffoldGenerator do
4
+
5
+ before(:each) do
6
+ @args = ["product", "name:string", "value:double"]
7
+ @generator = ScaffoldGenerator.new
8
+ @model_generator = mock(ModelGenerator)
9
+ ModelGenerator.stub!(:new).with(@args).and_return(@model_generator)
10
+ @controller_generator = mock(ControllerGenerator)
11
+ ControllerGenerator.stub!(:new).with(@args).and_return(@controller_generator)
12
+ @freemarker_generator = mock(FreemarkerGenerator)
13
+ FreemarkerGenerator.stub!(:new).with(@args).and_return(@freemarker_generator)
14
+ @model_generator.stub!(:build)
15
+ @controller_generator.stub!(:build)
16
+ @freemarker_generator.stub!(:build)
17
+ end
18
+
19
+ context "build scaffold" do
20
+ it "should call model generator" do
21
+ @model_generator.should_receive(:build)
22
+ @generator.build(@args)
23
+ end
24
+
25
+ it "should call controller generator" do
26
+ @controller_generator.should_receive(:build)
27
+ @generator.build(@args)
28
+ end
29
+
30
+ it "should call freemarker generator" do
31
+ @freemarker_generator.should_receive(:build)
32
+ @generator.build(@args)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,37 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe VraptorScaffold::Main do
4
+
5
+ context "new application" do
6
+ before(:each) do
7
+ @project_name = "vraptor-scaffold"
8
+ @generator = mock(AppGenerator)
9
+ AppGenerator.stub!(:new).and_return(@generator)
10
+ @args = ["new", @project_name]
11
+ end
12
+
13
+ it "should call app generator when typed new" do
14
+ @generator.should_receive(:build).with(@project_name)
15
+ VraptorScaffold::Main.execute(@args)
16
+ end
17
+
18
+ it "cannot call app generator when not typed new" do
19
+ @args.delete("new")
20
+ @generator.should_not_receive(:build)
21
+ VraptorScaffold::Main.execute(@args)
22
+ end
23
+ end
24
+
25
+ context "scaffold" do
26
+ before(:each) do
27
+ @generator = mock(ScaffoldGenerator)
28
+ ScaffoldGenerator.stub!(:new).and_return(@generator)
29
+ @args = ["scaffold", "product", "name:string", "value:doulbe"]
30
+ end
31
+
32
+ it "should call scaffold generator" do
33
+ @generator.should_receive(:build).with(["product", "name:string", "value:doulbe"])
34
+ VraptorScaffold::Main.execute(@args)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format progress
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1,3 @@
1
+ require 'spec'
2
+ require 'spec/autorun'
3
+ require File.dirname(__FILE__) + '/../lib/vraptor-scaffold'
@@ -0,0 +1,92 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{vraptor-scaffold}
8
+ s.version = "0.0.1.beta1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Rodolfo Liviero"]
12
+ s.date = %q{2010-07-07}
13
+ s.default_executable = %q{vraptor}
14
+ s.description = %q{}
15
+ s.email = %q{rodolfoliviero@gmail.com}
16
+ s.executables = ["vraptor"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ ".gitignore",
23
+ "Gemfile",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "TODO.txt",
27
+ "bin/vraptor",
28
+ "lib/generators/app_generator/app_generator.rb",
29
+ "lib/generators/app_generator/templates/FreemarkerPathResolver.java",
30
+ "lib/generators/app_generator/templates/decorators.xml",
31
+ "lib/generators/app_generator/templates/index.jsp",
32
+ "lib/generators/app_generator/templates/log4j.xml",
33
+ "lib/generators/app_generator/templates/main.ftl",
34
+ "lib/generators/app_generator/templates/persistence.xml",
35
+ "lib/generators/app_generator/templates/pom.erb",
36
+ "lib/generators/app_generator/templates/web.xml",
37
+ "lib/generators/attribute.rb",
38
+ "lib/generators/base.rb",
39
+ "lib/generators/scaffold_generator/base_scaffold.rb",
40
+ "lib/generators/scaffold_generator/controller_generator/controller_generator.rb",
41
+ "lib/generators/scaffold_generator/controller_generator/templates/controller.erb",
42
+ "lib/generators/scaffold_generator/freemarker_generator/freemarker_generator.rb",
43
+ "lib/generators/scaffold_generator/freemarker_generator/templates/edit.erb",
44
+ "lib/generators/scaffold_generator/freemarker_generator/templates/index.erb",
45
+ "lib/generators/scaffold_generator/freemarker_generator/templates/new.erb",
46
+ "lib/generators/scaffold_generator/freemarker_generator/templates/show.erb",
47
+ "lib/generators/scaffold_generator/model_generator/model_generator.rb",
48
+ "lib/generators/scaffold_generator/model_generator/templates/model.erb",
49
+ "lib/generators/scaffold_generator/scaffold_generator.rb",
50
+ "lib/load_paths.rb",
51
+ "lib/vraptor-scaffold.rb",
52
+ "spec/lib/generators/app_generator/app_generator_spec.rb",
53
+ "spec/lib/generators/app_generator/templates/pom.xml",
54
+ "spec/lib/generators/attribute_spec.rb",
55
+ "spec/lib/generators/scaffold_generator/controller_generator/controller_generator_spec.rb",
56
+ "spec/lib/generators/scaffold_generator/controller_generator/templates/ProductController.java",
57
+ "spec/lib/generators/scaffold_generator/freemarker_generator/freemarker_generator_spec.rb",
58
+ "spec/lib/generators/scaffold_generator/model_generator/model_generator_spec.rb",
59
+ "spec/lib/generators/scaffold_generator/model_generator/templates/Product.java",
60
+ "spec/lib/generators/scaffold_generator/scaffold_generator_spec.rb",
61
+ "spec/lib/vraptor-scaffold_spec.rb",
62
+ "spec/spec.opts",
63
+ "spec/spec_helper.rb",
64
+ "vraptor-scaffold.gemspec"
65
+ ]
66
+ s.homepage = %q{http://github.com/rodolfoliviero/vraptor-scaffold}
67
+ s.rdoc_options = ["--charset=UTF-8"]
68
+ s.require_paths = ["lib"]
69
+ s.rubygems_version = %q{1.3.7}
70
+ s.summary = %q{Scaffold for vraptor 3.}
71
+ s.test_files = [
72
+ "spec/lib/vraptor-scaffold_spec.rb",
73
+ "spec/lib/generators/app_generator/app_generator_spec.rb",
74
+ "spec/lib/generators/scaffold_generator/controller_generator/controller_generator_spec.rb",
75
+ "spec/lib/generators/scaffold_generator/scaffold_generator_spec.rb",
76
+ "spec/lib/generators/scaffold_generator/model_generator/model_generator_spec.rb",
77
+ "spec/lib/generators/scaffold_generator/freemarker_generator/freemarker_generator_spec.rb",
78
+ "spec/lib/generators/attribute_spec.rb",
79
+ "spec/spec_helper.rb"
80
+ ]
81
+
82
+ if s.respond_to? :specification_version then
83
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
84
+ s.specification_version = 3
85
+
86
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
87
+ else
88
+ end
89
+ else
90
+ end
91
+ end
92
+