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,6 +36,7 @@
36 */ 36 */
37 package br.gov.frameworkdemoiselle.internal.bootstrap; 37 package br.gov.frameworkdemoiselle.internal.bootstrap;
38 38
  39 +import java.io.Serializable;
39 import java.lang.annotation.Annotation; 40 import java.lang.annotation.Annotation;
40 import java.lang.reflect.Type; 41 import java.lang.reflect.Type;
41 import java.util.HashSet; 42 import java.util.HashSet;
@@ -58,33 +59,54 @@ import javax.inject.Named; @@ -58,33 +59,54 @@ import javax.inject.Named;
58 import javax.inject.Qualifier; 59 import javax.inject.Qualifier;
59 import javax.inject.Scope; 60 import javax.inject.Scope;
60 61
  62 +import br.gov.frameworkdemoiselle.util.Beans;
  63 +
61 /** 64 /**
62 * @see http://docs.jboss.org/weld/reference/latest/en-US/html_single/#d0e5035 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 private Class<Object> beanClass; 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 this.beanClass = beanClass; 95 this.beanClass = beanClass;
  96 + this.beanManager = beanManager;
75 } 97 }
76 98
77 public Object create(CreationalContext<Object> creationalContext) { 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 return instance; 104 return instance;
83 } 105 }
84 106
85 public void destroy(Object instance, CreationalContext<Object> creationalContext) { 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 creationalContext.release(); 110 creationalContext.release();
89 } 111 }
90 112
@@ -166,6 +188,6 @@ public class CustomBean implements Bean&lt;Object&gt; { @@ -166,6 +188,6 @@ public class CustomBean implements Bean&lt;Object&gt; {
166 } 188 }
167 189
168 public Set<InjectionPoint> getInjectionPoints() { 190 public Set<InjectionPoint> getInjectionPoints() {
169 - return injectionTarget.getInjectionPoints(); 191 + return getInjectionTarget().getInjectionPoints();
170 } 192 }
171 } 193 }