diff --git a/impl/core/pom.xml b/impl/core/pom.xml index b9353d5..4135fda 100755 --- a/impl/core/pom.xml +++ b/impl/core/pom.xml @@ -34,7 +34,8 @@ ou escreva para a Fundação do Software Livre (FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. --> - + 4.0.0 diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/DefaultTransactionBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/DefaultTransactionBootstrap.java new file mode 100644 index 0000000..7974d47 --- /dev/null +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/DefaultTransactionBootstrap.java @@ -0,0 +1,140 @@ +/* + * 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 java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import javax.enterprise.event.Observes; +import javax.enterprise.inject.spi.Extension; +import javax.enterprise.inject.spi.ProcessAnnotatedType; + +import br.gov.frameworkdemoiselle.transaction.Transaction; +import br.gov.frameworkdemoiselle.util.Reflections; + +//public class DefaultTransactionBootstrap extends AbstractVetoBootstrap { +public class DefaultTransactionBootstrap implements Extension { + + private static void x() { + try { + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + Class clClass = cl.getClass(); + + while (clClass != ClassLoader.class) { + clClass = clClass.getSuperclass(); + } + + Field field = clClass.getDeclaredField("classes"); + + field.setAccessible(true); + @SuppressWarnings("unchecked") + // Vector> classes = (Vector>) field.get(cl); + List> classes = new ArrayList>((List>) field.get(cl)); + // List> classes = (List>) field.get(cl); + field.setAccessible(false); + + // for (Iterator> iter = classes.iterator(); iter.hasNext();) { + // Class clazz = iter.next(); + // + // if (Reflections.isOfType(clazz, Transaction.class)) { + // System.out.println("......... " + clazz); + // } + // } + + for (Class clazz : classes) { + if (Reflections.isOfType(clazz, Transaction.class)) { + // if (Transaction.class.isAssignableFrom(clazz) && clazz != Transaction.class) { + System.out.println("......... " + clazz); + } + } + + } catch (Exception cause) { + cause.printStackTrace(); + } + } + + // private static Class cache; + + public void beforeBeanDiscovery(@Observes final ProcessAnnotatedType event) { + +// public void beforeBeanDiscovery(@Observes final BeforeBeanDiscovery event) { + + x(); + System.out.println(); + +// ClassLoader cl + + // private static ProcessAnnotatedType cachedEvent; + // + // protected void processAnnotatedType(@Observes final ProcessAnnotatedType event) { + // Class annotated = event.getAnnotatedType().getJavaClass(); + // + // if (Reflections.isOfType(annotated, Transaction.class)) { + // + // if(cachedEvent == null) { + // cachedEvent = event; + // + // } else { + // Class cachedClass = cachedEvent.getAnnotatedType().getJavaClass(); + // + // if (getPriority(annotated) > getPriority(cachedClass)) { + // cachedEvent.veto(); + // cachedEvent = event; + // + // } else { + // event.veto(); + // } + // } + // } + // } + // + // private int getPriority(Class type) { + // int priority = Priority.MAX_PRIORITY; + // + // if (type == null) { + // priority = Priority.MIN_PRIORITY; + // + // } else if (type.isAnnotationPresent(Priority.class)) { + // Priority annotation = type.getAnnotation(Priority.class); + // priority = annotation.value(); + // } + // + // return priority; + } + +} diff --git a/impl/core/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension b/impl/core/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension index 29ccf23..db0a150 100644 --- a/impl/core/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension +++ b/impl/core/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension @@ -1,4 +1,5 @@ br.gov.frameworkdemoiselle.internal.bootstrap.CoreBootstrap br.gov.frameworkdemoiselle.internal.bootstrap.ConfigurationBootstrap +br.gov.frameworkdemoiselle.internal.bootstrap.DefaultTransactionBootstrap br.gov.frameworkdemoiselle.internal.bootstrap.StartupBootstrap br.gov.frameworkdemoiselle.internal.bootstrap.ShutdownBootstrap 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 dd3fca4..7fde55f 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 @@ -40,5 +40,5 @@ import br.gov.frameworkdemoiselle.transaction.JPATransaction; import br.gov.frameworkdemoiselle.transaction.Transaction; public class JPATransactionBootstrap extends AbstractVetoBootstrap { - + } -- libgit2 0.21.2