From 79edab91029a626da02e1d91a8ca5120b22e291f Mon Sep 17 00:00:00 2001 From: George Gastaldi Date: Tue, 26 Nov 2024 14:43:12 -0300 Subject: [PATCH] Bump DB2 Driver to 12.1.0.0 It also uses the jakarta.transaction packages, so no need to transform it --- bom/application/pom.xml | 2 +- .../db2/deployment/JakartaEnablement.java | 88 ------------------- 2 files changed, 1 insertion(+), 89 deletions(-) delete mode 100644 extensions/jdbc/jdbc-db2/deployment/src/main/java/io/quarkus/jdbc/db2/deployment/JakartaEnablement.java diff --git a/bom/application/pom.xml b/bom/application/pom.xml index ea8ccaae734bf5..9d709fab83f3cd 100644 --- a/bom/application/pom.xml +++ b/bom/application/pom.xml @@ -125,7 +125,7 @@ 1.6.7 23.5.0.24.07 10.16.1.1 - 11.5.8.0 + 12.1.0.0 1.2.6 2.2 5.10.5 diff --git a/extensions/jdbc/jdbc-db2/deployment/src/main/java/io/quarkus/jdbc/db2/deployment/JakartaEnablement.java b/extensions/jdbc/jdbc-db2/deployment/src/main/java/io/quarkus/jdbc/db2/deployment/JakartaEnablement.java deleted file mode 100644 index ce8ec45c8ad26c..00000000000000 --- a/extensions/jdbc/jdbc-db2/deployment/src/main/java/io/quarkus/jdbc/db2/deployment/JakartaEnablement.java +++ /dev/null @@ -1,88 +0,0 @@ -package io.quarkus.jdbc.db2.deployment; - -import java.nio.ByteBuffer; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.eclipse.transformer.action.ActionContext; -import org.eclipse.transformer.action.ByteData; -import org.eclipse.transformer.action.impl.ActionContextImpl; -import org.eclipse.transformer.action.impl.ByteDataImpl; -import org.eclipse.transformer.action.impl.ClassActionImpl; -import org.eclipse.transformer.action.impl.SelectionRuleImpl; -import org.eclipse.transformer.action.impl.SignatureRuleImpl; -import org.eclipse.transformer.util.FileUtils; -import org.objectweb.asm.ClassReader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import io.quarkus.bootstrap.classloading.QuarkusClassLoader; -import io.quarkus.deployment.annotations.BuildProducer; -import io.quarkus.deployment.annotations.BuildStep; -import io.quarkus.deployment.builditem.BytecodeTransformerBuildItem; - -/** - * The DB2 driver is compiled using references to classes in the jakarta.transaction - * package; we need to transform these to fix compatibility with jakarta.transaction. - * We do this by leveraging the Eclipse Transformer project during Augmentation, so - * that end users don't need to bother. - */ -public class JakartaEnablement { - - private static final List CLASSES_NEEDING_TRANSFORMATION = List.of( - "com.ibm.db2.jcc.t2zos.ab", - "com.ibm.db2.jcc.t2zos.T2zosConnection", - "com.ibm.db2.jcc.t2zos.T2zosConfiguration"); - - @BuildStep - void transformToJakarta(BuildProducer transformers) { - if (QuarkusClassLoader.isClassPresentAtRuntime("jakarta.transaction.Transaction")) { - JakartaTransformer tr = new JakartaTransformer(); - for (String classname : CLASSES_NEEDING_TRANSFORMATION) { - final BytecodeTransformerBuildItem item = new BytecodeTransformerBuildItem.Builder() - .setCacheable(true) - .setContinueOnFailure(false) - .setClassToTransform(classname) - .setClassReaderOptions(ClassReader.SKIP_DEBUG) - .setInputTransformer(tr::transform) - .build(); - transformers.produce(item); - } - } - } - - private static class JakartaTransformer { - - private final Logger logger; - private final ActionContext ctx; - private static final Map renames = Collections.singletonMap(forbiddenName(), "jakarta.transaction"); - - JakartaTransformer() { - logger = LoggerFactory.getLogger("JakartaTransformer"); - //N.B. we enable only this single transformation of package renames, not the full set of capabilities of Eclipse Transformer; - //this might need tailoring if the same idea gets applied to a different context. - ctx = new ActionContextImpl(logger, - new SelectionRuleImpl(logger, Collections.emptyMap(), Collections.emptyMap()), - new SignatureRuleImpl(logger, renames, null, null, null, null, null, Collections.emptyMap())); - } - - //Need to prevent the Eclipse Transformer - which is run on this whole code base - to actually replace this name: - private static String forbiddenName() { - StringBuilder sb = new StringBuilder("java") - .append("x.") - .append("transaction"); - return sb.toString(); - } - - byte[] transform(final String name, final byte[] bytes) { - logger.info("Jakarta EE compatibility enhancer for Quarkus: transforming " + name); - final ClassActionImpl classTransformer = new ClassActionImpl(ctx); - final ByteBuffer input = ByteBuffer.wrap(bytes); - final ByteData inputData = new ByteDataImpl(name, input, FileUtils.DEFAULT_CHARSET); - final ByteData outputData = classTransformer.apply(inputData); - return outputData.buffer().array(); - } - } - -}