Commit 8ff809120d6f9a27626618ba997563c6744c80b9

Authored by Emerson Oliveira
1 parent 0797a2d4
Exists in master

Migração dos métodos de carregamento de resource para o utilitário

Reflections
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 }
... ...