This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit ccf7cdaaaae95996fab5c36d6e04f66e4325a6b6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 22 17:39:16 2016 +0200 use new tagvalue java8 in Simple JavaBean transformer --- .../SimpleJavaBeanWithNoInterfaceTransformer.java | 157 +++++++++++++-------- 1 file changed, 102 insertions(+), 55 deletions(-) diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java index f30c2f5..b08e8c3 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java @@ -26,10 +26,8 @@ package org.nuiton.eugene.java; /*{generator option: writeString = +}*/ import com.google.common.base.Function; -import com.google.common.base.Predicate; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; import com.google.common.collect.Maps; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -49,7 +47,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.Objects; /** * Generates a java bean and a utility class around it. This transformer acts like {@link SimpleJavaBeanTransformer} @@ -79,11 +76,13 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr ImmutableSet<ObjectModelClass> beanClasses; ImmutableSet<ObjectModelClass> beanDefaultClasses; + protected boolean useJava8; @Override public void transformFromModel(ObjectModel model) { super.transformFromModel(model); + useJava8 = isUseJava8(); ImmutableMap.Builder<ObjectModelClass, String> beanNameTranslationBuilder = new ImmutableMap.Builder<>(); ImmutableMap.Builder<ObjectModelClass, String> beanDefaultsNameTranslationBuilder = new ImmutableMap.Builder<>(); ImmutableSet.Builder<ObjectModelClass> beanClassesBuilder = new ImmutableSet.Builder<>(); @@ -503,17 +502,30 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr String capitalizeAttrName = JavaGeneratorUtil.capitalizeJavaBeanPropertyName(attrName); String newPreficateMethodName = "new" + capitalizeAttrName + "Predicate"; - ObjectModelOperation operation = addOperation( - output, - newPreficateMethodName, - "<BeanType extends " + typeName + "> Predicate<BeanType>", - ObjectModelJavaModifier.STATIC, - ObjectModelJavaModifier.PUBLIC - ); - addParameter(operation, simpleType, attrName); - String getterName = getGetterName(attribute, attrName); - setOperationBody(operation, "" + ObjectModelOperation operation; + + + + operation = addOperation( + output, + newPreficateMethodName, + "<BeanType extends " + typeName + "> Predicate<BeanType>", + ObjectModelJavaModifier.STATIC, + ObjectModelJavaModifier.PUBLIC + ); + addParameter(operation, simpleType, attrName); + String getterName = getGetterName(attribute, attrName); + + if (useJava8) { + setOperationBody(operation, "" + /*{ + return o -> Objects.equals(<%=attrName%>, o.<%=getterName%>()); + + }*/ + ); + } else { + setOperationBody(operation, "" /*{ final <%=simpleType%> $tmp = <%=attrName%>; return new Predicate<BeanType>() { @@ -525,29 +537,48 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr }; }*/ - ); + ); + } operation = addOperation( output, "filterBy" + capitalizeAttrName, - "<BeanType extends " + typeName + "> Iterable<BeanType>", + "<BeanType extends " + typeName + "> List<BeanType>", ObjectModelJavaModifier.STATIC, ObjectModelJavaModifier.PUBLIC ); - addParameter(operation, "Iterable<BeanType>", "source"); + addParameter(operation, "Collection<BeanType>", "source"); addParameter(operation, simpleType, attrName); - setOperationBody(operation, "" + + if (useJava8) { + setOperationBody(operation, "" + /*{ + return source.stream().filter(<%=newPreficateMethodName%>(<%=attrName%>)).collect(Collectors.toList()); + }*/ + ); + } else { + setOperationBody(operation, "" /*{ return Iterables.filter(source, <%=newPreficateMethodName%>(<%=attrName%>)); }*/ - ); + ); + } } if (atLeastOnePropertyFound) { - addImport(output, Predicate.class); - addImport(output, Objects.class); + if(useJava8) { + + addImport(output, Collection.class); + addImport(output, List.class); + addImport(output, "java.util.Objects"); + addImport(output, "java.util.function.Predicate"); + addImport(output, "java.util.stream.Collectors"); + } else { + addImport(output, com.google.common.base.Objects.class); + addImport(output, com.google.common.base.Predicate.class); + addImport(output, com.google.common.collect.Iterables.class); + } addImport(output, Iterable.class); - addImport(output, Iterables.class); } } @@ -572,6 +603,7 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr String simpleType = JavaGeneratorUtil.getSimpleName(attrType); simpleType = wrapPrimitiveType(simpleType); String capitalizeAttrName = JavaGeneratorUtil.capitalizeJavaBeanPropertyName(attrName); + String getterName = getGetterName(attribute, attrName); String newFunctionMethodName = "new" + capitalizeAttrName + "Function"; String getFunctionMethodName = "get" + capitalizeAttrName + "Function"; @@ -582,52 +614,52 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr output, functionFieldName, "Function<" + typeName + ", " + simpleType + ">", - newFunctionMethodName + "()", + useJava8 ? typeName + "::" + getterName : newFunctionMethodName + "()", ObjectModelJavaModifier.FINAL, ObjectModelJavaModifier.STATIC, ObjectModelJavaModifier.PROTECTED ); - - ObjectModelOperation operation = addOperation( - output, - getFunctionMethodName, - "<BeanType extends " + typeName + "> " + functionTypeName, - ObjectModelJavaModifier.STATIC, - ObjectModelJavaModifier.PUBLIC - ); + if (!useJava8) { + ObjectModelOperation operation = addOperation( + output, + getFunctionMethodName, + "<BeanType extends " + typeName + "> " + functionTypeName, + ObjectModelJavaModifier.STATIC, + ObjectModelJavaModifier.PUBLIC + ); - setOperationBody(operation, "" + setOperationBody(operation, "" /*{ return (<%=functionTypeName%>) <%=functionFieldName%>; }*/ - ); + ); - operation = addOperation( - output, - newFunctionMethodName, - "<BeanType extends " + typeName + "> " + functionTypeName, - ObjectModelJavaModifier.STATIC, - ObjectModelJavaModifier.PUBLIC - ); + operation = addOperation( + output, + newFunctionMethodName, + "<BeanType extends " + typeName + "> " + functionTypeName, + ObjectModelJavaModifier.STATIC, + ObjectModelJavaModifier.PUBLIC + ); - String getterName = getGetterName(attribute, attrName); - setOperationBody(operation, "" - /*{ - return new <%=functionTypeName%>() { + setOperationBody(operation, "" +/*{ + return new <%=functionTypeName%>() { - @Override - public <%=simpleType%> apply(BeanType input) { - return input.<%=getterName%>(); - } - }; + @Override + public <%=simpleType%> apply(BeanType input) { + return input.<%=getterName%>(); + } + }; - }*/ - ); +}*/ + ); + } - operation = addOperation( + ObjectModelOperation operation = addOperation( output, "uniqueIndexBy" + capitalizeAttrName, "<BeanType extends " + typeName + "> ImmutableMap<" + simpleType + ", BeanType>", @@ -635,16 +667,31 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr ObjectModelJavaModifier.PUBLIC ); addParameter(operation, "Iterable<BeanType>", "source"); - setOperationBody(operation, "" + if (useJava8) { + setOperationBody(operation, "" + /*{ + return Maps.uniqueIndex(source, <%=functionFieldName%>::apply); + }*/ + ); + } else { + setOperationBody(operation, "" /*{ return Maps.uniqueIndex(source, <%=functionFieldName%>); }*/ - ); + ); + } } if (atLeastOnePropertyFound) { - addImport(output, Function.class); - addImport(output, Objects.class); + if (useJava8) { + addImport(output, "java.util.function.Function"); + addImport(output, "java.util.Objects"); + } else { + addImport(output, com.google.common.base.Function.class); + addImport(output, com.google.common.collect.Iterables.class); + addImport(output, com.google.common.base.Objects.class); + } + addImport(output, ImmutableMap.class); addImport(output, Iterable.class); addImport(output, Maps.class); -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.