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