From b0c0e3ab735d1ccf0508aecff04b62f2ca865b73 Mon Sep 17 00:00:00 2001 From: Cleverson Sacramento Date: Wed, 11 Jul 2012 10:35:14 -0300 Subject: [PATCH] Mais ajustes para o devido funcionamento do carregamento da estratégia de transação via properties --- archetype/jsf-jpa/src/main/resources/archetype-resources/src/main/resources/demoiselle.properties | 2 +- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/TransactionBootstrap.java | 49 +++++++++++++++++++++++++++++-------------------- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultTransaction.java | 2 +- impl/core/src/main/resources/demoiselle-core-bundle.properties | 2 +- 4 files changed, 32 insertions(+), 23 deletions(-) diff --git a/archetype/jsf-jpa/src/main/resources/archetype-resources/src/main/resources/demoiselle.properties b/archetype/jsf-jpa/src/main/resources/archetype-resources/src/main/resources/demoiselle.properties index 5a4e21f..34d9324 100755 --- a/archetype/jsf-jpa/src/main/resources/archetype-resources/src/main/resources/demoiselle.properties +++ b/archetype/jsf-jpa/src/main/resources/archetype-resources/src/main/resources/demoiselle.properties @@ -34,4 +34,4 @@ # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JPATransaction -#frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JTATransaction \ No newline at end of file +#frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JTATransaction diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/TransactionBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/TransactionBootstrap.java index 50e4a0a..68612be 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/TransactionBootstrap.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/TransactionBootstrap.java @@ -37,6 +37,7 @@ package br.gov.frameworkdemoiselle.internal.bootstrap; import javax.enterprise.event.Observes; +import javax.enterprise.inject.spi.BeforeBeanDiscovery; import javax.enterprise.inject.spi.ProcessAnnotatedType; import org.apache.commons.configuration.Configuration; @@ -49,7 +50,16 @@ import br.gov.frameworkdemoiselle.util.Reflections; public class TransactionBootstrap extends AbstractBootstrap { - private static Class selected = loadSelected(); + private static Class selected = loadSelected(); + + public void beforeBeanDiscovery(@Observes final BeforeBeanDiscovery event) { + selected = loadSelected(); + + if (selected == null) { + selected = DefaultTransaction.class; + } + + } public void processAnnotatedType(@Observes final ProcessAnnotatedType event) { Class annotated = event.getAnnotatedType().getJavaClass(); @@ -61,30 +71,29 @@ public class TransactionBootstrap extends AbstractBootstrap { @SuppressWarnings("unchecked") private static Class loadSelected() { - synchronized (selected) { - String canonicalName = null; + Class result = null; + String canonicalName = null; - try { - Configuration config = new PropertiesConfiguration("demoiselle.properties"); - canonicalName = config.getString("frameworkdemoiselle.transaction.class", - DefaultTransaction.class.getCanonicalName()); + try { + Configuration config = new PropertiesConfiguration("demoiselle.properties"); + canonicalName = config.getString("frameworkdemoiselle.transaction.class", + DefaultTransaction.class.getCanonicalName()); - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - selected = (Class) Class.forName(canonicalName, false, classLoader); - selected.asSubclass(Transaction.class); + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + result = (Class) Class.forName(canonicalName, false, classLoader); + result.asSubclass(Transaction.class); - } catch (org.apache.commons.configuration.ConfigurationException cause) { - throw new ConfigurationException(getBundle().getString("file-not-found", "demoiselle.properties")); + } catch (org.apache.commons.configuration.ConfigurationException cause) { + throw new ConfigurationException(getBundle().getString("file-not-found", "demoiselle.properties")); - } catch (ClassNotFoundException cause) { - throw new ConfigurationException(getBundle().getString("transaction-class-not-found", canonicalName)); + } catch (ClassNotFoundException cause) { + throw new ConfigurationException(getBundle().getString("transaction-class-not-found", canonicalName)); - } catch (ClassCastException cause) { - throw new ConfigurationException(getBundle().getString("transaction-class-must-be-of-type", - canonicalName, Transaction.class.getCanonicalName())); - } + } catch (ClassCastException cause) { + throw new ConfigurationException(getBundle().getString("transaction-class-must-be-of-type", canonicalName, + Transaction.class.getCanonicalName())); } - - return selected; + + return result; } } 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 b9dc2a8..dc43360 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 @@ -85,6 +85,6 @@ public class DefaultTransaction implements Transaction { private DemoiselleException getException() { return new DemoiselleException(CoreBundle.get().getString("transaction-not-defined", - Transactional.class.getSimpleName(), Transaction.class.getSimpleName())); + Transactional.class.getSimpleName())); } } diff --git a/impl/core/src/main/resources/demoiselle-core-bundle.properties b/impl/core/src/main/resources/demoiselle-core-bundle.properties index 126cb94..6d2370b 100644 --- a/impl/core/src/main/resources/demoiselle-core-bundle.properties +++ b/impl/core/src/main/resources/demoiselle-core-bundle.properties @@ -58,7 +58,7 @@ configuration-attribute-is-mandatory=A configura\u00E7\u00E3o {0} \u00E9 obrigat configuration-name-attribute-cant-be-empty=A nota\u00E7\u00E3o Name n\u00E3o pode estar em branco configuration-key-not-found=Chave de configura\u00E7\u00E3o "{0}" n\u00E3o encontrada. Conven\u00E7\u00F5es verificadas\: "{1}" -transaction-not-defined=Nenhuma transa\u00E7\u00E3o foi definida. Para utilizar @{0} \u00E9 preciso escolher uma extens\u00E3o (ou componente) que possua uma estrat\u00E9gia de transa\u00E7\u00E3o, ou voc\u00EA pode criar a sua pr\u00F3pria estrat\u00E9gia implementando a interface {1} +transaction-not-defined=Nenhuma transa\u00E7\u00E3o foi definida. Para utilizar @{0} \u00E9 preciso definir a propriedade frameworkdemoiselle.transaction.class com a estrat\u00E9gia de transa\u00E7\u00E3o desejada no arquivo demoiselle.properties executing-all=Executando todos os \: {0} custom-context-was-registered=O contexto {0} foi registrado custom-context-was-unregistered=O contexto {0} foi removido -- libgit2 0.21.2