This is an automated email from the ASF dual-hosted git repository.

mweiler pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git


The following commit(s) were added to refs/heads/main by this push:
     new 85ec3af6c6 [incubator-kie-issues-2152] Use try with resources pattern 
in generated ProtostreamObjectMarshaller (#4103)
85ec3af6c6 is described below

commit 85ec3af6c6f49465e5d1ff74ce763fade1b6fc05
Author: Martin Weiler <[email protected]>
AuthorDate: Thu Oct 30 07:35:07 2025 -0600

    [incubator-kie-issues-2152] Use try with resources pattern in generated 
ProtostreamObjectMarshaller (#4103)
---
 .../codegen/process/persistence/PersistenceGenerator.java   | 13 +++++++++++--
 .../ProtostreamObjectMarshallerJavaTemplate.java            |  1 +
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/persistence/PersistenceGenerator.java
 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/persistence/PersistenceGenerator.java
index 62f0e0ec85..a46064fca1 100644
--- 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/persistence/PersistenceGenerator.java
+++ 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/persistence/PersistenceGenerator.java
@@ -19,6 +19,7 @@
 package org.kie.kogito.codegen.process.persistence;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.UncheckedIOException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
@@ -48,12 +49,14 @@ import com.github.javaparser.ast.NodeList;
 import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
 import com.github.javaparser.ast.body.ConstructorDeclaration;
 import com.github.javaparser.ast.body.Parameter;
+import com.github.javaparser.ast.body.VariableDeclarator;
 import com.github.javaparser.ast.expr.EnclosedExpr;
 import com.github.javaparser.ast.expr.Expression;
 import com.github.javaparser.ast.expr.MethodCallExpr;
 import com.github.javaparser.ast.expr.NameExpr;
 import com.github.javaparser.ast.expr.ObjectCreationExpr;
 import com.github.javaparser.ast.expr.StringLiteralExpr;
+import com.github.javaparser.ast.expr.VariableDeclarationExpr;
 import com.github.javaparser.ast.stmt.BlockStmt;
 import com.github.javaparser.ast.stmt.CatchClause;
 import com.github.javaparser.ast.stmt.ThrowStmt;
@@ -230,18 +233,24 @@ public class PersistenceGenerator extends 
AbstractGenerator {
             BlockStmt body = new BlockStmt();
             Expression newFileDescriptorSource = new ObjectCreationExpr(null, 
new ClassOrInterfaceType(null, FileDescriptorSource.class.getCanonicalName()), 
NodeList.nodeList());
             Expression getClassLoader = new MethodCallExpr(new 
MethodCallExpr(null, "getClass", NodeList.nodeList()), "getClassLoader", 
NodeList.nodeList());
+            ClassOrInterfaceType inputStreamType = 
StaticJavaParser.parseClassOrInterfaceType(InputStream.class.getSimpleName());
 
             Expression chainExpression = newFileDescriptorSource;
+            NodeList<Expression> resourceList = new NodeList<>();
             for (GeneratedFile generatedFile : protoFiles) {
                 String path = generatedFile.relativePath();
                 String name = generatedFile.path().getFileName().toString();
+                String nameIS = name.replace(".", "").replace("-", "");
                 if (!name.endsWith(".proto")) {
                     continue;
                 }
                 Expression getISKogito = new MethodCallExpr(getClassLoader, 
"getResourceAsStream", NodeList.nodeList(new StringLiteralExpr(path)));
+                VariableDeclarator isDeclarator = new 
VariableDeclarator(inputStreamType, nameIS, getISKogito);
+                VariableDeclarationExpr resourceDeclaration = new 
VariableDeclarationExpr(isDeclarator);
+                resourceList.add(resourceDeclaration);
                 chainExpression =
                         new MethodCallExpr(new EnclosedExpr(chainExpression), 
"addProtoFile",
-                                NodeList.nodeList(new StringLiteralExpr(name), 
getISKogito));
+                                NodeList.nodeList(new StringLiteralExpr(name), 
new NameExpr(nameIS)));
             }
 
             body.addStatement(new MethodCallExpr(new NameExpr("context"), 
"registerProtoFiles", NodeList.nodeList(chainExpression)));
@@ -252,7 +261,7 @@ public class PersistenceGenerator extends AbstractGenerator 
{
             CatchClause catchClause = new CatchClause(new 
Parameter().setType(IOException.class).setName("e"), new 
BlockStmt(NodeList.nodeList(new ThrowStmt(new ObjectCreationExpr(
                     null, 
StaticJavaParser.parseClassOrInterfaceType("java.io.UncheckedIOException"),
                     NodeList.nodeList(new NameExpr("e")))))));
-            TryStmt tryStmt = new TryStmt(body, 
NodeList.nodeList(catchClause), null);
+            TryStmt tryStmt = new TryStmt(resourceList, body, 
NodeList.nodeList(catchClause), null);
             constructor.getBody().addStatement(tryStmt);
             String fqnProtoStreamMarshaller = packageName + "." + 
clazz.getName().toString();
             generatedFiles.add(new GeneratedFile(GeneratedFileType.SOURCE,
diff --git 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/persistence/ProtostreamObjectMarshallerJavaTemplate.java
 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/persistence/ProtostreamObjectMarshallerJavaTemplate.java
index 5e1fe5aaba..8651c502d5 100644
--- 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/persistence/ProtostreamObjectMarshallerJavaTemplate.java
+++ 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/persistence/ProtostreamObjectMarshallerJavaTemplate.java
@@ -18,6 +18,7 @@
  */
 package org.kie.kogito.codegen.process.persistence;
 
+import java.io.InputStream;
 import java.io.IOException;
 
 import org.infinispan.protostream.ProtobufUtil;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to