Commit da970e933179bcc5bedeb1144587188601631b9f

Authored by Cleverson Sacramento
1 parent 4cef0dd9
Exists in master

Ajuste na Serialização do CustomBean

impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CustomBean.java
... ... @@ -36,6 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.internal.bootstrap;
38 38  
  39 +import java.io.Serializable;
39 40 import java.lang.annotation.Annotation;
40 41 import java.lang.reflect.Type;
41 42 import java.util.HashSet;
... ... @@ -58,33 +59,54 @@ import javax.inject.Named;
58 59 import javax.inject.Qualifier;
59 60 import javax.inject.Scope;
60 61  
  62 +import br.gov.frameworkdemoiselle.util.Beans;
  63 +
61 64 /**
62 65 * @see http://docs.jboss.org/weld/reference/latest/en-US/html_single/#d0e5035
63 66 */
64   -public class CustomBean implements Bean<Object> {
  67 +public class CustomBean implements Bean<Object>, Serializable {
  68 +
  69 + private static final long serialVersionUID = 1L;
65 70  
66 71 private Class<Object> beanClass;
67 72  
68   - private InjectionTarget<Object> injectionTarget;
  73 + private transient InjectionTarget<Object> injectionTarget;
69 74  
70   - public CustomBean(Class<Object> beanClass, BeanManager beanManager) {
71   - AnnotatedType<Object> annotatedType = beanManager.createAnnotatedType(beanClass);
  75 + private transient BeanManager beanManager;
  76 +
  77 + private InjectionTarget<Object> getInjectionTarget() {
  78 + if (this.injectionTarget == null) {
  79 + AnnotatedType<Object> annotatedType = getBeanManager().createAnnotatedType(beanClass);
  80 + this.injectionTarget = getBeanManager().createInjectionTarget(annotatedType);
  81 + }
  82 +
  83 + return this.injectionTarget;
  84 + }
  85 +
  86 + private BeanManager getBeanManager() {
  87 + if (this.beanManager == null) {
  88 + this.beanManager = Beans.getBeanManager();
  89 + }
72 90  
73   - this.injectionTarget = beanManager.createInjectionTarget(annotatedType);
  91 + return this.beanManager;
  92 + }
  93 +
  94 + public CustomBean(Class<Object> beanClass, BeanManager beanManager) {
74 95 this.beanClass = beanClass;
  96 + this.beanManager = beanManager;
75 97 }
76 98  
77 99 public Object create(CreationalContext<Object> creationalContext) {
78   - Object instance = injectionTarget.produce(creationalContext);
79   - injectionTarget.inject(instance, creationalContext);
80   - injectionTarget.postConstruct(instance);
  100 + Object instance = getInjectionTarget().produce(creationalContext);
  101 + getInjectionTarget().inject(instance, creationalContext);
  102 + getInjectionTarget().postConstruct(instance);
81 103  
82 104 return instance;
83 105 }
84 106  
85 107 public void destroy(Object instance, CreationalContext<Object> creationalContext) {
86   - injectionTarget.preDestroy(instance);
87   - injectionTarget.dispose(instance);
  108 + getInjectionTarget().preDestroy(instance);
  109 + getInjectionTarget().dispose(instance);
88 110 creationalContext.release();
89 111 }
90 112  
... ... @@ -166,6 +188,6 @@ public class CustomBean implements Bean&lt;Object&gt; {
166 188 }
167 189  
168 190 public Set<InjectionPoint> getInjectionPoints() {
169   - return injectionTarget.getInjectionPoints();
  191 + return getInjectionTarget().getInjectionPoints();
170 192 }
171 193 }
... ...