Skip to content

Commit

Permalink
Merge pull request #14 from SchwarzIT/feature/kotlinPrepare
Browse files Browse the repository at this point in the history
Feature/kotlin prepare
  • Loading branch information
sbra0902 authored Jul 18, 2019
2 parents 359a2f4 + c701724 commit 0fc2a9a
Show file tree
Hide file tree
Showing 31 changed files with 373 additions and 474 deletions.
12 changes: 10 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.3.40'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Expand All @@ -24,6 +26,12 @@ allprojects {
}
}

task clean(type: Delete) {
delete rootProject.buildDir
apply plugin: 'kotlin'


repositories {
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}
24 changes: 24 additions & 0 deletions couchbase-entity-api/build.gradle
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'maven'

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}

targetCompatibility = '1.7'
Expand All @@ -22,4 +24,26 @@ task javadocJar(type: Jar, dependsOn: javadoc) {
artifacts {
archives sourcesJar
archives javadocJar
}
buildscript {
ext.kotlin_version = '1.3.41'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
repositories {
mavenCentral()
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package kaufland.com.coachbasebinderapi;

import java.lang.reflect.Array;
import java.util.Map;
import java.util.stream.Stream;

public class DefaultValue {

private static final Double DOUBLE_DEFAULT = Double.valueOf(0d);
private static final Float FLOAT_DEFAULT = Float.valueOf(0f);

public static <T> T get(Class<T> type) {
if (type == boolean.class) {
return (T) Boolean.FALSE;
} else if (type == char.class) {
return (T) Character.valueOf('\0');
} else if (type == byte.class) {
return (T) Byte.valueOf((byte) 0);
} else if (type == short.class) {
return (T) Short.valueOf((short) 0);
} else if (type == int.class) {
return (T) Integer.valueOf(0);
} else if (type == long.class) {
return (T) Long.valueOf(0L);
} else if (type == float.class) {
return (T) FLOAT_DEFAULT;
} else if (type == double.class) {
return (T) DOUBLE_DEFAULT;
} else {
return null;
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package kaufland.com.coachbasebinderapi

import com.sun.org.apache.xpath.internal.operations.Bool
import java.lang.annotation.RetentionPolicy


import kotlin.reflect.KClass

@Retention(AnnotationRetention.BINARY)
annotation class Field(val name: String = "", val type: KClass<out Any>, val list: Boolean = false, val defaultValue: String = "", val readonly: Boolean = false)
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import java.lang.annotation.Target;

@Retention(RetentionPolicy.CLASS)
@Target(ElementType.FIELD)
public @interface Default {
@Target({ElementType.TYPE})
public @interface Fields {

String value() default "";
Field[] value() default {};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package kaufland.com.coachbasebinderapi

interface MapSupport {

fun toMap(): Map<String, Any>?
}
24 changes: 24 additions & 0 deletions couchbase-entity/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'maven'
apply plugin: 'jacoco'
apply plugin: 'pmd'
Expand All @@ -13,6 +14,7 @@ dependencies {
testImplementation 'junit:junit:4.12'
testImplementation 'com.google.truth:truth:0.33'
testImplementation 'org.mockito:mockito-core:1.10.19'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

}

Expand Down Expand Up @@ -44,6 +46,28 @@ artifacts {
archives sourcesJar
archives javadocJar
}
buildscript {
ext.kotlin_version = '1.3.41'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
repositories {
mavenCentral()
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}



Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,10 @@ private void validateAndProcess(Collection<Element> elements, EntityProcessor pr
}

} catch (ClassNotFoundException e) {
mLogger.abortWithError("Clazz not found", elem);
mLogger.abortWithError("Clazz not found", elem, e);
} catch (Exception e) {
e.printStackTrace();
mLogger.abortWithError("generation failed", elem);
mLogger.abortWithError("generation failed", elem, e);
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions couchbase-entity/src/main/java/com/kaufland/Logger.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ public void error(String msg, Element e) {
messager.printMessage(Diagnostic.Kind.ERROR, msg, e);
}

public void abortWithError(String msg, Element e) {
public void abortWithError(String msg, Element e, Throwable ex) {
error(msg, e);
throw new RuntimeException();
throw new RuntimeException(ex);
}

public boolean hasErrors() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.thoughtworks.qdox.model.JavaField;

import javax.lang.model.element.Modifier;
import javax.lang.model.type.TypeMirror;

public class CblDefaultGeneration {

Expand All @@ -21,16 +22,16 @@ public static CodeBlock staticInitialiser(BaseEntityHolder holder) {
CodeBlock.Builder builder = CodeBlock.builder();
for (CblFieldHolder fieldHolder : holder.getFields()) {

if (fieldHolder.getDefaultHolder() != null) {
builder.addStatement("mDocDefaults.put($N, " + getConvertedValue(fieldHolder.getMetaField(), fieldHolder.getDefaultHolder().getDefaultValue())+")", fieldHolder.getConstantName());
if (fieldHolder.isDefault()) {
builder.addStatement("mDocDefaults.put($N, " + getConvertedValue(fieldHolder.getTypeMirror(), fieldHolder.getDefaultValue())+")", fieldHolder.getConstantName());
}
}
return builder.build();
}

private static String getConvertedValue(JavaField mMetaField, String value) {
private static String getConvertedValue(TypeMirror clazz, String value) {

if (mMetaField.getType().getCanonicalName().equals(String.class.getCanonicalName())) {
if (clazz.toString().equals(String.class.getCanonicalName())) {
return "\"" + value + "\"";
}
return value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.kaufland.model.field.CblBaseFieldHolder;
import com.kaufland.model.field.CblConstantHolder;
import com.kaufland.util.TypeUtil;
import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.CodeBlock;
import com.squareup.javapoet.FieldSpec;
import com.squareup.javapoet.JavaFile;
Expand All @@ -16,6 +17,7 @@

import javax.lang.model.element.Modifier;

import kaufland.com.coachbasebinderapi.MapSupport;
import kaufland.com.coachbasebinderapi.PersistenceConfig;
import kaufland.com.coachbasebinderapi.PersistenceException;

Expand All @@ -32,6 +34,7 @@ public JavaFile generateModel(EntityHolder holder) {

TypeSpec.Builder typeBuilder = TypeSpec.classBuilder(holder.getEntitySimpleName()).
addModifiers(Modifier.PUBLIC).
addSuperinterface(TypeUtil.createMapSupportObject()).
addField(CblDefaultGeneration.field()).
addField(TypeUtil.createMapStringObject(), "mDoc", Modifier.PRIVATE).
addField(TypeUtil.createMapStringObject(), "mDocChanges", Modifier.PRIVATE).
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.kaufland.generation;

import com.kaufland.model.entity.BaseEntityHolder;
import com.kaufland.util.TypeUtil;
import com.squareup.javapoet.MethodSpec;

import javax.lang.model.element.Modifier;

public class MapSupportGeneration {

public static MethodSpec toMap(BaseEntityHolder holder) {
MethodSpec.Builder toMapBuilder = MethodSpec.methodBuilder("toMap").addModifiers(Modifier.PUBLIC).
returns(TypeUtil.createMapStringObject()).
addStatement("return toMap(this)");

return toMapBuilder.build();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@ public class WrapperGeneration {
public JavaFile generateModel(WrapperEntityHolder holder) {

TypeSpec.Builder typeBuilder = TypeSpec.classBuilder(holder.getEntitySimpleName()).
addSuperinterface(TypeUtil.createMapSupportObject()).
addModifiers(Modifier.PUBLIC).
addField(CblDefaultGeneration.field()).
addMethod(MapSupportGeneration.toMap(holder)).
addMethods(create(holder)).
addField(TypeUtil.createMapStringObject(), "mDoc", Modifier.PRIVATE).
addMethod(contructor()).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,16 @@

import com.kaufland.ElementMetaModel;
import com.kaufland.model.entity.BaseEntityHolder;
import com.kaufland.model.entity.WrapperEntityHolder;
import com.kaufland.model.entity.EntityHolder;
import com.kaufland.model.entity.WrapperEntityHolder;
import com.kaufland.model.field.CblConstantHolder;
import com.kaufland.model.field.CblDefaultHolder;
import com.kaufland.model.field.CblFieldHolder;
import com.thoughtworks.qdox.model.JavaField;

import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;

import kaufland.com.coachbasebinderapi.Constant;
import kaufland.com.coachbasebinderapi.Default;
import kaufland.com.coachbasebinderapi.Entity;
import kaufland.com.coachbasebinderapi.Field;
import kaufland.com.coachbasebinderapi.Fields;

public class EntityFactory {

Expand All @@ -32,30 +28,20 @@ private static BaseEntityHolder create(Element cblEntityElement, ElementMetaMode

content.setSourceElement(cblEntityElement);

for (Element element : cblEntityElement.getEnclosedElements()) {

if (element.getKind() == ElementKind.FIELD) {
Fields fields = cblEntityElement.getAnnotation(Fields.class);

JavaField metaField = metaModel.getMetaFor(cblEntityElement).getFieldByName(element.getSimpleName().toString());

Field cblField = element.getAnnotation(Field.class);
Constant cblConstant = element.getAnnotation(Constant.class);
Default cblDefault = element.getAnnotation(Default.class);
for (Field cblField : fields.value()) {

if (cblField == null && cblConstant == null) {
continue;
}

if (cblField != null) {

CblDefaultHolder defaultHolder = cblDefault != null ? new CblDefaultHolder(cblDefault.value()) : null;
CblFieldHolder cblFieldHolder = new CblFieldHolder(cblField, element, metaField, defaultHolder, metaModel);
content.getFields().add(cblFieldHolder);
}
if (cblField == null) {
continue;
}

if (cblConstant != null) {
content.getFieldConstants().add(new CblConstantHolder(cblConstant, element, metaField));
}
if (cblField.readonly()) {
content.getFieldConstants().add(new CblConstantHolder(cblField));
} else {
CblFieldHolder cblFieldHolder = new CblFieldHolder(cblField, metaModel);
content.getFields().add(cblFieldHolder);
}
}

Expand Down
Loading

0 comments on commit 0fc2a9a

Please sign in to comment.