From 8d1860978e22c0265f92adaa374d2625b8570c10 Mon Sep 17 00:00:00 2001 From: Benjamin Amos Date: Tue, 15 Apr 2025 20:45:34 +0100 Subject: [PATCH 1/2] temp: gestalt-di migration changes --- .../terasology/gestalt/di/DefaultBeanContext.java | 2 +- gestalt-inject-java/build.gradle | 2 +- .../processing/BeanDefinitionProcessor.java | 15 +++++++++++---- .../org/terasology/gestalt/naming/Version.java | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/gestalt-di/src/main/java/org/terasology/gestalt/di/DefaultBeanContext.java b/gestalt-di/src/main/java/org/terasology/gestalt/di/DefaultBeanContext.java index 8adba7e7..0aeefef1 100644 --- a/gestalt-di/src/main/java/org/terasology/gestalt/di/DefaultBeanContext.java +++ b/gestalt-di/src/main/java/org/terasology/gestalt/di/DefaultBeanContext.java @@ -358,7 +358,7 @@ public BeanEnvironment getEnvironment() { @Override public void close() throws Exception { for (Object o : this.boundObjects.values()) { - if (o instanceof AutoCloseable) { + if (o instanceof AutoCloseable && o != this) { try { ((AutoCloseable) o).close(); } catch (Exception e) { diff --git a/gestalt-inject-java/build.gradle b/gestalt-inject-java/build.gradle index aa89eaec..25bc6829 100644 --- a/gestalt-inject-java/build.gradle +++ b/gestalt-inject-java/build.gradle @@ -17,7 +17,7 @@ dependencies { testImplementation "ch.qos.logback:logback-classic:$logback_version" testImplementation "org.mockito:mockito-core:$mockito_version" - implementation 'com.squareup:javapoet:1.12.0' + implementation 'com.squareup:javapoet:1.13.0' implementation group: 'javax.inject', name: 'javax.inject', version: '1' implementation project(":gestalt-inject"); } diff --git a/gestalt-inject-java/src/main/java/org/terasology/gestalt/annotation/processing/BeanDefinitionProcessor.java b/gestalt-inject-java/src/main/java/org/terasology/gestalt/annotation/processing/BeanDefinitionProcessor.java index 7dd6e475..5cda9c46 100644 --- a/gestalt-inject-java/src/main/java/org/terasology/gestalt/annotation/processing/BeanDefinitionProcessor.java +++ b/gestalt-inject-java/src/main/java/org/terasology/gestalt/annotation/processing/BeanDefinitionProcessor.java @@ -175,15 +175,22 @@ public Object visitType(TypeElement e, String className) { return super.visitType(e, className); } - private Object getValue(Object target) { + private Object getValue(TypeMirror type, Object target) { Object result; if (target instanceof String) { result = String.format("\"%s\"", target); + } else if (target instanceof List) { + if (((List) target).isEmpty()) { + result = "new " + type + "{}"; + } else { + result = target; + } + } else if (type.getKind() == TypeKind.DECLARED && ((DeclaredType) type).asElement().getKind() == ElementKind.ENUM) { + result = type + "." + target; } else { result = target; } return result; - } private List buildAnnotationValues(List mirrors) { @@ -198,7 +205,7 @@ private List buildAnnotationValues(List m ExecutableElement executableElement = (ExecutableElement) element; AnnotationValue value = executableElement.getDefaultValue(); if (value != null) { - defaults.add(CodeBlock.of("$S,$L", executableElement.getSimpleName(), getValue(value.getValue()))); + defaults.add(CodeBlock.of("$S,$L", executableElement.getSimpleName(), getValue(executableElement.getReturnType(), value.getValue()))); } } } @@ -207,7 +214,7 @@ private List buildAnnotationValues(List m ExecutableElement executableElement = entry.getKey(); AnnotationValue value = entry.getValue(); if (value != null) { - values.add(CodeBlock.of("$S,$L", executableElement.getSimpleName(), getValue(value.getValue()))); + values.add(CodeBlock.of("$S,$L", executableElement.getSimpleName(), getValue(executableElement.asType(), value.getValue()))); } } diff --git a/gestalt-module/src/main/java/org/terasology/gestalt/naming/Version.java b/gestalt-module/src/main/java/org/terasology/gestalt/naming/Version.java index ff9063ce..da4cf09e 100644 --- a/gestalt-module/src/main/java/org/terasology/gestalt/naming/Version.java +++ b/gestalt-module/src/main/java/org/terasology/gestalt/naming/Version.java @@ -102,7 +102,7 @@ public int getPatch() { * @return Whether this version is a snapshot (work in progress) */ public boolean isSnapshot() { - return !semver.preReleaseVersion().isEmpty(); + return semver.preReleaseVersion().isPresent(); } public Version getSnapshot() { From 2d99dbb3de717d22460be5727f221d912908e46d Mon Sep 17 00:00:00 2001 From: Rasmus Praestholm Date: Sun, 14 Dec 2025 10:02:17 -0500 Subject: [PATCH 2/2] fix: potentially address subtle bug with file paths getting a trailing slash (#161) --- .../module/resources/ClasspathFileSource.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/gestalt-module/src/main/java/org/terasology/gestalt/module/resources/ClasspathFileSource.java b/gestalt-module/src/main/java/org/terasology/gestalt/module/resources/ClasspathFileSource.java index 1ad7716b..76af8202 100644 --- a/gestalt-module/src/main/java/org/terasology/gestalt/module/resources/ClasspathFileSource.java +++ b/gestalt-module/src/main/java/org/terasology/gestalt/module/resources/ClasspathFileSource.java @@ -102,7 +102,7 @@ public Optional getFile(List filepath) { if (filepath.stream().anyMatch(s -> s.equals(".."))) { return Optional.empty(); } - String fullpath = buildPathString(filepath); + String fullpath = buildPathString(filepath, false); if (classLoader.getResource(fullpath) != null) { return Optional.of(new ClasspathSourceFileReference(fullpath, extractSubpath(basePath, fullpath), classLoader)); } else { @@ -112,7 +112,7 @@ public Optional getFile(List filepath) { @Override public Collection getFilesInPath(boolean recursive, List path) { - String fullPath = buildPathString(path); + String fullPath = buildPathString(path, true); Stream candidates = files .stream() .filter(file -> file.startsWith(fullPath)) @@ -129,7 +129,7 @@ public Collection getFilesInPath(boolean recursive, List @Override public Set getSubpaths(List path) { - String fullPath = buildPathString(path); + String fullPath = buildPathString(path, true); return files .stream() .filter(file -> file.startsWith(fullPath)) @@ -141,12 +141,15 @@ public Set getSubpaths(List path) { .collect(Collectors.toSet()); } - private String buildPathString(List path) { + private String buildPathString(List path, boolean isDirectory) { String fullPath; if (path.isEmpty() || (path.size() == 1 && path.get(0).isEmpty())) { fullPath = basePath; } else { - fullPath = basePath + CLASS_PATH_JOINER.join(path) + CLASS_PATH_SEPARATOR; + fullPath = basePath + CLASS_PATH_JOINER.join(path); + if (isDirectory) { + fullPath += CLASS_PATH_SEPARATOR; + } } return fullPath; }