vraptor-scaffold 0.0.1.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>