diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractTransactionBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractTransactionBootstrap.java
deleted file mode 100644
index 03b58cb..0000000
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractTransactionBootstrap.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Demoiselle Framework
- * Copyright (C) 2010 SERPRO
- * ----------------------------------------------------------------------------
- * This file is part of Demoiselle Framework.
- *
- * Demoiselle Framework is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License version 3
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License version 3
- * along with this program; if not, see
- * or write to the Free Software Foundation, Inc., 51 Franklin Street,
- * Fifth Floor, Boston, MA 02110-1301, USA.
- * ----------------------------------------------------------------------------
- * Este arquivo é parte do Framework Demoiselle.
- *
- * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
- * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
- * do Software Livre (FSF).
- *
- * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
- * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
- * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
- * para maiores detalhes.
- *
- * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
- * "LICENCA.txt", junto com esse programa. Se não, acesse
- * ou escreva para a Fundação do Software Livre (FSF) Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
- */
-package br.gov.frameworkdemoiselle.internal.bootstrap;
-
-import javax.enterprise.event.Observes;
-import javax.enterprise.inject.spi.ProcessAnnotatedType;
-
-import br.gov.frameworkdemoiselle.annotation.Priority;
-import br.gov.frameworkdemoiselle.transaction.Transaction;
-import br.gov.frameworkdemoiselle.util.Reflections;
-
-public abstract class AbstractTransactionBootstrap extends AbstractBootstrap {
-
- private Class transactionClass;
-
- protected void processAnnotatedType(@Observes final ProcessAnnotatedType event) {
- Class> annotated = event.getAnnotatedType().getJavaClass();
-
- if (Reflections.isOfType(annotated, Transaction.class) && annotated != getTransactionClass()
- && getPriority(getTransactionClass()) < getPriority(annotated)) {
- event.veto();
- }
- }
-
- private int getPriority(Class> type) {
- int priority = Priority.MAX_PRIORITY;
-
- if (type.isAnnotationPresent(Priority.class)) {
- Priority annotation = type.getAnnotation(Priority.class);
- priority = annotation.value();
- }
-
- return priority;
- }
-
- protected Class getTransactionClass() {
- if (this.transactionClass == null) {
- this.transactionClass = Reflections.getGenericTypeArgument(this.getClass(), 0);
- }
- return this.transactionClass;
- }
-}
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractVetoBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractVetoBootstrap.java
new file mode 100644
index 0000000..d17c1ad
--- /dev/null
+++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractVetoBootstrap.java
@@ -0,0 +1,84 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package br.gov.frameworkdemoiselle.internal.bootstrap;
+
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.ProcessAnnotatedType;
+
+import br.gov.frameworkdemoiselle.annotation.Priority;
+import br.gov.frameworkdemoiselle.util.Reflections;
+
+public abstract class AbstractVetoBootstrap extends AbstractBootstrap {
+
+ private Class type;
+
+ private Class subclass;
+
+ protected void processAnnotatedType(@Observes final ProcessAnnotatedType event) {
+ Class> annotated = event.getAnnotatedType().getJavaClass();
+
+ if (Reflections.isOfType(annotated, getType()) && annotated != getSubclass()
+ && getPriority(getSubclass()) < getPriority(annotated)) {
+ event.veto();
+ }
+ }
+
+ private int getPriority(Class> type) {
+ int priority = Priority.MAX_PRIORITY;
+
+ if (type.isAnnotationPresent(Priority.class)) {
+ Priority annotation = type.getAnnotation(Priority.class);
+ priority = annotation.value();
+ }
+
+ return priority;
+ }
+
+ protected Class getType() {
+ if (this.type == null) {
+ this.type = Reflections.getGenericTypeArgument(this.getClass(), 0);
+ }
+ return this.type;
+ }
+
+ protected Class getSubclass() {
+ if (this.subclass == null) {
+ this.subclass = Reflections.getGenericTypeArgument(this.getClass(), 1);
+ }
+ return this.subclass;
+ }
+}
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultTransaction.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultTransaction.java
index 14210a3..9983c60 100644
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultTransaction.java
+++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultTransaction.java
@@ -89,6 +89,6 @@ public class DefaultTransaction implements Transaction {
private DemoiselleException getException() {
return new DemoiselleException(CoreBundle.get().getString("transaction-not-defined",
- Transactional.class.getSimpleName()));
+ Transactional.class.getSimpleName(), Transaction.class.getSimpleName()));
}
}
diff --git a/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JPATransactionBootstrap.java b/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JPATransactionBootstrap.java
index 9727a32..dd3fca4 100644
--- a/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JPATransactionBootstrap.java
+++ b/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JPATransactionBootstrap.java
@@ -37,7 +37,8 @@
package br.gov.frameworkdemoiselle.internal.bootstrap;
import br.gov.frameworkdemoiselle.transaction.JPATransaction;
+import br.gov.frameworkdemoiselle.transaction.Transaction;
-public class JPATransactionBootstrap extends AbstractTransactionBootstrap {
+public class JPATransactionBootstrap extends AbstractVetoBootstrap {
}
diff --git a/impl/extension/jta/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JTATransactionBootstrap.java b/impl/extension/jta/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JTATransactionBootstrap.java
index 6de51f3..bb9a948 100644
--- a/impl/extension/jta/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JTATransactionBootstrap.java
+++ b/impl/extension/jta/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JTATransactionBootstrap.java
@@ -37,7 +37,8 @@
package br.gov.frameworkdemoiselle.internal.bootstrap;
import br.gov.frameworkdemoiselle.transaction.JTATransaction;
+import br.gov.frameworkdemoiselle.transaction.Transaction;
-public class JTATransactionBootstrap extends AbstractTransactionBootstrap {
+public class JTATransactionBootstrap extends AbstractVetoBootstrap {
}
--
libgit2 0.21.2