Merge pull request #23821 from arjantijms/jakartaupdate
Jakarta API updates
diff --git a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ProviderContainerContractInfoImpl.java b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ProviderContainerContractInfoImpl.java
index fb2300a..951303f 100644
--- a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ProviderContainerContractInfoImpl.java
+++ b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ProviderContainerContractInfoImpl.java
@@ -1,4 +1,5 @@
/*
+ * Copyright (c) 2021 Contributors to the Eclipse Foundation.
* Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
@@ -16,7 +17,6 @@
package org.glassfish.appclient.client.acc;
-import com.sun.appserv.connectors.internal.api.ConnectorRuntime;
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.IllegalClassFormatException;
import java.lang.instrument.Instrumentation;
@@ -26,14 +26,18 @@
import java.security.ProtectionDomain;
import java.util.Collection;
import java.util.HashSet;
-import jakarta.persistence.EntityManagerFactory;
-import jakarta.persistence.spi.ClassTransformer;
-import jakarta.validation.ValidatorFactory;
import org.glassfish.api.deployment.DeploymentContext;
import org.glassfish.deployment.common.RootDeploymentDescriptor;
import org.glassfish.persistence.jpa.ProviderContainerContractInfoBase;
+import com.sun.appserv.connectors.internal.api.ConnectorRuntime;
+
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.spi.ClassTransformer;
+import jakarta.persistence.spi.TransformerException;
+import jakarta.validation.ValidatorFactory;
+
/**
* Implements the internal GlassFish interface which all persistence provider
* containers must.
@@ -67,10 +71,12 @@
this.applicationLocation = applicationLocation;
}
+ @Override
public ClassLoader getClassLoader() {
return classLoader;
}
+ @Override
public ClassLoader getTempClassloader() {
return AccessController.doPrivileged(new PrivilegedAction<URLClassLoader>() {
@@ -82,6 +88,7 @@
});
}
+ @Override
public void addTransformer(ClassTransformer transformer) {
final TransformerWrapper tw = new TransformerWrapper(transformer, classLoader);
if (inst != null) {
@@ -91,29 +98,35 @@
}
}
+ @Override
public String getApplicationLocation() {
return applicationLocation;
}
+ @Override
public ValidatorFactory getValidatorFactory() {
// TODO: Need to implement this correctly.
return null;
}
// TODO: remove after persistence is refactored.
+ @Override
public DeploymentContext getDeploymentContext() {
return null;
}
+ @Override
public boolean isJava2DBRequired() {
// Returns whether Java2DB is required or not. For an AppClient it is always false
return false;
}
+ @Override
public void registerEMF(String unitName, String persistenceRootUri, RootDeploymentDescriptor containingBundle, EntityManagerFactory emf) {
emfs.add(emf);
}
+ @Override
public String getJTADataSourceOverride() {
// Returns whether JTA datasource is overridden. For an appclient it is never the case.
return null;
@@ -133,21 +146,24 @@
private final ClassTransformer persistenceTransformer;
private final ClassLoader classLoader;
- TransformerWrapper(final ClassTransformer persistenceTransformer,
- final ClassLoader classLoader) {
+ TransformerWrapper(final ClassTransformer persistenceTransformer, final ClassLoader classLoader) {
this.persistenceTransformer = persistenceTransformer;
this.classLoader = classLoader;
}
+ @Override
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
/*
* Do not even bother running the transformer unless the loader
* loading the class is the ACC's class loader.
*/
- return (loader.equals(classLoader) ?
- persistenceTransformer.transform(loader, className,
- classBeingRedefined, protectionDomain, classfileBuffer)
- : null);
+ try {
+ return loader.equals(classLoader) ?
+ persistenceTransformer.transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer) :
+ null;
+ } catch (TransformerException e) {
+ throw (IllegalClassFormatException) (new IllegalClassFormatException().initCause(e));
+ }
}
}
diff --git a/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/ServerProviderContainerContractInfo.java b/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/ServerProviderContainerContractInfo.java
index 20efec8..2fdd5af 100644
--- a/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/ServerProviderContainerContractInfo.java
+++ b/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/ServerProviderContainerContractInfo.java
@@ -1,4 +1,5 @@
/*
+ * Copyright (c) 2021 Contributors to the Eclipse Foundation.
* Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
@@ -34,6 +35,7 @@
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.spi.ClassTransformer;
+import jakarta.persistence.spi.TransformerException;
import jakarta.validation.Validation;
import jakarta.validation.ValidatorFactory;
@@ -78,7 +80,11 @@
public byte[] transform(
ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
byte[] classfileBuffer) throws IllegalClassFormatException {
- return transformer.transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
+ try {
+ return transformer.transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
+ } catch (TransformerException e) {
+ throw (IllegalClassFormatException) (new IllegalClassFormatException().initCause(e));
+ }
}
});
}
diff --git a/appserver/pom.xml b/appserver/pom.xml
index ca4e185..aa57884 100644
--- a/appserver/pom.xml
+++ b/appserver/pom.xml
@@ -92,7 +92,7 @@
<concurrent.version>2.0.0</concurrent.version>
<!-- Jakarta Interceptors -->
- <jakarta.interceptor-api.version>2.0.1-RC1</jakarta.interceptor-api.version>
+ <jakarta.interceptor-api.version>2.1.0</jakarta.interceptor-api.version>
<!-- Jakarta Security + Authentication/Authorization -->
<jakarta.security-api.version>2.0.0</jakarta.security-api.version>
@@ -106,18 +106,18 @@
<openmq.version>6.3.0-M1</openmq.version>
<!-- Jakarta Persistence -->
- <jakarta.persistence-api.version>3.1.0-RC1</jakarta.persistence-api.version>
+ <jakarta.persistence-api.version>3.1.0-RC2</jakarta.persistence-api.version>
<eclipselink.version>4.0.0-M1</eclipselink.version>
<eclipselink.asm.version>9.2.0</eclipselink.asm.version>
<!-- Jakarta Transactions -->
- <jakarta.transaction-api.version>2.0.0</jakarta.transaction-api.version>
+ <jakarta.transaction-api.version>2.0.1-RC1</jakarta.transaction-api.version>
<!-- Jakarta Connectors -->
<jakarta.resource-api.version>2.1.0-RC1</jakarta.resource-api.version>
<!-- Jakarta Batch -->
- <jakarta.batch-api.version>2.1.0-M1</jakarta.batch-api.version>
+ <jakarta.batch-api.version>2.1.0</jakarta.batch-api.version>
<jbatch.version>2.1.0-M2-SNAPSHOT</jbatch.version>
<!-- Jakarta Enterprise beans -->