vraptor-scaffold 0.0.1.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/Gemfile +12 -0
- data/LICENSE +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +33 -0
- data/TODO.txt +7 -0
- data/bin/vraptor +7 -0
- data/lib/generators/app_generator/app_generator.rb +88 -0
- data/lib/generators/app_generator/templates/FreemarkerPathResolver.java +23 -0
- data/lib/generators/app_generator/templates/decorators.xml +7 -0
- data/lib/generators/app_generator/templates/index.jsp +8 -0
- data/lib/generators/app_generator/templates/log4j.xml +20 -0
- data/lib/generators/app_generator/templates/main.ftl +12 -0
- data/lib/generators/app_generator/templates/persistence.xml +18 -0
- data/lib/generators/app_generator/templates/pom.erb +101 -0
- data/lib/generators/app_generator/templates/web.xml +52 -0
- data/lib/generators/attribute.rb +8 -0
- data/lib/generators/base.rb +5 -0
- data/lib/generators/scaffold_generator/base_scaffold.rb +21 -0
- data/lib/generators/scaffold_generator/controller_generator/controller_generator.rb +18 -0
- data/lib/generators/scaffold_generator/controller_generator/templates/controller.erb +72 -0
- data/lib/generators/scaffold_generator/freemarker_generator/freemarker_generator.rb +13 -0
- data/lib/generators/scaffold_generator/freemarker_generator/templates/edit.erb +12 -0
- data/lib/generators/scaffold_generator/freemarker_generator/templates/index.erb +29 -0
- data/lib/generators/scaffold_generator/freemarker_generator/templates/new.erb +11 -0
- data/lib/generators/scaffold_generator/freemarker_generator/templates/show.erb +12 -0
- data/lib/generators/scaffold_generator/model_generator/model_generator.rb +10 -0
- data/lib/generators/scaffold_generator/model_generator/templates/model.erb +35 -0
- data/lib/generators/scaffold_generator/scaffold_generator.rb +8 -0
- data/lib/load_paths.rb +16 -0
- data/lib/vraptor-scaffold.rb +11 -0
- data/spec/lib/generators/app_generator/app_generator_spec.rb +146 -0
- data/spec/lib/generators/app_generator/templates/pom.xml +101 -0
- data/spec/lib/generators/attribute_spec.rb +0 -0
- data/spec/lib/generators/scaffold_generator/controller_generator/controller_generator_spec.rb +20 -0
- data/spec/lib/generators/scaffold_generator/controller_generator/templates/ProductController.java +72 -0
- data/spec/lib/generators/scaffold_generator/freemarker_generator/freemarker_generator_spec.rb +30 -0
- data/spec/lib/generators/scaffold_generator/model_generator/model_generator_spec.rb +20 -0
- data/spec/lib/generators/scaffold_generator/model_generator/templates/Product.java +40 -0
- data/spec/lib/generators/scaffold_generator/scaffold_generator_spec.rb +35 -0
- data/spec/lib/vraptor-scaffold_spec.rb +37 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +3 -0
- data/vraptor-scaffold.gemspec +92 -0
- metadata +121 -0
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2010 Rodolfo Liviero
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
= Vraptor Scaffold
|
2
|
+
|
3
|
+
== Installation
|
4
|
+
- gem install vraptor-scaffold (not available yet).
|
5
|
+
|
6
|
+
== Note on Patches/Pull Requests
|
7
|
+
|
8
|
+
- Fork the project.
|
9
|
+
- Make your feature addition or bug fix.
|
10
|
+
- Add tests for it.
|
11
|
+
- Send me a pull request.
|
12
|
+
|
13
|
+
== Authors
|
14
|
+
- Rodolfo Liviero [mailto:rodolfoliviero@gmail.com]
|
15
|
+
|
16
|
+
== Copyright
|
17
|
+
|
18
|
+
Copyright (c) 2010 Rodolfo Liviero. See LICENSE for details.
|
19
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "vraptor-scaffold"
|
8
|
+
gem.summary = "Scaffold for vraptor 3."
|
9
|
+
gem.description = ""
|
10
|
+
gem.email = "rodolfoliviero@gmail.com"
|
11
|
+
gem.homepage = "http://github.com/rodolfoliviero/vraptor-scaffold"
|
12
|
+
gem.authors = ["Rodolfo Liviero"]
|
13
|
+
end
|
14
|
+
Jeweler::GemcutterTasks.new
|
15
|
+
rescue LoadError
|
16
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
17
|
+
end
|
18
|
+
|
19
|
+
require 'spec/rake/spectask'
|
20
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
21
|
+
spec.libs << 'lib' << 'spec'
|
22
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
23
|
+
end
|
24
|
+
|
25
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
26
|
+
spec.libs << 'lib' << 'spec'
|
27
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
28
|
+
spec.rcov = true
|
29
|
+
end
|
30
|
+
|
31
|
+
task :spec => :check_dependencies
|
32
|
+
|
33
|
+
task :default => [:spec]
|
data/TODO.txt
ADDED
data/bin/vraptor
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
class AppGenerator < VraptorScaffold::Base
|
2
|
+
|
3
|
+
def self.source_root
|
4
|
+
File.dirname(__FILE__)
|
5
|
+
end
|
6
|
+
|
7
|
+
def build(project_name)
|
8
|
+
@project_name = project_name
|
9
|
+
self.destination_root=(@project_name)
|
10
|
+
empty_directory "."
|
11
|
+
create_pom
|
12
|
+
create_main_java
|
13
|
+
create_main_resources
|
14
|
+
create_webapp
|
15
|
+
empty_directory "src/test/java"
|
16
|
+
empty_directory "src/test/resources"
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def create_pom
|
21
|
+
template("templates/pom.erb", "pom.xml")
|
22
|
+
end
|
23
|
+
|
24
|
+
def create_main_java
|
25
|
+
main_java = "src/main/java"
|
26
|
+
empty_directory main_java
|
27
|
+
inside main_java do
|
28
|
+
create_app
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def create_app
|
33
|
+
empty_directory "app"
|
34
|
+
inside "app" do
|
35
|
+
empty_directory "controllers"
|
36
|
+
empty_directory "models"
|
37
|
+
create_app_infra
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_app_infra
|
42
|
+
infra_path = empty_directory "infrastructure"
|
43
|
+
template = "FreemarkerPathResolver.java"
|
44
|
+
template_from_root(template, "#{infra_path}/#{template}")
|
45
|
+
end
|
46
|
+
|
47
|
+
def create_main_resources
|
48
|
+
main_resources = "src/main/resources"
|
49
|
+
empty_directory main_resources
|
50
|
+
inside main_resources do
|
51
|
+
template_from_root("log4j.xml", "#{main_resources}/log4j.xml")
|
52
|
+
meta_inf = empty_directory "META-INF"
|
53
|
+
template_from_root("persistence.xml", "#{meta_inf}/persistence.xml")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def create_webapp
|
58
|
+
webapp = "src/main/webapp"
|
59
|
+
empty_directory webapp
|
60
|
+
inside webapp do
|
61
|
+
template_from_root("index.jsp", "#{webapp}/index.jsp")
|
62
|
+
create_decorators
|
63
|
+
create_web_inf
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def create_decorators
|
68
|
+
decorators = empty_directory "decorators"
|
69
|
+
inside decorators do
|
70
|
+
template_from_root("main.ftl", "#{decorators}/main.ftl")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def create_web_inf
|
75
|
+
web_inf = empty_directory "WEB-INF"
|
76
|
+
inside "WEB-INF" do
|
77
|
+
template_from_root("decorators.xml", "#{web_inf}/decorators.xml")
|
78
|
+
template_from_root("web.xml", "#{web_inf}/web.xml")
|
79
|
+
empty_directory "freemarker"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def template_from_root(template, to)
|
84
|
+
in_root do
|
85
|
+
template("templates/#{template}", to)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
package app.infrastructure;
|
2
|
+
|
3
|
+
import javax.servlet.http.HttpServletRequest;
|
4
|
+
|
5
|
+
import br.com.caelum.vraptor.ioc.Component;
|
6
|
+
import br.com.caelum.vraptor.view.AcceptHeaderToFormat;
|
7
|
+
import br.com.caelum.vraptor.view.DefaultPathResolver;
|
8
|
+
|
9
|
+
@Component
|
10
|
+
public class FreemarkerPathResolver extends DefaultPathResolver {
|
11
|
+
|
12
|
+
public FreemarkerPathResolver(HttpServletRequest request, AcceptHeaderToFormat acceptHeaderToFormat) {
|
13
|
+
super(request, acceptHeaderToFormat);
|
14
|
+
}
|
15
|
+
|
16
|
+
protected String getPrefix() {
|
17
|
+
return "/WEB-INF/freemarker/";
|
18
|
+
}
|
19
|
+
|
20
|
+
protected String getExtension() {
|
21
|
+
return "ftl";
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
|
3
|
+
|
4
|
+
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
|
5
|
+
<layout class="org.apache.log4j.PatternLayout">
|
6
|
+
<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %5p [%-20c{1}] %m%n" />
|
7
|
+
</layout>
|
8
|
+
</appender>
|
9
|
+
|
10
|
+
<logger name="org.hibernate">
|
11
|
+
<level value="WARN" />
|
12
|
+
<appender-ref ref="CONSOLE" />
|
13
|
+
</logger>
|
14
|
+
|
15
|
+
<root>
|
16
|
+
<priority value="INFO" />
|
17
|
+
<appender-ref ref="CONSOLE" />
|
18
|
+
</root>
|
19
|
+
|
20
|
+
</log4j:configuration>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
5
|
+
<title>${title}</title>
|
6
|
+
${head}
|
7
|
+
</head>
|
8
|
+
|
9
|
+
<body>
|
10
|
+
${body}
|
11
|
+
</body>
|
12
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
4
|
+
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
|
5
|
+
version="1.0">
|
6
|
+
|
7
|
+
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
|
8
|
+
<provider>org.hibernate.ejb.HibernatePersistence</provider>
|
9
|
+
|
10
|
+
<properties>
|
11
|
+
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" />
|
12
|
+
<property name="hibernate.connection.url" value="jdbc:hsqldb:mem:testdb" />
|
13
|
+
<property name="hibernate.hbm2ddl.auto" value="create" />
|
14
|
+
<property name="hibernate.query.substitutions" value="true=1, false=0"/>
|
15
|
+
</properties>
|
16
|
+
</persistence-unit>
|
17
|
+
|
18
|
+
</persistence>
|
@@ -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><%= @project_name %></groupId>
|
5
|
+
<artifactId><%= @project_name %></artifactId>
|
6
|
+
<packaging>war</packaging>
|
7
|
+
<version>0.0.1-SNAPSHOT</version>
|
8
|
+
<name><%= @project_name %></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>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
3
|
+
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
|
4
|
+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
|
5
|
+
id="WebApp_ID" version="2.5">
|
6
|
+
|
7
|
+
<display-name>vraptor-scaffold-project</display-name>
|
8
|
+
|
9
|
+
<context-param>
|
10
|
+
<param-name>br.com.caelum.vraptor.provider</param-name>
|
11
|
+
<param-value>br.com.caelum.vraptor.util.jpa.JPACustomProvider</param-value>
|
12
|
+
</context-param>
|
13
|
+
|
14
|
+
<filter>
|
15
|
+
<filter-name>sitemesh</filter-name>
|
16
|
+
<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
|
17
|
+
</filter>
|
18
|
+
|
19
|
+
<filter>
|
20
|
+
<filter-name>vraptor</filter-name>
|
21
|
+
<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
|
22
|
+
</filter>
|
23
|
+
|
24
|
+
<filter-mapping>
|
25
|
+
<filter-name>sitemesh</filter-name>
|
26
|
+
<url-pattern>/*</url-pattern>
|
27
|
+
</filter-mapping>
|
28
|
+
|
29
|
+
<filter-mapping>
|
30
|
+
<filter-name>vraptor</filter-name>
|
31
|
+
<url-pattern>/*</url-pattern>
|
32
|
+
</filter-mapping>
|
33
|
+
|
34
|
+
<servlet>
|
35
|
+
<servlet-name>sitemesh-freemarker</servlet-name>
|
36
|
+
<servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>
|
37
|
+
<init-param>
|
38
|
+
<param-name>TemplatePath</param-name>
|
39
|
+
<param-value>/</param-value>
|
40
|
+
</init-param>
|
41
|
+
<init-param>
|
42
|
+
<param-name>default_encoding</param-name>
|
43
|
+
<param-value>ISO-8859-1</param-value>
|
44
|
+
</init-param>
|
45
|
+
<load-on-startup>1</load-on-startup>
|
46
|
+
</servlet>
|
47
|
+
|
48
|
+
<servlet-mapping>
|
49
|
+
<servlet-name>sitemesh-freemarker</servlet-name>
|
50
|
+
<url-pattern>*.ftl</url-pattern>
|
51
|
+
</servlet-mapping>
|
52
|
+
</web-app>
|