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,5 @@
1
+ .bundle
2
+ *.gem
3
+ .rvmrc
4
+ coverage
5
+ pgk
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source :rubygems
2
+
3
+ gem "thor", ">=0.13.7"
4
+ gem "rake", ">=0.8.7"
5
+ gem "activesupport", ">=2.3.8"
6
+
7
+ gem "ruby-debug", :group => [:development, :test]
8
+
9
+ group :test do
10
+ gem "ZenTest", ">=4.3.3"
11
+ gem "rspec", ">=1.3.0" ,:require => "spec"
12
+ end
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.
@@ -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
+
@@ -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]
@@ -0,0 +1,7 @@
1
+ Fix pom when create app with path Ex: /home/rodolfo/src/app
2
+ change log4j.xml to lo4j.properties
3
+ display name web.xml with app name
4
+ changelog
5
+ create others persistence unit
6
+ rake (rcov)
7
+ new java keywork(how to call new method in controller?)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../lib/vraptor-scaffold'
4
+
5
+ begin
6
+ VraptorScaffold::Main.execute(ARGV.dup)
7
+ end
@@ -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,7 @@
1
+ <?xml version="1.0" encoding="ISO-8859-1"?>
2
+
3
+ <decorators defaultdir="/decorators">
4
+ <decorator name="main" page="main.ftl">
5
+ <pattern>/*</pattern>
6
+ </decorator>
7
+ </decorators>
@@ -0,0 +1,8 @@
1
+ <html>
2
+ <head>
3
+ <title>VRaptor Scaffold Project</title>
4
+ </head>
5
+ <body>
6
+ It works!!
7
+ </body>
8
+ </html>
@@ -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>