Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: a6757019 by Tony Chemit at 2020-08-15T12:19:54+02:00 Improve javaBean on entities (let's generate everything \o/) - - - - - 2 changed files: - − persistence/src/main/java/fr/ird/observe/entities/EntityImpl.java - templates/src/main/java/fr/ird/observe/toolkit/templates/entity/EntityTransformer.java Changes: ===================================== persistence/src/main/java/fr/ird/observe/entities/EntityImpl.java deleted ===================================== @@ -1,46 +0,0 @@ -package fr.ird.observe.entities; - -/*- - * #%L - * ObServe :: Persistence - * %% - * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io - * %% - * 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, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - - -import io.ultreia.java4all.bean.definition.JavaBeanDefinition; -import io.ultreia.java4all.bean.definition.JavaBeanDefinitionStore; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public abstract class EntityImpl extends EntityAbstract { - - private static final long serialVersionUID = 1L; - private static final Logger log = LogManager.getLogger(EntityImpl.class); - private JavaBeanDefinition javaBeanDefinition; - - @Override - public JavaBeanDefinition javaBeanDefinition() { - if (javaBeanDefinition == null) { - Class<? extends Entity> contractClass = ObserveEntityEnum.getContractClass(getClass()); - javaBeanDefinition = JavaBeanDefinitionStore.getDefinition(contractClass).orElseThrow(IllegalStateException::new); - log.info(String.format("Loaded javaBean definition for: %s → %s", contractClass.getName(), javaBeanDefinition)); - } - return javaBeanDefinition; - } -} ===================================== templates/src/main/java/fr/ird/observe/toolkit/templates/entity/EntityTransformer.java ===================================== @@ -40,6 +40,7 @@ import fr.ird.observe.spi.context.ReferentialDtoEntityContext; import fr.ird.observe.spi.mapping.DtoToEntityContextMapping; import fr.ird.observe.spi.mapping.EntityToDtoClassMapping; import fr.ird.observe.toolkit.templates.TemplateContract; +import io.ultreia.java4all.bean.definition.JavaBeanDefinitionStore; import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition; import io.ultreia.java4all.classmapping.ImmutableClassMapping; import io.ultreia.java4all.lang.Strings; @@ -369,6 +370,9 @@ public class EntityTransformer extends TopiaEntityTransformer implements Templat } } } + if (!input.isAbstract()) { + generateJavaBeanMethods(); + } generateInterfaceUsageConstant(input); } @@ -668,6 +672,21 @@ public class EntityTransformer extends TopiaEntityTransformer implements Templat return result.toString(); } + private void generateJavaBeanMethods() { + + // add JavaBeanDefinition constant + String javaBeanDefinition = outputInterface.getName()+"JavaBeanDefinition"; + addImport(outputInterface, JavaBeanDefinitionStore.class); + addConstant(outputInterface, "JAVA_BEAN_DEFINITION", javaBeanDefinition, "JavaBeanDefinitionStore.definition("+javaBeanDefinition+".class)",ObjectModelJavaModifier.PUBLIC); + + // add JavaBean method + ObjectModelOperation operation = addOperation(outputInterface, "javaBeanDefinition", javaBeanDefinition, ObjectModelJavaModifier.DEFAULT); + setOperationBody(operation, ""/*{ + return JAVA_BEAN_DEFINITION; + }*/); + addAnnotation(outputInterface, operation, Override.class); + } + private void generateSpiDelegateMethods(boolean referential, String daoName) { List<Method> methods = Arrays.stream((referential ? ReferentialDtoEntityContext.class : DataDtoEntityContext.class).getMethods()).filter(method -> { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/a6757019cf4b45628c3fc8a000... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/a6757019cf4b45628c3fc8a000... You're receiving this email because of your account on gitlab.com.