This is an automated email from the ASF dual-hosted git repository.
alien11689 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/aries.git
The following commit(s) were added to refs/heads/trunk by this push:
new 15c32eaa5 ARIES-2172: Support jakarta transactional and persistence in
blueprint-maven-plugin
15c32eaa5 is described below
commit 15c32eaa50537f7bd4aebd48c15268032dbd46c7
Author: Dominik Przybysz <[email protected]>
AuthorDate: Wed Mar 12 22:31:52 2025 +0100
ARIES-2172: Support jakarta transactional and persistence in
blueprint-maven-plugin
---
.github/dependabot.yaml | 3 +
.../blueprint-maven-plugin/pom.xml | 13 ++++
.../AbstractPersistenceContextHandler.java} | 14 ++--
.../AbstractPersistenceUnitHandler.java} | 20 ++---
.../AbstractTransactionFactory.java | 15 ++--
.../handlers/{javax => common}/Namespaces.java | 18 ++---
.../JakartaTransactionFactory.java} | 21 ++---
.../jakarta/PersistenceContextHandler.java | 37 +++++++++
.../handlers/jakarta/PersistenceUnitHandler.java | 37 +++++++++
.../handlers/javax/CdiTransactionFactory.java | 17 +---
.../handlers/javax/JavaxTransactionFactory.java | 15 +---
.../handlers/javax/PersistenceContextHandler.java | 39 +---------
.../handlers/javax/PersistenceUnitHandler.java | 43 +----------
.../aries/blueprint/plugin/model/Argument.java | 4 -
.../aries/blueprint/plugin/model/BeanRefStore.java | 1 -
.../aries/blueprint/plugin/model/Introspector.java | 2 -
.../aries/blueprint/plugin/model/Property.java | 4 -
...ries.blueprint.plugin.spi.BeanAnnotationHandler | 1 +
...ies.blueprint.plugin.spi.FieldAnnotationHandler | 2 +
...es.blueprint.plugin.spi.MethodAnnotationHandler | 1 +
.../blueprint/plugin/BlueprintFileWriterTest.java | 90 +++++++++++++++-------
.../plugin/jakarta/JakartaParentBean.java | 55 +++++++++++++
.../plugin/jakarta/JakartaTransactionalBean.java | 63 +++++++++++++++
23 files changed, 322 insertions(+), 193 deletions(-)
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index 96cc1c328..4dc64073f 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -37,6 +37,9 @@ updates:
- dependency-name: "jakarta.enterprise:jakarta.enterprise.cdi-api"
versions:
- ">=4.0.0" # does not support java 8
+ - dependency-name: "jakarta.persistence:jakarta.persistence-api"
+ versions:
+ - ">3.0.0" # does not support java 8
- dependency-name: "javax.enterprise:cdi-api"
versions:
- ">2.0.SP1" # 2.0-PFD2 is considered as newer, but is older
diff --git a/blueprint-maven-plugin/blueprint-maven-plugin/pom.xml
b/blueprint-maven-plugin/blueprint-maven-plugin/pom.xml
index b379d498e..6a28a328f 100644
--- a/blueprint-maven-plugin/blueprint-maven-plugin/pom.xml
+++ b/blueprint-maven-plugin/blueprint-maven-plugin/pom.xml
@@ -45,6 +45,8 @@
<jakarta.annotation-api.version>2.1.1</jakarta.annotation-api.version>
<jakarta.enterprise.cdi-api.version>3.0.1</jakarta.enterprise.cdi-api.version>
<jakarta.inject.version>2.0.1.MR</jakarta.inject.version>
+
<jakarta.persistence-api.version>3.0.0</jakarta.persistence-api.version>
+
<jakarta.transaction-api.version>2.0.1</jakarta.transaction-api.version>
<javax.annotation-api.version>1.3.2</javax.annotation-api.version>
<javax.enterprise.cdi-api.version>2.0.SP1</javax.enterprise.cdi-api.version>
<javax.inject.version>1</javax.inject.version>
@@ -152,6 +154,11 @@
<artifactId>javax.transaction-api</artifactId>
<version>${javax.transaction-api.version}</version>
</dependency>
+ <dependency>
+ <groupId>jakarta.transaction</groupId>
+ <artifactId>jakarta.transaction-api</artifactId>
+ <version>${jakarta.transaction-api.version}</version>
+ </dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
@@ -167,6 +174,12 @@
<artifactId>persistence-api</artifactId>
<version>${persistence-api.version}</version>
</dependency>
+ <dependency>
+ <groupId>jakarta.persistence</groupId>
+ <artifactId>jakarta.persistence-api</artifactId>
+ <version>${jakarta.persistence-api.version}</version>
+ </dependency>
+
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.cmpn</artifactId>
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceContextHandler.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/AbstractPersistenceContextHandler.java
similarity index 83%
copy from
blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceContextHandler.java
copy to
blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/AbstractPersistenceContextHandler.java
index 76f5ad731..e169b40cb 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceContextHandler.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/AbstractPersistenceContextHandler.java
@@ -16,25 +16,22 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.aries.blueprint.plugin.handlers.javax;
+package org.apache.aries.blueprint.plugin.handlers.common;
import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
import org.apache.aries.blueprint.plugin.spi.FieldAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.XmlWriter;
-import javax.persistence.PersistenceContext;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.List;
-public class PersistenceContextHandler implements
FieldAnnotationHandler<PersistenceContext> {
+public abstract class AbstractPersistenceContextHandler<T extends Annotation>
implements FieldAnnotationHandler<T> {
- @Override
- public Class<PersistenceContext> getAnnotation() {
- return PersistenceContext.class;
- }
+ protected abstract String getUnitName(Field field);
@Override
public void handleFieldAnnotation(Class<?> clazz, List<Field> fields,
ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
@@ -42,13 +39,12 @@ public class PersistenceContextHandler implements
FieldAnnotationHandler<Persist
if (nsJpa1 != null) {
for (final Field field : fields) {
final String name = field.getName();
- final PersistenceContext persistenceContext =
field.getAnnotation(PersistenceContext.class);
beanEnricher.addBeanContentWriter("javax.persistence.field.context/" + name,
new XmlWriter() {
@Override
public void write(XMLStreamWriter writer) throws
XMLStreamException {
writer.writeEmptyElement("context");
writer.writeDefaultNamespace(nsJpa1);
- writer.writeAttribute("unitname",
persistenceContext.unitName());
+ writer.writeAttribute("unitname", getUnitName(field));
writer.writeAttribute("property", name);
}
});
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceUnitHandler.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/AbstractPersistenceUnitHandler.java
similarity index 77%
copy from
blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceUnitHandler.java
copy to
blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/AbstractPersistenceUnitHandler.java
index d6907aea2..2b25c5a9b 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceUnitHandler.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/AbstractPersistenceUnitHandler.java
@@ -16,29 +16,26 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.aries.blueprint.plugin.handlers.javax;
+package org.apache.aries.blueprint.plugin.handlers.common;
import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
import org.apache.aries.blueprint.plugin.spi.FieldAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.XmlWriter;
-import javax.persistence.PersistenceUnit;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.List;
-import static
org.apache.aries.blueprint.plugin.handlers.javax.Namespaces.PATTERN_NS_JPA1;
-import static
org.apache.aries.blueprint.plugin.handlers.javax.Namespaces.PATTERN_NS_JPA2;
-import static
org.apache.aries.blueprint.plugin.handlers.javax.Namespaces.getNamespaceByPattern;
+import static
org.apache.aries.blueprint.plugin.handlers.common.Namespaces.PATTERN_NS_JPA1;
+import static
org.apache.aries.blueprint.plugin.handlers.common.Namespaces.PATTERN_NS_JPA2;
+import static
org.apache.aries.blueprint.plugin.handlers.common.Namespaces.getNamespaceByPattern;
-public class PersistenceUnitHandler implements
FieldAnnotationHandler<PersistenceUnit> {
+public abstract class AbstractPersistenceUnitHandler<T extends Annotation>
implements FieldAnnotationHandler<T> {
- @Override
- public Class<PersistenceUnit> getAnnotation() {
- return PersistenceUnit.class;
- }
+ protected abstract String getUnitName(Field field);
@Override
public void handleFieldAnnotation(Class<?> clazz, List<Field> fields,
ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
@@ -46,13 +43,12 @@ public class PersistenceUnitHandler implements
FieldAnnotationHandler<Persistenc
if (nsJpa1 != null) {
for (final Field field : fields) {
final String name = field.getName();
- final PersistenceUnit persistenceUnit =
field.getAnnotation(PersistenceUnit.class);
beanEnricher.addBeanContentWriter("javax.persistence.field.unit/" + name, new
XmlWriter() {
@Override
public void write(XMLStreamWriter writer) throws
XMLStreamException {
writer.writeEmptyElement("unit");
writer.writeDefaultNamespace(nsJpa1);
- writer.writeAttribute("unitname",
persistenceUnit.unitName());
+ writer.writeAttribute("unitname", getUnitName(field));
writer.writeAttribute("property", name);
}
});
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/AbstractTransactionFactory.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/AbstractTransactionFactory.java
similarity index 88%
rename from
blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/AbstractTransactionFactory.java
rename to
blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/AbstractTransactionFactory.java
index 009120a09..bbe2c705a 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/AbstractTransactionFactory.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/AbstractTransactionFactory.java
@@ -16,11 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.aries.blueprint.plugin.handlers.javax;
+package org.apache.aries.blueprint.plugin.handlers.common;
-import org.apache.aries.blueprint.plugin.spi.*;
+import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
+import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
+import org.apache.aries.blueprint.plugin.spi.BlueprintConfiguration;
+import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
+import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler;
+import org.apache.aries.blueprint.plugin.spi.XmlWriter;
-import javax.transaction.Transactional;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import java.lang.annotation.Annotation;
@@ -28,10 +32,11 @@ import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
import java.util.List;
-abstract class AbstractTransactionFactory<T extends Annotation> implements
BeanAnnotationHandler<T>, MethodAnnotationHandler<T> {
- abstract String getTransactionTypeName(AnnotatedElement annotatedElement);
+public abstract class AbstractTransactionFactory<T extends Annotation>
implements BeanAnnotationHandler<T>, MethodAnnotationHandler<T> {
+ protected abstract String getTransactionTypeName(AnnotatedElement
annotatedElement);
private static final String ENABLE_ANNOTATION =
"transaction.enableAnnotation";
+
@Override
public void handleMethodAnnotation(Class<?> clazz, List<Method> methods,
ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
final String nsTx1 =
Namespaces.getNamespaceByPattern(contextEnricher.getBlueprintConfiguration().getNamespaces(),
Namespaces.PATTERN_NS_TX1);
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/Namespaces.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/Namespaces.java
similarity index 62%
rename from
blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/Namespaces.java
rename to
blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/Namespaces.java
index 7dafb70c3..4dd5d75d2 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/Namespaces.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/common/Namespaces.java
@@ -16,18 +16,18 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.aries.blueprint.plugin.handlers.javax;
+package org.apache.aries.blueprint.plugin.handlers.common;
import java.util.Set;
-class Namespaces {
- static final String PATTERN_NS_JPA1 =
"http\\:\\/\\/aries\\.apache\\.org\\/xmlns\\/jpa\\/v1\\.(.)\\.(.)";
- static final String PATTERN_NS_JPA2 =
"http\\:\\/\\/aries\\.apache\\.org\\/xmlns\\/jpa\\/v2\\.(.)\\.(.)";
- static final String PATTERN_NS_TX1 =
"http\\:\\/\\/aries\\.apache\\.org\\/xmlns\\/transactions\\/v1\\.(.)\\.(.)";
- static final String PATTERN_NS_TX2 =
"http\\:\\/\\/aries\\.apache\\.org\\/xmlns\\/transactions\\/v2\\.(.)\\.(.)";
+public class Namespaces {
+ public static final String PATTERN_NS_JPA1 =
"http\\:\\/\\/aries\\.apache\\.org\\/xmlns\\/jpa\\/v1\\.(.)\\.(.)";
+ public static final String PATTERN_NS_JPA2 =
"http\\:\\/\\/aries\\.apache\\.org\\/xmlns\\/jpa\\/v2\\.(.)\\.(.)";
+ public static final String PATTERN_NS_TX1 =
"http\\:\\/\\/aries\\.apache\\.org\\/xmlns\\/transactions\\/v1\\.(.)\\.(.)";
+ public static final String PATTERN_NS_TX2 =
"http\\:\\/\\/aries\\.apache\\.org\\/xmlns\\/transactions\\/v2\\.(.)\\.(.)";
private static final String NS_TX_1_2_0 =
"http://aries.apache.org/xmlns/transactions/v1.2.0";
- static String getNamespaceByPattern(Set<String> namespaces, String
pattern) {
+ public static String getNamespaceByPattern(Set<String> namespaces, String
pattern) {
for (String namespace : namespaces) {
if (namespace.matches(pattern)) {
return namespace;
@@ -35,8 +35,8 @@ class Namespaces {
}
return null;
}
-
- static boolean isTX12(String namespace) {
+
+ public static boolean isTX12(String namespace) {
return NS_TX_1_2_0.equals(namespace);
}
}
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/JavaxTransactionFactory.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/jakarta/JakartaTransactionFactory.java
similarity index 60%
copy from
blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/JavaxTransactionFactory.java
copy to
blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/jakarta/JakartaTransactionFactory.java
index c338ec2e3..afb75cce4 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/JavaxTransactionFactory.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/jakarta/JakartaTransactionFactory.java
@@ -16,28 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.aries.blueprint.plugin.handlers.javax;
+package org.apache.aries.blueprint.plugin.handlers.jakarta;
import com.google.common.base.CaseFormat;
-
-import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
-import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
-import org.apache.aries.blueprint.plugin.spi.BlueprintConfiguration;
-import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
-import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler;
-import org.apache.aries.blueprint.plugin.spi.XmlWriter;
-
-import javax.transaction.Transactional;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
+import jakarta.transaction.Transactional;
+import
org.apache.aries.blueprint.plugin.handlers.common.AbstractTransactionFactory;
import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Method;
-import java.util.List;
-public class JavaxTransactionFactory extends
AbstractTransactionFactory<Transactional> {
+public class JakartaTransactionFactory extends
AbstractTransactionFactory<Transactional> {
- String getTransactionTypeName(AnnotatedElement annotatedElement) {
+ protected String getTransactionTypeName(AnnotatedElement annotatedElement)
{
Transactional transactional =
annotatedElement.getAnnotation(Transactional.class);
return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL,
transactional.value().name());
}
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/jakarta/PersistenceContextHandler.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/jakarta/PersistenceContextHandler.java
new file mode 100644
index 000000000..6a09ca4e3
--- /dev/null
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/jakarta/PersistenceContextHandler.java
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.aries.blueprint.plugin.handlers.jakarta;
+
+import jakarta.persistence.PersistenceContext;
+import
org.apache.aries.blueprint.plugin.handlers.common.AbstractPersistenceContextHandler;
+
+import java.lang.reflect.Field;
+
+public class PersistenceContextHandler extends
AbstractPersistenceContextHandler<PersistenceContext> {
+
+ @Override
+ public Class<PersistenceContext> getAnnotation() {
+ return PersistenceContext.class;
+ }
+
+ @Override
+ protected String getUnitName(Field field) {
+ return field.getAnnotation(PersistenceContext.class).unitName();
+ }
+}
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/jakarta/PersistenceUnitHandler.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/jakarta/PersistenceUnitHandler.java
new file mode 100644
index 000000000..15e92c34c
--- /dev/null
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/jakarta/PersistenceUnitHandler.java
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.aries.blueprint.plugin.handlers.jakarta;
+
+import jakarta.persistence.PersistenceUnit;
+import
org.apache.aries.blueprint.plugin.handlers.common.AbstractPersistenceUnitHandler;
+
+import java.lang.reflect.Field;
+
+public class PersistenceUnitHandler extends
AbstractPersistenceUnitHandler<PersistenceUnit> {
+
+ @Override
+ public Class<PersistenceUnit> getAnnotation() {
+ return PersistenceUnit.class;
+ }
+
+ @Override
+ protected String getUnitName(Field field) {
+ return field.getAnnotation(PersistenceUnit.class).unitName();
+ }
+}
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/CdiTransactionFactory.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/CdiTransactionFactory.java
index 8dcfe804b..b5bb1a435 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/CdiTransactionFactory.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/CdiTransactionFactory.java
@@ -19,27 +19,14 @@
package org.apache.aries.blueprint.plugin.handlers.javax;
import com.google.common.base.CaseFormat;
-
-import
org.apache.aries.blueprint.plugin.handlers.javax.AbstractTransactionFactory;
-import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
-import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
-import org.apache.aries.blueprint.plugin.spi.BlueprintConfiguration;
-import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
-import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler;
-import org.apache.aries.blueprint.plugin.spi.XmlWriter;
+import
org.apache.aries.blueprint.plugin.handlers.common.AbstractTransactionFactory;
import javax.transaction.cdi.Transactional;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.Set;
public class CdiTransactionFactory extends
AbstractTransactionFactory<Transactional> {
- String getTransactionTypeName(AnnotatedElement annotatedElement) {
+ protected String getTransactionTypeName(AnnotatedElement annotatedElement)
{
final Transactional transactional =
annotatedElement.getAnnotation(Transactional.class);
return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL,
transactional.value().name());
}
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/JavaxTransactionFactory.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/JavaxTransactionFactory.java
index c338ec2e3..7839f4cb1 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/JavaxTransactionFactory.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/JavaxTransactionFactory.java
@@ -19,25 +19,14 @@
package org.apache.aries.blueprint.plugin.handlers.javax;
import com.google.common.base.CaseFormat;
-
-import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
-import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
-import org.apache.aries.blueprint.plugin.spi.BlueprintConfiguration;
-import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
-import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler;
-import org.apache.aries.blueprint.plugin.spi.XmlWriter;
+import
org.apache.aries.blueprint.plugin.handlers.common.AbstractTransactionFactory;
import javax.transaction.Transactional;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Method;
-import java.util.List;
public class JavaxTransactionFactory extends
AbstractTransactionFactory<Transactional> {
- String getTransactionTypeName(AnnotatedElement annotatedElement) {
+ protected String getTransactionTypeName(AnnotatedElement annotatedElement)
{
Transactional transactional =
annotatedElement.getAnnotation(Transactional.class);
return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL,
transactional.value().name());
}
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceContextHandler.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceContextHandler.java
index 76f5ad731..531b5f217 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceContextHandler.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceContextHandler.java
@@ -18,18 +18,12 @@
*/
package org.apache.aries.blueprint.plugin.handlers.javax;
-import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
-import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
-import org.apache.aries.blueprint.plugin.spi.FieldAnnotationHandler;
-import org.apache.aries.blueprint.plugin.spi.XmlWriter;
+import
org.apache.aries.blueprint.plugin.handlers.common.AbstractPersistenceContextHandler;
import javax.persistence.PersistenceContext;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
import java.lang.reflect.Field;
-import java.util.List;
-public class PersistenceContextHandler implements
FieldAnnotationHandler<PersistenceContext> {
+public class PersistenceContextHandler extends
AbstractPersistenceContextHandler<PersistenceContext> {
@Override
public Class<PersistenceContext> getAnnotation() {
@@ -37,32 +31,7 @@ public class PersistenceContextHandler implements
FieldAnnotationHandler<Persist
}
@Override
- public void handleFieldAnnotation(Class<?> clazz, List<Field> fields,
ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
- final String nsJpa1 =
Namespaces.getNamespaceByPattern(contextEnricher.getBlueprintConfiguration().getNamespaces(),
Namespaces.PATTERN_NS_JPA1);
- if (nsJpa1 != null) {
- for (final Field field : fields) {
- final String name = field.getName();
- final PersistenceContext persistenceContext =
field.getAnnotation(PersistenceContext.class);
-
beanEnricher.addBeanContentWriter("javax.persistence.field.context/" + name,
new XmlWriter() {
- @Override
- public void write(XMLStreamWriter writer) throws
XMLStreamException {
- writer.writeEmptyElement("context");
- writer.writeDefaultNamespace(nsJpa1);
- writer.writeAttribute("unitname",
persistenceContext.unitName());
- writer.writeAttribute("property", name);
- }
- });
- }
- }
- final String nsJpa2 =
Namespaces.getNamespaceByPattern(contextEnricher.getBlueprintConfiguration().getNamespaces(),
Namespaces.PATTERN_NS_JPA2);
- if (nsJpa2 != null) {
-
contextEnricher.addBlueprintContentWriter("javax.persistence.enableJpa2", new
XmlWriter() {
- @Override
- public void write(XMLStreamWriter writer) throws
XMLStreamException {
- writer.writeEmptyElement("enable");
- writer.writeDefaultNamespace(nsJpa2);
- }
- });
- }
+ protected String getUnitName(Field field) {
+ return field.getAnnotation(PersistenceContext.class).unitName();
}
}
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceUnitHandler.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceUnitHandler.java
index d6907aea2..bb89137c9 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceUnitHandler.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/javax/PersistenceUnitHandler.java
@@ -18,22 +18,12 @@
*/
package org.apache.aries.blueprint.plugin.handlers.javax;
-import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
-import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
-import org.apache.aries.blueprint.plugin.spi.FieldAnnotationHandler;
-import org.apache.aries.blueprint.plugin.spi.XmlWriter;
+import
org.apache.aries.blueprint.plugin.handlers.common.AbstractPersistenceUnitHandler;
import javax.persistence.PersistenceUnit;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
import java.lang.reflect.Field;
-import java.util.List;
-import static
org.apache.aries.blueprint.plugin.handlers.javax.Namespaces.PATTERN_NS_JPA1;
-import static
org.apache.aries.blueprint.plugin.handlers.javax.Namespaces.PATTERN_NS_JPA2;
-import static
org.apache.aries.blueprint.plugin.handlers.javax.Namespaces.getNamespaceByPattern;
-
-public class PersistenceUnitHandler implements
FieldAnnotationHandler<PersistenceUnit> {
+public class PersistenceUnitHandler extends
AbstractPersistenceUnitHandler<PersistenceUnit> {
@Override
public Class<PersistenceUnit> getAnnotation() {
@@ -41,32 +31,7 @@ public class PersistenceUnitHandler implements
FieldAnnotationHandler<Persistenc
}
@Override
- public void handleFieldAnnotation(Class<?> clazz, List<Field> fields,
ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
- final String nsJpa1 =
getNamespaceByPattern(contextEnricher.getBlueprintConfiguration().getNamespaces(),
PATTERN_NS_JPA1);
- if (nsJpa1 != null) {
- for (final Field field : fields) {
- final String name = field.getName();
- final PersistenceUnit persistenceUnit =
field.getAnnotation(PersistenceUnit.class);
-
beanEnricher.addBeanContentWriter("javax.persistence.field.unit/" + name, new
XmlWriter() {
- @Override
- public void write(XMLStreamWriter writer) throws
XMLStreamException {
- writer.writeEmptyElement("unit");
- writer.writeDefaultNamespace(nsJpa1);
- writer.writeAttribute("unitname",
persistenceUnit.unitName());
- writer.writeAttribute("property", name);
- }
- });
- }
- }
- final String nsJpa2 =
getNamespaceByPattern(contextEnricher.getBlueprintConfiguration().getNamespaces(),
PATTERN_NS_JPA2);
- if (nsJpa2 != null) {
-
contextEnricher.addBlueprintContentWriter("javax.persistence.enableJpa2", new
XmlWriter() {
- @Override
- public void write(XMLStreamWriter writer) throws
XMLStreamException {
- writer.writeEmptyElement("enable");
- writer.writeDefaultNamespace(nsJpa2);
- }
- });
- }
+ protected String getUnitName(Field field) {
+ return field.getAnnotation(PersistenceUnit.class).unitName();
}
}
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java
index 1d8438cc2..a7af80c0d 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java
@@ -19,16 +19,12 @@
package org.apache.aries.blueprint.plugin.model;
import org.apache.aries.blueprint.plugin.handlers.Handlers;
-import
org.apache.aries.blueprint.plugin.spi.CollectionDependencyAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.XmlWriter;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
import static
org.apache.aries.blueprint.plugin.model.AnnotationHelper.findName;
import static
org.apache.aries.blueprint.plugin.model.AnnotationHelper.findValue;
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRefStore.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRefStore.java
index 514be8eb5..d40e8a859 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRefStore.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRefStore.java
@@ -19,7 +19,6 @@
package org.apache.aries.blueprint.plugin.model;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Introspector.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Introspector.java
index 359559c99..9cbf1fe13 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Introspector.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Introspector.java
@@ -18,9 +18,7 @@
*/
package org.apache.aries.blueprint.plugin.model;
-import com.google.common.base.Preconditions;
import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java
index bf993981c..907e472c7 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java
@@ -19,7 +19,6 @@
package org.apache.aries.blueprint.plugin.model;
import org.apache.aries.blueprint.plugin.handlers.Handlers;
-import
org.apache.aries.blueprint.plugin.spi.CollectionDependencyAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.NamedLikeHandler;
import org.apache.aries.blueprint.plugin.spi.XmlWriter;
@@ -30,9 +29,6 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
import static
org.apache.aries.blueprint.plugin.model.AnnotationHelper.findName;
import static org.apache.aries.blueprint.plugin.model.NamingHelper.getBeanName;
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler
index 03e72caf8..cf6b93b0d 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler
@@ -15,6 +15,7 @@
# limitations under the License.
#
+org.apache.aries.blueprint.plugin.handlers.jakarta.JakartaTransactionFactory
org.apache.aries.blueprint.plugin.handlers.javax.JavaxTransactionFactory
org.apache.aries.blueprint.plugin.handlers.javax.CdiTransactionFactory
org.apache.aries.blueprint.plugin.handlers.blueprint.config.ConfigAnnotationHandler
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FieldAnnotationHandler
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FieldAnnotationHandler
index 53d4b55fe..94a2afd2b 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FieldAnnotationHandler
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FieldAnnotationHandler
@@ -15,5 +15,7 @@
# limitations under the License.
#
+org.apache.aries.blueprint.plugin.handlers.jakarta.PersistenceContextHandler
+org.apache.aries.blueprint.plugin.handlers.jakarta.PersistenceUnitHandler
org.apache.aries.blueprint.plugin.handlers.javax.PersistenceContextHandler
org.apache.aries.blueprint.plugin.handlers.javax.PersistenceUnitHandler
\ No newline at end of file
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler
index 3f1677c4f..734f539a0 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler
@@ -15,6 +15,7 @@
# limitations under the License.
#
+org.apache.aries.blueprint.plugin.handlers.jakarta.JakartaTransactionFactory
org.apache.aries.blueprint.plugin.handlers.jakarta.PostConstructHandler
org.apache.aries.blueprint.plugin.handlers.jakarta.PreDestroyHandler
org.apache.aries.blueprint.plugin.handlers.javax.PostConstructHandler
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/BlueprintFileWriterTest.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/BlueprintFileWriterTest.java
index 6ab1fb4bd..8a5b88b04 100644
---
a/blueprint-maven-plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/BlueprintFileWriterTest.java
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/BlueprintFileWriterTest.java
@@ -18,37 +18,9 @@
*/
package org.apache.aries.blueprint.plugin;
-import javax.xml.XMLConstants;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Source;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-import javax.xml.validation.Validator;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpressionException;
-import javax.xml.xpath.XPathFactory;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static
org.apache.aries.blueprint.plugin.FilteredClassFinder.findClasses;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
import com.google.common.collect.Sets;
import org.apache.aries.blueprint.plugin.jakarta.JakartaFactoryBean;
+import org.apache.aries.blueprint.plugin.jakarta.JakartaTransactionalBean;
import org.apache.aries.blueprint.plugin.jakarta.NamedJakartaBean;
import org.apache.aries.blueprint.plugin.jakarta.ProducedBean;
import org.apache.aries.blueprint.plugin.jakarta.SimpleJakartaBean;
@@ -84,6 +56,35 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
+import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static
org.apache.aries.blueprint.plugin.FilteredClassFinder.findClasses;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
public class BlueprintFileWriterTest {
private static final String NS_JPA =
"http://aries.apache.org/xmlns/jpa/v1.1.0";
@@ -152,6 +153,37 @@ public class BlueprintFileWriterTest {
assertEquals(expectedDefs, defs);
}
+ @Test
+ public void testGenerateJakartaTransactionalAndPersistence() throws
Exception {
+ Node bean = getBeanById("jakartaTransactionalBean");
+
+ assertXpathEquals(bean, "@class",
JakartaTransactionalBean.class.getName());
+ assertXpathEquals(bean, "@init-method", "init");
+ assertXpathEquals(bean, "@destroy-method", "destroy");
+ assertXpathDoesNotExist(bean, "@scope");
+
+ NodeList txs = (NodeList) xpath.evaluate("transaction", bean,
XPathConstants.NODESET);
+ Set<TransactionalDef> defs = new HashSet<TransactionalDef>();
+ for (int i = 0; i < txs.getLength(); ++i) {
+ Node tx = txs.item(i);
+ defs.add(new TransactionalDef(xpath.evaluate("@method", tx),
xpath.evaluate("@value", tx)));
+ }
+ Set<TransactionalDef> expectedDefs = Sets.newHashSet(new
TransactionalDef("*", "RequiresNew"),
+ new TransactionalDef("txNotSupported", "NotSupported"),
+ new TransactionalDef("txMandatory", "Mandatory"),
+ new TransactionalDef("txNever", "Never"),
+ new TransactionalDef("txRequired", "Required"),
+ new TransactionalDef("txOverridenWithRequiresNew",
"RequiresNew"),
+ new TransactionalDef("txSupports", "Supports"));
+ assertEquals(expectedDefs, defs);
+
+ assertXpathEquals(bean, "context/@unitname", "person");
+ assertXpathEquals(bean, "context/@property", "em");
+
+ assertXpathEquals(bean, "unit/@unitname", "person");
+ assertXpathEquals(bean, "unit/@property", "emf");
+ }
+
@Test
public void testGenerateCDITransactional() throws Exception {
Node bean1 = getBeanById("cdiTransactionalAnnotatedBean");
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/jakarta/JakartaParentBean.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/jakarta/JakartaParentBean.java
new file mode 100644
index 000000000..24dbfcec6
--- /dev/null
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/jakarta/JakartaParentBean.java
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.aries.blueprint.plugin.jakarta;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.PreDestroy;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.PersistenceUnit;
+import jakarta.transaction.Transactional;
+
+public class JakartaParentBean {
+
+ @PersistenceContext(unitName="person")
+ EntityManager em;
+
+ @PersistenceUnit(unitName="person")
+ EntityManager emf;
+
+ @PostConstruct
+ public void overridenInit() {
+ }
+
+ @PreDestroy
+ public void destroy() {
+ }
+
+ @Transactional(Transactional.TxType.REQUIRES_NEW)
+ public void txOverridenWithoutTransactional() {
+ }
+
+ @Transactional(Transactional.TxType.SUPPORTS)
+ public void txSupports() {
+ }
+
+ @Transactional(Transactional.TxType.NEVER)
+ public void txOverridenWithRequiresNew() {
+ }
+}
diff --git
a/blueprint-maven-plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/jakarta/JakartaTransactionalBean.java
b/blueprint-maven-plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/jakarta/JakartaTransactionalBean.java
new file mode 100644
index 000000000..c87176bef
--- /dev/null
+++
b/blueprint-maven-plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/jakarta/JakartaTransactionalBean.java
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.aries.blueprint.plugin.jakarta;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.inject.Singleton;
+import jakarta.transaction.Transactional;
+import jakarta.transaction.Transactional.TxType;
+
+@Singleton
+@Transactional(value = TxType.REQUIRES_NEW)
+public class JakartaTransactionalBean extends JakartaParentBean {
+
+ public void overridenInit() {
+ // By overriding the method and removing the annotation, this method
has lost its
+ // @PostConstruct method because it isn't @Inherited
+ }
+
+ @PostConstruct
+ public void init() {
+
+ }
+
+ @Transactional(TxType.NOT_SUPPORTED)
+ public void txNotSupported() {
+ }
+
+ @Transactional(TxType.MANDATORY)
+ public void txMandatory() {
+ }
+
+ @Transactional(TxType.NEVER)
+ public void txNever() {
+ }
+
+ @Transactional(TxType.REQUIRED)
+ public void txRequired() {
+ }
+
+ @Override
+ public void txOverridenWithoutTransactional() {
+ }
+
+ @Transactional(TxType.REQUIRES_NEW)
+ public void txOverridenWithRequiresNew() {
+ }
+}