diff --git a/README.md b/README.md
index 37227d41fb..6937ee468a 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
-accurest
-========
+Accurate REST
+=============
+Consumer Driven Contracts verifier for Java
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 470bfc2b8f..76c45c3fb3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,8 +4,8 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- eu.codearte.contract-keeper
- contract-keeper
+ eu.codearte.accurest
+ accurest
1.0.0-SNAPSHOT
diff --git a/src/main/groovy/eu/coderate/accurest/Generator.groovy b/src/main/groovy/eu/coderate/accurest/Generator.groovy
new file mode 100644
index 0000000000..c8f875643e
--- /dev/null
+++ b/src/main/groovy/eu/coderate/accurest/Generator.groovy
@@ -0,0 +1,19 @@
+package eu.coderate.accurest
+
+import static eu.coderate.accurest.builder.ClassBuilder.createClass
+import static eu.coderate.accurest.builder.MethodBuilder.createVoidMethod
+
+class Generator {
+
+ public static void main(String[] args) {
+ print createClass('MyTest', 'io.test', "com.test.BaseClass")
+ .addImport('org.junit.Test')
+ .addImport('org.junit.Rule')
+ .addStaticImport('org.hamcrest.Matchers.*')
+ .addStaticImport('com.jayway.restassured.RestAssured.*')
+ .addStaticImport('com.jayway.restassured.matcher.RestAssuredMatchers.*')
+ .addRule('com.test.MyRule')
+ .addMethod(createVoidMethod('shouldInvokeService'))
+ .build()
+ }
+}
\ No newline at end of file
diff --git a/src/main/groovy/eu/coderate/ck/builder/BlockBuilder.groovy b/src/main/groovy/eu/coderate/accurest/builder/BlockBuilder.groovy
similarity index 95%
rename from src/main/groovy/eu/coderate/ck/builder/BlockBuilder.groovy
rename to src/main/groovy/eu/coderate/accurest/builder/BlockBuilder.groovy
index dd8b4114e0..3d159f139c 100644
--- a/src/main/groovy/eu/coderate/ck/builder/BlockBuilder.groovy
+++ b/src/main/groovy/eu/coderate/accurest/builder/BlockBuilder.groovy
@@ -1,4 +1,4 @@
-package eu.coderate.ck.builder
+package eu.coderate.accurest.builder
import groovy.transform.PackageScope
diff --git a/src/main/groovy/eu/coderate/ck/builder/ClassBuilder.groovy b/src/main/groovy/eu/coderate/accurest/builder/ClassBuilder.groovy
similarity index 52%
rename from src/main/groovy/eu/coderate/ck/builder/ClassBuilder.groovy
rename to src/main/groovy/eu/coderate/accurest/builder/ClassBuilder.groovy
index 1d53705e21..ad517a5c96 100644
--- a/src/main/groovy/eu/coderate/ck/builder/ClassBuilder.groovy
+++ b/src/main/groovy/eu/coderate/accurest/builder/ClassBuilder.groovy
@@ -1,4 +1,6 @@
-package eu.coderate.ck.builder
+package eu.coderate.accurest.builder
+
+import eu.coderate.accurest.util.NamesUtil
/**
* @author Jakub Kubrynski
@@ -7,17 +9,27 @@ class ClassBuilder {
private final String className
private final String packageName
+ private final String baseClass
private final List imports = []
private final List staticImports = []
+ private final List rules = []
private final List methods = []
- private ClassBuilder(String className, String packageName) {
+ private ClassBuilder(String className, String packageName, String baseClass) {
+ if (baseClass) {
+ imports << baseClass
+ }
+ this.baseClass = NamesUtil.getName(baseClass)
this.packageName = packageName
this.className = className
}
static ClassBuilder createClass(String className, String packageName) {
- return new ClassBuilder(className, packageName)
+ return createClass(className, packageName, null)
+ }
+
+ static ClassBuilder createClass(String className, String packageName, String baseClass) {
+ return new ClassBuilder(className, packageName, baseClass)
}
ClassBuilder addImport(String importToAdd) {
@@ -35,20 +47,40 @@ class ClassBuilder {
return this
}
+ ClassBuilder addRule(String ruleClass) {
+ imports << ruleClass
+ rules << NamesUtil.getName(ruleClass)
+ return this
+ }
+
String build() {
BlockBuilder clazz = new BlockBuilder(" ")
.addLine("package $packageName;")
.addEmptyLine()
+
imports.sort().each {
clazz.addLine("import $it;")
}
clazz.addEmptyLine()
+
staticImports.sort().each {
clazz.addLine("static import $it;")
}
clazz.addEmptyLine()
- clazz.addLine("public class $className {")
+ def classLine = "public class $className"
+ if (baseClass) {
+ classLine += " extends $baseClass"
+ }
+ clazz.addLine(classLine + ' {')
+ clazz.addEmptyLine()
+
+ clazz.startBlock()
+ rules.sort().each {
+ clazz.addLine("@Rule")
+ clazz.addLine("public " + it + " " + NamesUtil.fieldName(it) + " = new $it();")
+ }
+ clazz.endBlock()
clazz.addEmptyLine()
methods.each {
diff --git a/src/main/groovy/eu/coderate/ck/builder/MethodBuilder.groovy b/src/main/groovy/eu/coderate/accurest/builder/MethodBuilder.groovy
similarity index 93%
rename from src/main/groovy/eu/coderate/ck/builder/MethodBuilder.groovy
rename to src/main/groovy/eu/coderate/accurest/builder/MethodBuilder.groovy
index 53d8e3e987..c98d8757f1 100644
--- a/src/main/groovy/eu/coderate/ck/builder/MethodBuilder.groovy
+++ b/src/main/groovy/eu/coderate/accurest/builder/MethodBuilder.groovy
@@ -1,4 +1,4 @@
-package eu.coderate.ck.builder
+package eu.coderate.accurest.builder
/**
* @author Jakub Kubrynski
diff --git a/src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy b/src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy
new file mode 100644
index 0000000000..ff9215477a
--- /dev/null
+++ b/src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy
@@ -0,0 +1,22 @@
+package eu.coderate.accurest.util
+
+/**
+ * @author Jakub Kubrynski
+ */
+class NamesUtil {
+ static String getName(String qualifiedName) {
+ if (qualifiedName?.indexOf('.') > -1) {
+ return qualifiedName.substring(qualifiedName.lastIndexOf('.')+1)
+ }
+ return qualifiedName
+ }
+
+ static String fieldName(String className) {
+ if (className) {
+ return className
+ }
+ String name = getName(className)
+ String firstChar = name.charAt(0).toLowerCase() as String
+ return firstChar + name.substring(1)
+ }
+}
diff --git a/src/main/groovy/eu/coderate/ck/Generator.groovy b/src/main/groovy/eu/coderate/ck/Generator.groovy
deleted file mode 100644
index 2eb6e37959..0000000000
--- a/src/main/groovy/eu/coderate/ck/Generator.groovy
+++ /dev/null
@@ -1,16 +0,0 @@
-package eu.coderate.ck
-
-import static eu.coderate.ck.builder.ClassBuilder.createClass
-import static eu.coderate.ck.builder.MethodBuilder.createVoidMethod
-
-class Generator {
-
- public static void main(String[] args) {
- print createClass('MyTest', 'io.test')
- .addImport('org.junit.Test')
- .addStaticImport('org.hamcrest.CoreMatchers.*')
- .addStaticImport('com.jayway.restassured.RestAssured.*')
- .addMethod(createVoidMethod('shouldInvokeService'))
- .build()
- }
-}
\ No newline at end of file