spring-gen 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +674 -0
- data/README.md +133 -0
- data/Rakefile +1 -0
- data/bin/setup +7 -0
- data/bin/spring-gen +8 -0
- data/lib/command_router.rb +15 -0
- data/lib/commands/resource.rb +129 -0
- data/lib/commands/service.rb +53 -0
- data/lib/spring-gen/version.rb +3 -0
- data/lib/spring-gen.rb +5 -0
- data/lib/templates/layout/.gitignore +36 -0
- data/lib/templates/layout/build.gradle.erb +105 -0
- data/lib/templates/layout/intellij/config/checkstyle/checkstyle.xml +199 -0
- data/lib/templates/layout/intellij/config/codestyle/Codestyle.xml +34 -0
- data/lib/templates/layout/intellij/config/copyright/gnu.xml +6 -0
- data/lib/templates/layout/intellij/config/copyright/profiles_settings.xml +10 -0
- data/lib/templates/layout/src/java/config/AppConfig.java.erb +54 -0
- data/lib/templates/layout/src/java/main/App.java.erb +41 -0
- data/lib/templates/layout/src/resources/application.yml.erb +108 -0
- data/lib/templates/layout/src/resources/bootstrap.yml.erb +3 -0
- data/lib/templates/resource/assembler/Assembler.java.erb +57 -0
- data/lib/templates/resource/assembler/BaseAssembler.java.erb +95 -0
- data/lib/templates/resource/controller/BaseController.java.erb +66 -0
- data/lib/templates/resource/controller/Controller.java.erb +106 -0
- data/lib/templates/resource/exception/NotCreatedException.java.erb +34 -0
- data/lib/templates/resource/model/JpaBaseEntity.java.erb +43 -0
- data/lib/templates/resource/model/Model.java.erb +51 -0
- data/lib/templates/resource/model/MongodbBaseEntity.java.erb +33 -0
- data/lib/templates/resource/model/Neo4jBaseEntity.java.erb +81 -0
- data/lib/templates/resource/repository/Repository.java.erb +30 -0
- data/lib/templates/resource/resource/Resource.java.erb +48 -0
- data/lib/templates/resource/test/TestUtil.java.erb +85 -0
- data/lib/templates/resource/test/integration/jpa/IntegrationTest.java.erb +123 -0
- data/lib/templates/resource/test/integration/jpa/IntegrationTestConfig.java.erb +47 -0
- data/lib/templates/resource/test/integration/jpa/sampleData.xml.erb +20 -0
- data/lib/templates/resource/test/integration/mongodb/IntegrationTest.java.erb +114 -0
- data/lib/templates/resource/test/integration/mongodb/IntegrationTestConfig.java.erb +60 -0
- data/lib/templates/resource/test/integration/mongodb/SampleData.java.erb +43 -0
- data/lib/templates/resource/test/integration/neo4j/IntegrationTest.java.erb +123 -0
- data/lib/templates/resource/test/integration/neo4j/IntegrationTestConfig.java.erb +47 -0
- data/lib/templates/resource/test/integration/neo4j/SampleData.java.erb +23 -0
- data/lib/templates/resource/test/unit/assembler/AssemblerUnitTest.java.erb +52 -0
- data/lib/templates/resource/test/unit/assembler/AssemblerUnitTestConfig.java.erb +43 -0
- data/lib/templates/resource/test/unit/controller/ControllerUnitTest.java.erb +115 -0
- data/lib/templates/resource/test/unit/controller/ControllerUnitTestConfig.java.erb +64 -0
- data/lib/templates/service.yml.erb +4 -0
- data/lib/util.rb +39 -0
- data/spring-gen.gemspec +25 -0
- metadata +153 -0
@@ -0,0 +1,199 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<!DOCTYPE module PUBLIC
|
3
|
+
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
|
4
|
+
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
|
5
|
+
|
6
|
+
<!--
|
7
|
+
Checkstyle configuration that checks the Google coding conventions from:
|
8
|
+
|
9
|
+
- Google Java Style
|
10
|
+
https://google-styleguide.googlecode.com/svn-history/r130/trunk/javaguide.html
|
11
|
+
|
12
|
+
Checkstyle is very configurable. Be sure to read the documentation at
|
13
|
+
http://checkstyle.sf.net (or in your downloaded distribution).
|
14
|
+
Most Checks are configurable, be sure to consult the documentation.
|
15
|
+
To completely disable a check, just comment it out or delete it from the file.
|
16
|
+
Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
|
17
|
+
|
18
|
+
-->
|
19
|
+
|
20
|
+
<module name = "Checker">
|
21
|
+
<property name="charset" value="UTF-8"/>
|
22
|
+
|
23
|
+
<property name="severity" value="warning"/>
|
24
|
+
|
25
|
+
<property name="fileExtensions" value="java, properties, xml"/>
|
26
|
+
<!-- Checks for whitespace -->
|
27
|
+
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
|
28
|
+
<module name="FileTabCharacter">
|
29
|
+
<property name="eachLine" value="true"/>
|
30
|
+
</module>
|
31
|
+
|
32
|
+
<module name="TreeWalker">
|
33
|
+
<module name="OuterTypeFilename"/>
|
34
|
+
<module name="IllegalTokenText">
|
35
|
+
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
|
36
|
+
<property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
|
37
|
+
<property name="message" value="Avoid using corresponding octal or Unicode escape."/>
|
38
|
+
</module>
|
39
|
+
<module name="AvoidEscapedUnicodeCharacters">
|
40
|
+
<property name="allowEscapesForControlCharacters" value="true"/>
|
41
|
+
<property name="allowByTailComment" value="true"/>
|
42
|
+
<property name="allowNonPrintableEscapes" value="true"/>
|
43
|
+
</module>
|
44
|
+
<module name="LineLength">
|
45
|
+
<property name="max" value="100"/>
|
46
|
+
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
|
47
|
+
</module>
|
48
|
+
<module name="AvoidStarImport"/>
|
49
|
+
<module name="OneTopLevelClass"/>
|
50
|
+
<module name="NoLineWrap"/>
|
51
|
+
<module name="EmptyBlock">
|
52
|
+
<property name="option" value="TEXT"/>
|
53
|
+
<property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
|
54
|
+
</module>
|
55
|
+
<module name="NeedBraces"/>
|
56
|
+
<module name="LeftCurly">
|
57
|
+
<property name="maxLineLength" value="100"/>
|
58
|
+
</module>
|
59
|
+
<module name="RightCurly"/>
|
60
|
+
<module name="RightCurly">
|
61
|
+
<property name="option" value="alone"/>
|
62
|
+
<property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
|
63
|
+
</module>
|
64
|
+
<module name="WhitespaceAround">
|
65
|
+
<property name="allowEmptyConstructors" value="true"/>
|
66
|
+
<property name="allowEmptyMethods" value="true"/>
|
67
|
+
<property name="allowEmptyTypes" value="true"/>
|
68
|
+
<property name="allowEmptyLoops" value="true"/>
|
69
|
+
<message key="ws.notFollowed"
|
70
|
+
value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
|
71
|
+
<message key="ws.notPreceded"
|
72
|
+
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
|
73
|
+
</module>
|
74
|
+
<module name="OneStatementPerLine"/>
|
75
|
+
<module name="MultipleVariableDeclarations"/>
|
76
|
+
<module name="ArrayTypeStyle"/>
|
77
|
+
<module name="MissingSwitchDefault"/>
|
78
|
+
<module name="FallThrough"/>
|
79
|
+
<module name="UpperEll"/>
|
80
|
+
<module name="ModifierOrder"/>
|
81
|
+
<module name="EmptyLineSeparator">
|
82
|
+
<property name="allowNoEmptyLineBetweenFields" value="true"/>
|
83
|
+
</module>
|
84
|
+
<module name="SeparatorWrap">
|
85
|
+
<property name="tokens" value="DOT"/>
|
86
|
+
<property name="option" value="nl"/>
|
87
|
+
</module>
|
88
|
+
<module name="SeparatorWrap">
|
89
|
+
<property name="tokens" value="COMMA"/>
|
90
|
+
<property name="option" value="EOL"/>
|
91
|
+
</module>
|
92
|
+
<module name="PackageName">
|
93
|
+
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
|
94
|
+
<message key="name.invalidPattern"
|
95
|
+
value="Package name ''{0}'' must match pattern ''{1}''."/>
|
96
|
+
</module>
|
97
|
+
<module name="TypeName">
|
98
|
+
<message key="name.invalidPattern"
|
99
|
+
value="Type name ''{0}'' must match pattern ''{1}''."/>
|
100
|
+
</module>
|
101
|
+
<module name="MemberName">
|
102
|
+
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
|
103
|
+
<message key="name.invalidPattern"
|
104
|
+
value="Member name ''{0}'' must match pattern ''{1}''."/>
|
105
|
+
</module>
|
106
|
+
<module name="ParameterName">
|
107
|
+
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
|
108
|
+
<message key="name.invalidPattern"
|
109
|
+
value="Parameter name ''{0}'' must match pattern ''{1}''."/>
|
110
|
+
</module>
|
111
|
+
<module name="LocalVariableName">
|
112
|
+
<property name="tokens" value="VARIABLE_DEF"/>
|
113
|
+
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
|
114
|
+
<property name="allowOneCharVarInForLoop" value="true"/>
|
115
|
+
<message key="name.invalidPattern"
|
116
|
+
value="Local variable name ''{0}'' must match pattern ''{1}''."/>
|
117
|
+
</module>
|
118
|
+
<module name="ClassTypeParameterName">
|
119
|
+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
|
120
|
+
<message key="name.invalidPattern"
|
121
|
+
value="Class type name ''{0}'' must match pattern ''{1}''."/>
|
122
|
+
</module>
|
123
|
+
<module name="MethodTypeParameterName">
|
124
|
+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
|
125
|
+
<message key="name.invalidPattern"
|
126
|
+
value="Method type name ''{0}'' must match pattern ''{1}''."/>
|
127
|
+
</module>
|
128
|
+
<module name="NoFinalizer"/>
|
129
|
+
<module name="GenericWhitespace">
|
130
|
+
<message key="ws.followed"
|
131
|
+
value="GenericWhitespace ''{0}'' is followed by whitespace."/>
|
132
|
+
<message key="ws.preceded"
|
133
|
+
value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
|
134
|
+
<message key="ws.illegalFollow"
|
135
|
+
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
|
136
|
+
<message key="ws.notPreceded"
|
137
|
+
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
|
138
|
+
</module>
|
139
|
+
<module name="Indentation">
|
140
|
+
<property name="basicOffset" value="2"/>
|
141
|
+
<property name="braceAdjustment" value="0"/>
|
142
|
+
<property name="caseIndent" value="2"/>
|
143
|
+
<property name="throwsIndent" value="4"/>
|
144
|
+
<property name="lineWrappingIndentation" value="4"/>
|
145
|
+
<property name="arrayInitIndent" value="2"/>
|
146
|
+
</module>
|
147
|
+
<module name="AbbreviationAsWordInName">
|
148
|
+
<property name="ignoreFinal" value="false"/>
|
149
|
+
<property name="allowedAbbreviationLength" value="1"/>
|
150
|
+
</module>
|
151
|
+
<module name="OverloadMethodsDeclarationOrder"/>
|
152
|
+
<module name="VariableDeclarationUsageDistance"/>
|
153
|
+
<module name="CustomImportOrder">
|
154
|
+
<property name="specialImportsRegExp" value="com.google"/>
|
155
|
+
<property name="sortImportsInGroupAlphabetically" value="true"/>
|
156
|
+
<property name="customImportOrderRules" value="STATIC###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE"/>
|
157
|
+
</module>
|
158
|
+
<module name="MethodParamPad"/>
|
159
|
+
<module name="OperatorWrap">
|
160
|
+
<property name="option" value="NL"/>
|
161
|
+
<property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
|
162
|
+
</module>
|
163
|
+
<module name="AnnotationLocation">
|
164
|
+
<property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
|
165
|
+
</module>
|
166
|
+
<module name="AnnotationLocation">
|
167
|
+
<property name="tokens" value="VARIABLE_DEF"/>
|
168
|
+
<property name="allowSamelineMultipleAnnotations" value="true"/>
|
169
|
+
</module>
|
170
|
+
<module name="NonEmptyAtclauseDescription"/>
|
171
|
+
<module name="JavadocTagContinuationIndentation"/>
|
172
|
+
<module name="SummaryJavadocCheck">
|
173
|
+
<property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
|
174
|
+
</module>
|
175
|
+
<module name="JavadocParagraph"/>
|
176
|
+
<module name="AtclauseOrder">
|
177
|
+
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
|
178
|
+
<property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
|
179
|
+
</module>
|
180
|
+
<module name="JavadocMethod">
|
181
|
+
<property name="scope" value="public"/>
|
182
|
+
<property name="allowMissingParamTags" value="true"/>
|
183
|
+
<property name="allowMissingThrowsTags" value="true"/>
|
184
|
+
<property name="allowMissingReturnTag" value="true"/>
|
185
|
+
<property name="minLineCount" value="2"/>
|
186
|
+
<property name="allowedAnnotations" value="Override, Test"/>
|
187
|
+
<property name="allowThrowsTagsForSubclasses" value="true"/>
|
188
|
+
</module>
|
189
|
+
<module name="MethodName">
|
190
|
+
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
|
191
|
+
<message key="name.invalidPattern"
|
192
|
+
value="Method name ''{0}'' must match pattern ''{1}''."/>
|
193
|
+
</module>
|
194
|
+
<module name="SingleLineJavadoc"/>
|
195
|
+
<module name="EmptyCatchBlock">
|
196
|
+
<property name="exceptionVariableName" value="expected"/>
|
197
|
+
</module>
|
198
|
+
</module>
|
199
|
+
</module>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<code_scheme name="Codestyle">
|
2
|
+
<option name="OTHER_INDENT_OPTIONS">
|
3
|
+
<value>
|
4
|
+
<option name="INDENT_SIZE" value="2" />
|
5
|
+
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
6
|
+
<option name="TAB_SIZE" value="2" />
|
7
|
+
<option name="USE_TAB_CHARACTER" value="false" />
|
8
|
+
<option name="SMART_TABS" value="false" />
|
9
|
+
<option name="LABEL_INDENT_SIZE" value="0" />
|
10
|
+
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
|
11
|
+
<option name="USE_RELATIVE_INDENTS" value="false" />
|
12
|
+
</value>
|
13
|
+
</option>
|
14
|
+
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="1000" />
|
15
|
+
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="1000" />
|
16
|
+
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
|
17
|
+
<value />
|
18
|
+
</option>
|
19
|
+
<option name="IMPORT_LAYOUT_TABLE">
|
20
|
+
<value>
|
21
|
+
<package name="" withSubpackages="true" static="true" />
|
22
|
+
<emptyLine />
|
23
|
+
<package name="" withSubpackages="true" static="false" />
|
24
|
+
<emptyLine />
|
25
|
+
<package name="java" withSubpackages="true" static="false" />
|
26
|
+
<package name="javax" withSubpackages="true" static="false" />
|
27
|
+
<emptyLine />
|
28
|
+
</value>
|
29
|
+
</option>
|
30
|
+
<option name="RIGHT_MARGIN" value="80" />
|
31
|
+
<XML>
|
32
|
+
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
|
33
|
+
</XML>
|
34
|
+
</code_scheme>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<component name="CopyrightManager">
|
2
|
+
<copyright>
|
3
|
+
<option name="myName" value="gnu" />
|
4
|
+
<option name="notice" value="Copyright (c) &#36;today.year Rene Richter. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA" />
|
5
|
+
</copyright>
|
6
|
+
</component>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<component name="CopyrightManager">
|
2
|
+
<settings default="gnu">
|
3
|
+
<module2copyright>
|
4
|
+
<element module="All" copyright="gnu" />
|
5
|
+
</module2copyright>
|
6
|
+
<LanguageOptions name="JAVA">
|
7
|
+
<option name="fileLocation" value="2" />
|
8
|
+
</LanguageOptions>
|
9
|
+
</settings>
|
10
|
+
</component>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
package <%=@group_id%>.config;
|
2
|
+
|
3
|
+
|
4
|
+
/*
|
5
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
6
|
+
* This program is free software; you can redistribute it and/or modify
|
7
|
+
* it under the terms of the GNU General Public License as published by
|
8
|
+
* the Free Software Foundation; either version 3 of the License, or
|
9
|
+
* (at your option) any later version.
|
10
|
+
* This program is distributed in the hope that it will be useful,
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
* GNU General Public License for more details.
|
14
|
+
* You should have received a copy of the GNU General Public License
|
15
|
+
* along with this program; if not, write to the Free Software Foundation,
|
16
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
*/
|
18
|
+
|
19
|
+
<%if @repository_technique == "jpa"-%>
|
20
|
+
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
21
|
+
<%elsif @repository_technique == "mongodb"-%>
|
22
|
+
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
|
23
|
+
<%elsif @repository_technique == "neo4j"-%>
|
24
|
+
<%end-%>
|
25
|
+
import org.springframework.boot.orm.jpa.EntityScan;
|
26
|
+
import org.springframework.context.annotation.Bean;
|
27
|
+
import org.springframework.context.annotation.ComponentScan;
|
28
|
+
import org.springframework.context.annotation.Configuration;
|
29
|
+
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
30
|
+
import org.springframework.data.web.config.EnableSpringDataWebSupport;
|
31
|
+
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
32
|
+
/**
|
33
|
+
* Application config-class.
|
34
|
+
*
|
35
|
+
* @author <%=@user_name%>
|
36
|
+
*/
|
37
|
+
|
38
|
+
@Configuration
|
39
|
+
@EnableWebMvc
|
40
|
+
@ComponentScan(basePackages = {"<%=@group_id%>"})
|
41
|
+
<%if @repository_technique == "jpa"-%>
|
42
|
+
@EnableJpaRepositories(basePackages = "<%=@group_id%>.repository")
|
43
|
+
<%elsif @repository_technique == "mongodb"-%>
|
44
|
+
@EnableMongoRepositories(basePackages = "<%=@group_id%>.repository")
|
45
|
+
<%elsif @repository_technique == "neo4j"-%>
|
46
|
+
<%end-%>
|
47
|
+
@EntityScan(basePackages = "<%=@group_id%>.repository")
|
48
|
+
@EnableSpringDataWebSupport
|
49
|
+
public class AppConfig {
|
50
|
+
@Bean
|
51
|
+
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
|
52
|
+
return new PropertySourcesPlaceholderConfigurer();
|
53
|
+
}
|
54
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
package <%=@group_id%>.main;
|
2
|
+
|
3
|
+
|
4
|
+
/*
|
5
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
6
|
+
* This program is free software; you can redistribute it and/or modify
|
7
|
+
* it under the terms of the GNU General Public License as published by
|
8
|
+
* the Free Software Foundation; either version 3 of the License, or
|
9
|
+
* (at your option) any later version.
|
10
|
+
* This program is distributed in the hope that it will be useful,
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
* GNU General Public License for more details.
|
14
|
+
* You should have received a copy of the GNU General Public License
|
15
|
+
* along with this program; if not, write to the Free Software Foundation,
|
16
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
*/
|
18
|
+
|
19
|
+
import org.springframework.boot.CommandLineRunner;
|
20
|
+
import org.springframework.boot.SpringApplication;
|
21
|
+
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
22
|
+
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
23
|
+
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
@EnableAutoConfiguration
|
28
|
+
@EnableDiscoveryClient
|
29
|
+
@SpringBootApplication
|
30
|
+
public class App implements CommandLineRunner {
|
31
|
+
|
32
|
+
public static void main(String[] args) {
|
33
|
+
SpringApplication.run(App.class, args);
|
34
|
+
|
35
|
+
}
|
36
|
+
|
37
|
+
@Override
|
38
|
+
public void run(String... args) throws Exception {
|
39
|
+
|
40
|
+
}
|
41
|
+
}
|
@@ -0,0 +1,108 @@
|
|
1
|
+
spring:
|
2
|
+
profiles:
|
3
|
+
active: development
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
spring:
|
8
|
+
profiles: development
|
9
|
+
data:
|
10
|
+
rest:
|
11
|
+
basePath: / #root URI for Spring Data REST
|
12
|
+
defaultPageSize: 20 #change default number of items served in a single page
|
13
|
+
maxPageSize: 100 #change maximum number of items in a single page
|
14
|
+
#pageParamName: #change name of the query parameter for selecting pages
|
15
|
+
#limitParamName: #change name of the query parameter for number of items to show in a page
|
16
|
+
#sortParamName: #change name of the query parameter for sorting
|
17
|
+
#defaultMediaType: #change default media type to use when none is specified
|
18
|
+
returnBodyOnCreate: false #change if a body should be returned on creating a new entity
|
19
|
+
returnBodyOnupdate: false #change if a body should be returned on updating an entity
|
20
|
+
<%if @repository_technique == "jpa"%>
|
21
|
+
jpa:
|
22
|
+
open-in-view: true
|
23
|
+
show-sql: true
|
24
|
+
repositories.enabled: true # if spring data repository support is enabled
|
25
|
+
|
26
|
+
<%elsif @repository_technique == "mongodb"%>
|
27
|
+
|
28
|
+
mongodb
|
29
|
+
host: localhost # the db host
|
30
|
+
port: 27017 # the connection port (defaults to 27107)
|
31
|
+
uri: mongodb://localhost/test # connection URL
|
32
|
+
database: test
|
33
|
+
#authentication-database:
|
34
|
+
#grid-fs-database:
|
35
|
+
username: test
|
36
|
+
password: test
|
37
|
+
repositories.enabled: true # if spring data repository support is enabled
|
38
|
+
|
39
|
+
|
40
|
+
<%elsif @repository_technique == "neo4j"%>
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
<%end%>
|
46
|
+
|
47
|
+
|
48
|
+
---
|
49
|
+
|
50
|
+
spring:
|
51
|
+
profiles: production
|
52
|
+
data:
|
53
|
+
rest:
|
54
|
+
basePath: / #root URI for Spring Data REST
|
55
|
+
defaultPageSize: 20 #change default number of items served in a single page
|
56
|
+
maxPageSize: 100 #change maximum number of items in a single page
|
57
|
+
#pageParamName: #change name of the query parameter for selecting pages
|
58
|
+
#limitParamName: #change name of the query parameter for number of items to show in a page
|
59
|
+
#sortParamName: #change name of the query parameter for sorting
|
60
|
+
#defaultMediaType: #change default media type to use when none is specified
|
61
|
+
returnBodyOnCreate: false #change if a body should be returned on creating a new entity
|
62
|
+
returnBodyOnupdate: false #change if a body should be returned on updating an entity
|
63
|
+
<%if @repository_technique == "jpa"%>
|
64
|
+
jpa:
|
65
|
+
open-in-view: true
|
66
|
+
show-sql: true
|
67
|
+
repositories.enabled: true # if spring data repository support is enabled
|
68
|
+
|
69
|
+
datasource:
|
70
|
+
initialize: true # populate using data.sql
|
71
|
+
sql-script-encoding: UTF-8 # a charset for reading SQL scripts
|
72
|
+
separator: ; # statement separator in SQL initialization scripts
|
73
|
+
#driver-class-name: # JDBC Settings...
|
74
|
+
#url:
|
75
|
+
#username:
|
76
|
+
#password:
|
77
|
+
#jndi-name: # For JNDI lookup (class, url, username & password are ignored when set)
|
78
|
+
#max-active:100 # Advanced configuration...
|
79
|
+
#max-idle:8
|
80
|
+
#min-idle:8
|
81
|
+
#initial-size:10
|
82
|
+
#validation-query:
|
83
|
+
|
84
|
+
<%elsif @repository_technique == "mongodb"%>
|
85
|
+
|
86
|
+
mongodb
|
87
|
+
host: localhost # the db host
|
88
|
+
port: 27017 # the connection port (defaults to 27107)
|
89
|
+
uri: mongodb://localhost/production # connection URL
|
90
|
+
database: production
|
91
|
+
#authentication-database:
|
92
|
+
#grid-fs-database:
|
93
|
+
username: production
|
94
|
+
password: production
|
95
|
+
repositories.enabled: true # if spring data repository support is enabled
|
96
|
+
|
97
|
+
|
98
|
+
<%elsif @repository_technique == "neo4j"%>
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
<%end%>
|
104
|
+
|
105
|
+
eureka:
|
106
|
+
client:
|
107
|
+
serviceUrl:
|
108
|
+
defaultZone: http://localhost:8761/eureka/
|
@@ -0,0 +1,57 @@
|
|
1
|
+
package <%=@group_id%>.assembler;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Copyright (c) 2015 <%=@user_name%>
|
5
|
+
* This program is free software; you can redistribute it and/or modify
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
7
|
+
* the Free Software Foundation; either version 3 of the License, or
|
8
|
+
* (at your option) any later version.
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
* GNU General Public License for more details.
|
13
|
+
* You should have received a copy of the GNU General Public License
|
14
|
+
* along with this program; if not, write to the Free Software Foundation,
|
15
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
*/
|
17
|
+
|
18
|
+
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
19
|
+
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
20
|
+
|
21
|
+
import <%=@group_id%>.model.<%=@model_name%>;
|
22
|
+
import <%=@group_id%>.controller.<%=@model_name%>Controller;
|
23
|
+
import <%=@group_id%>.resource.<%=@model_name%>Resource;
|
24
|
+
import org.springframework.beans.factory.annotation.Autowired;
|
25
|
+
import org.springframework.hateoas.EntityLinks;
|
26
|
+
import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
|
27
|
+
import org.springframework.stereotype.Component;
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Assembler to create <%=@model_name%> resources.
|
31
|
+
* @author <%=@user_name%>
|
32
|
+
*/
|
33
|
+
@Component
|
34
|
+
public class <%=@model_name%>Assembler extends BaseAssembler<<%=@model_name%>, <%=@model_name%>Resource> {
|
35
|
+
|
36
|
+
/**
|
37
|
+
* Creates a new {@link ResourceAssemblerSupport}
|
38
|
+
* using the given controller class and resource type.
|
39
|
+
*/
|
40
|
+
public <%=@model_name%>Assembler() {
|
41
|
+
super(<%=@model_name%>Controller.class, <%=@model_name%>Resource.class);
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
@Autowired
|
46
|
+
EntityLinks entityLinks;
|
47
|
+
|
48
|
+
|
49
|
+
@Override
|
50
|
+
public <%=@model_name%>Resource toResource(<%=@model_name%> entity) {
|
51
|
+
<%=@model_name%>Resource resource = createResource(entity);
|
52
|
+
|
53
|
+
//TODO add links
|
54
|
+
|
55
|
+
return resource;
|
56
|
+
}
|
57
|
+
}
|
@@ -0,0 +1,95 @@
|
|
1
|
+
package <%=@group_id%>.assembler;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Copyright (c) 2015 <%=@user_name%>
|
5
|
+
* This program is free software; you can redistribute it and/or modify
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
7
|
+
* the Free Software Foundation; either version 3 of the License, or
|
8
|
+
* (at your option) any later version.
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
* GNU General Public License for more details.
|
13
|
+
* You should have received a copy of the GNU General Public License
|
14
|
+
* along with this program; if not, write to the Free Software Foundation,
|
15
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
*/
|
17
|
+
|
18
|
+
import <%=@group_id%>.model.BaseEntity;
|
19
|
+
import org.springframework.beans.factory.annotation.Autowired;
|
20
|
+
import org.springframework.cloud.client.ServiceInstance;
|
21
|
+
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
|
22
|
+
import org.springframework.hateoas.Link;
|
23
|
+
import org.springframework.hateoas.ResourceSupport;
|
24
|
+
import org.springframework.hateoas.mvc.IdentifiableResourceAssemblerSupport;
|
25
|
+
import org.springframework.stereotype.Component;
|
26
|
+
|
27
|
+
import java.lang.reflect.InvocationTargetException;
|
28
|
+
|
29
|
+
/**
|
30
|
+
* A common base class for assembler.
|
31
|
+
* @author <%=@user_name%>
|
32
|
+
*/
|
33
|
+
@Component
|
34
|
+
public abstract class BaseAssembler<T extends BaseEntity, D extends ResourceSupport>
|
35
|
+
extends IdentifiableResourceAssemblerSupport<T, D> {
|
36
|
+
|
37
|
+
protected Class<D> resourceTypeClass;
|
38
|
+
|
39
|
+
public BaseAssembler(Class<?> controllerClass, Class<D> resourceType) {
|
40
|
+
super(controllerClass, resourceType);
|
41
|
+
this.resourceTypeClass = resourceType;
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
@Autowired
|
46
|
+
LoadBalancerClient loadBalancerClient;
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Adds a link for the given service to the given resource.
|
50
|
+
* @param resource the resource you want to add the link to.
|
51
|
+
* @param serviceName the name of the service.
|
52
|
+
* @param subUri the path the resource is located.
|
53
|
+
* @param ref the ref of the link.
|
54
|
+
*/
|
55
|
+
public void linkToService(ResourceSupport resource,
|
56
|
+
String serviceName,
|
57
|
+
String subUri,
|
58
|
+
String ref) {
|
59
|
+
ServiceInstance instance = loadBalancerClient.choose(serviceName);
|
60
|
+
if (instance != null) {
|
61
|
+
resource.add(new Link(instance.getUri().toString() + "/" + subUri,ref));
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
/**
|
66
|
+
* Adds a link for the given service to the given resource.
|
67
|
+
* @param resource the resource you want to add the link to.
|
68
|
+
* @param serviceName the name of the service.
|
69
|
+
* @param ref the ref of the link.
|
70
|
+
*/
|
71
|
+
public void linkToService(ResourceSupport resource,
|
72
|
+
String serviceName,
|
73
|
+
String ref) {
|
74
|
+
ServiceInstance instance = loadBalancerClient.choose(serviceName);
|
75
|
+
if (instance != null) {
|
76
|
+
resource.add(new Link(instance.getUri().toString(),ref));
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
|
81
|
+
@Override
|
82
|
+
protected D instantiateResource(T entity) {
|
83
|
+
try {
|
84
|
+
return resourceTypeClass
|
85
|
+
.getConstructor(entity.getClass())
|
86
|
+
.newInstance(entity);
|
87
|
+
} catch (InvocationTargetException
|
88
|
+
| NoSuchMethodException
|
89
|
+
| InstantiationException
|
90
|
+
| IllegalAccessException e) {
|
91
|
+
throw new RuntimeException(
|
92
|
+
"Resource does not have an appropriate constructor!", e);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}
|