Commit 8ff809120d6f9a27626618ba997563c6744c80b9
1 parent
0797a2d4
Exists in
master
Migração dos métodos de carregamento de resource para o utilitário
Reflections
Showing
2 changed files
with
36 additions
and
2 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java
... | ... | @@ -57,7 +57,6 @@ import org.slf4j.Logger; |
57 | 57 | |
58 | 58 | import br.gov.frameworkdemoiselle.DemoiselleException; |
59 | 59 | import br.gov.frameworkdemoiselle.annotation.ViewScoped; |
60 | -import br.gov.frameworkdemoiselle.internal.configuration.ConfigurationLoader; | |
61 | 60 | import br.gov.frameworkdemoiselle.internal.context.Contexts; |
62 | 61 | import br.gov.frameworkdemoiselle.internal.context.AbstractCustomContext; |
63 | 62 | import br.gov.frameworkdemoiselle.internal.context.ThreadLocalContext; |
... | ... | @@ -145,7 +144,7 @@ public abstract class AbstractLifecycleBootstrap<A extends Annotation> implement |
145 | 144 | AnnotatedMethodProcessor<?> processor = iter.next(); |
146 | 145 | |
147 | 146 | try { |
148 | - ClassLoader classLoader = ConfigurationLoader.getClassLoaderForClass(processor.getAnnotatedMethod() | |
147 | + ClassLoader classLoader = Reflections.getClassLoaderForClass(processor.getAnnotatedMethod() | |
149 | 148 | .getDeclaringType().getJavaClass().getCanonicalName()); |
150 | 149 | |
151 | 150 | if (Thread.currentThread().getContextClassLoader().equals(classLoader)) { | ... | ... |
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Reflections.java
... | ... | @@ -36,16 +36,20 @@ |
36 | 36 | */ |
37 | 37 | package br.gov.frameworkdemoiselle.util; |
38 | 38 | |
39 | +import java.io.FileNotFoundException; | |
39 | 40 | import java.lang.reflect.Field; |
40 | 41 | import java.lang.reflect.Member; |
41 | 42 | import java.lang.reflect.Method; |
42 | 43 | import java.lang.reflect.Modifier; |
43 | 44 | import java.lang.reflect.ParameterizedType; |
44 | 45 | import java.lang.reflect.Type; |
46 | +import java.net.URL; | |
45 | 47 | import java.util.ArrayList; |
46 | 48 | import java.util.Arrays; |
47 | 49 | import java.util.List; |
48 | 50 | |
51 | +import br.gov.frameworkdemoiselle.internal.configuration.ConfigurationLoader; | |
52 | + | |
49 | 53 | public final class Reflections { |
50 | 54 | |
51 | 55 | private Reflections() { |
... | ... | @@ -158,4 +162,35 @@ public final class Reflections { |
158 | 162 | public static boolean isOfType(Class<?> clazz, Class<?> type) { |
159 | 163 | return type.isAssignableFrom(clazz) && clazz != type; |
160 | 164 | } |
165 | + | |
166 | + public static ClassLoader getClassLoaderForClass(final String canonicalName) throws FileNotFoundException { | |
167 | + return Reflections.getClassLoaderForResource(canonicalName.replaceAll("\\.", "/") + ".class"); | |
168 | + } | |
169 | + | |
170 | + public static ClassLoader getClassLoaderForResource(final String resource) throws FileNotFoundException { | |
171 | + final String stripped = resource.startsWith("/") ? resource.substring(1) : resource; | |
172 | + | |
173 | + URL url = null; | |
174 | + ClassLoader result = Thread.currentThread().getContextClassLoader(); | |
175 | + | |
176 | + if (result != null) { | |
177 | + url = result.getResource(stripped); | |
178 | + } | |
179 | + | |
180 | + if (url == null) { | |
181 | + result = ConfigurationLoader.class.getClassLoader(); | |
182 | + url = ConfigurationLoader.class.getClassLoader().getResource(stripped); | |
183 | + } | |
184 | + | |
185 | + if (url == null) { | |
186 | + result = null; | |
187 | + } | |
188 | + | |
189 | + return result; | |
190 | + } | |
191 | + | |
192 | + public static URL getResourceAsURL(final String resource) throws FileNotFoundException { | |
193 | + ClassLoader classLoader = getClassLoaderForResource(resource); | |
194 | + return classLoader != null ? classLoader.getResource(resource) : null; | |
195 | + } | |
161 | 196 | } | ... | ... |