Commit dfac7827c5a47caf1ee5c61409677995dde8b45e
1 parent
7c0c79d6
Exists in
master
Lendo o arquivo demoiselle.properties antes de tentar resolver
automaticamente as estratégias de transação e segurança
Showing
3 changed files
with
27 additions
and
13 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/SecurityContextImpl.java
... | ... | @@ -69,7 +69,9 @@ public class SecurityContextImpl implements SecurityContext { |
69 | 69 | private Authenticator getAuthenticator() { |
70 | 70 | if (authenticator == null) { |
71 | 71 | AuthenticatorBootstrap bootstrap = Beans.getReference(AuthenticatorBootstrap.class); |
72 | - authenticator = StrategySelector.getPriorityReference(bootstrap.getCache()); | |
72 | + | |
73 | + authenticator = StrategySelector.getReference("frameworkdemoiselle.security.authenticator.class", | |
74 | + Authenticator.class, DefaultAuthenticator.class, bootstrap.getCache()); | |
73 | 75 | } |
74 | 76 | |
75 | 77 | return authenticator; |
... | ... | @@ -78,7 +80,9 @@ public class SecurityContextImpl implements SecurityContext { |
78 | 80 | private Authorizer getAuthorizer() { |
79 | 81 | if (authorizer == null) { |
80 | 82 | AuthorizerBootstrap bootstrap = Beans.getReference(AuthorizerBootstrap.class); |
81 | - authorizer = StrategySelector.getPriorityReference(bootstrap.getCache()); | |
83 | + | |
84 | + authorizer = StrategySelector.getReference("frameworkdemoiselle.security.authorizer.class", | |
85 | + Authorizer.class, DefaultAuthorizer.class, bootstrap.getCache()); | |
82 | 86 | } |
83 | 87 | |
84 | 88 | return authorizer; | ... | ... |
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/StrategySelector.java
... | ... | @@ -62,7 +62,7 @@ public final class StrategySelector implements Serializable { |
62 | 62 | public static final int EXTENSIONS_L1_PRIORITY = CORE_PRIORITY - 100; |
63 | 63 | |
64 | 64 | public static final int EXTENSIONS_L2_PRIORITY = EXTENSIONS_L1_PRIORITY - 100; |
65 | - | |
65 | + | |
66 | 66 | public static final int COMPONENTS_PRIORITY = EXTENSIONS_L2_PRIORITY - 100; |
67 | 67 | |
68 | 68 | private static final long serialVersionUID = 1L; |
... | ... | @@ -70,6 +70,17 @@ public final class StrategySelector implements Serializable { |
70 | 70 | private StrategySelector() { |
71 | 71 | } |
72 | 72 | |
73 | + public static <T> T getReference(String configKey, Class<T> strategyType, Class<? extends T> defaultType, | |
74 | + List<Class<T>> options) { | |
75 | + T result = getExplicitReference(configKey, strategyType, defaultType); | |
76 | + | |
77 | + if (result.getClass() == defaultType) { | |
78 | + result = getPriorityReference(options); | |
79 | + } | |
80 | + | |
81 | + return result; | |
82 | + } | |
83 | + | |
73 | 84 | public static <T> T getPriorityReference(List<Class<T>> options) { |
74 | 85 | Class<T> selected = null; |
75 | 86 | |
... | ... | @@ -77,9 +88,6 @@ public final class StrategySelector implements Serializable { |
77 | 88 | if (selected == null || getPriority(option) < getPriority(selected)) { |
78 | 89 | selected = option; |
79 | 90 | } |
80 | - | |
81 | - System.out.println(option.getCanonicalName()); | |
82 | - System.out.println(selected.getCanonicalName()); | |
83 | 91 | } |
84 | 92 | |
85 | 93 | return Beans.getReference(selected); |
... | ... | @@ -96,19 +104,19 @@ public final class StrategySelector implements Serializable { |
96 | 104 | return result; |
97 | 105 | } |
98 | 106 | |
99 | - public static <T> T getReference(String configKey, Class<T> type, Class<? extends T> defaultType) { | |
100 | - Class<T> selectedType = loadSelected(configKey, type, defaultType); | |
107 | + public static <T> T getExplicitReference(String configKey, Class<T> strategyType, Class<? extends T> defaultType) { | |
108 | + Class<T> selectedType = loadSelected(configKey, strategyType, defaultType); | |
101 | 109 | return Beans.getReference(selectedType); |
102 | 110 | } |
103 | 111 | |
104 | 112 | @SuppressWarnings("unchecked") |
105 | - private static <T> Class<T> loadSelected(String configKey, Class<T> type, Class<? extends T> defaultType) { | |
113 | + private static <T> Class<T> loadSelected(String configKey, Class<T> strategyType, Class<? extends T> defaultType) { | |
106 | 114 | ResourceBundle bundle = ResourceBundleProducer.create("demoiselle-core-bundle", |
107 | 115 | Beans.getReference(Locale.class)); |
108 | 116 | |
109 | 117 | Class<T> result = null; |
110 | 118 | String canonicalName = null; |
111 | - String typeName = type.getSimpleName().toLowerCase(); | |
119 | + String typeName = strategyType.getSimpleName().toLowerCase(); | |
112 | 120 | String key = null; |
113 | 121 | |
114 | 122 | try { |
... | ... | @@ -122,7 +130,7 @@ public final class StrategySelector implements Serializable { |
122 | 130 | } |
123 | 131 | |
124 | 132 | result = (Class<T>) Class.forName(canonicalName, false, classLoader); |
125 | - result.asSubclass(type); | |
133 | + result.asSubclass(strategyType); | |
126 | 134 | |
127 | 135 | } catch (org.apache.commons.configuration.ConfigurationException cause) { |
128 | 136 | throw new ConfigurationException(bundle.getString("file-not-found", "demoiselle.properties")); |
... | ... | @@ -136,7 +144,7 @@ public final class StrategySelector implements Serializable { |
136 | 144 | |
137 | 145 | } catch (ClassCastException cause) { |
138 | 146 | key = Strings.getString("{0}-class-must-be-of-type", typeName); |
139 | - throw new ConfigurationException(bundle.getString(key, canonicalName, type)); | |
147 | + throw new ConfigurationException(bundle.getString(key, canonicalName, strategyType)); | |
140 | 148 | } |
141 | 149 | |
142 | 150 | return result; | ... | ... |
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/TransactionContextImpl.java
... | ... | @@ -58,7 +58,9 @@ public class TransactionContextImpl implements TransactionContext { |
58 | 58 | private Transaction getTransaction() { |
59 | 59 | if (this.transaction == null) { |
60 | 60 | TransactionBootstrap bootstrap = Beans.getReference(TransactionBootstrap.class); |
61 | - this.transaction = StrategySelector.getPriorityReference(bootstrap.getCache()); | |
61 | + | |
62 | + this.transaction = StrategySelector.getReference("frameworkdemoiselle.transaction.class", | |
63 | + Transaction.class, DefaultTransaction.class, bootstrap.getCache()); | |
62 | 64 | } |
63 | 65 | |
64 | 66 | return this.transaction; | ... | ... |