From 69f69a8113207f958b1cdc2a2dd21a19af0974b7 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Tue, 8 Apr 2025 10:27:30 +0200 Subject: [PATCH] [FIX] Double and double inclution generate a double inclusion in Typescript generation --- .../archidata/externalRestApi/model/ClassModel.java | 6 +++--- .../externalRestApi/typescript/TsClassElement.java | 11 ++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/org/kar/archidata/externalRestApi/model/ClassModel.java b/src/org/kar/archidata/externalRestApi/model/ClassModel.java index 994be09..c7a9633 100644 --- a/src/org/kar/archidata/externalRestApi/model/ClassModel.java +++ b/src/org/kar/archidata/externalRestApi/model/ClassModel.java @@ -3,7 +3,7 @@ package org.kar.archidata.externalRestApi.model; import java.io.IOException; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; -import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -18,7 +18,7 @@ public abstract class ClassModel { protected boolean analyzeDone = false; protected Class originClasses = null; protected ApiGenerationMode apiGenerationMode = AnnotationCreator.createAnnotation(ApiGenerationMode.class); - protected List dependencyModels = new ArrayList<>(); + protected Set dependencyModels = new HashSet<>(); public Class getOriginClasses() { return this.originClasses; @@ -32,7 +32,7 @@ public abstract class ClassModel { return this.originClasses == clazz; } - public List getDependencyModels() { + public Set getDependencyModels() { return this.dependencyModels; } diff --git a/src/org/kar/archidata/externalRestApi/typescript/TsClassElement.java b/src/org/kar/archidata/externalRestApi/typescript/TsClassElement.java index 53d8f5c..1cf1d25 100644 --- a/src/org/kar/archidata/externalRestApi/typescript/TsClassElement.java +++ b/src/org/kar/archidata/externalRestApi/typescript/TsClassElement.java @@ -6,8 +6,10 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.HashSet; import java.util.List; import java.util.Map.Entry; +import java.util.Set; import org.kar.archidata.externalRestApi.model.ClassEnumModel; import org.kar.archidata.externalRestApi.model.ClassListModel; @@ -176,11 +178,18 @@ public class TsClassElement { this.zodName + appendString); } - public String generateImports(final List depModels, final TsClassElementGroup tsGroup) + public String generateImports(final Set depModels, final TsClassElementGroup tsGroup) throws IOException { + final Set typeScriptModelAlreadyImported = new HashSet<>(); + final StringBuilder out = new StringBuilder(); for (final ClassModel depModel : depModels) { final TsClassElement tsModel = tsGroup.find(depModel); + if (typeScriptModelAlreadyImported.contains(tsModel)) { + LOGGER.trace("Model alredy imported for typescript"); + continue; + } + typeScriptModelAlreadyImported.add(tsModel); if (tsModel.nativeType != DefinedPosition.NATIVE) { out.append("import {"); if (tsModel.nativeType != DefinedPosition.NORMAL