Commit da970e933179bcc5bedeb1144587188601631b9f
1 parent
4cef0dd9
Exists in
master
Ajuste na Serialização do CustomBean
Showing
1 changed file
with
33 additions
and
11 deletions
Show diff stats
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<Object> { |
166 | 188 | } |
167 | 189 | |
168 | 190 | public Set<InjectionPoint> getInjectionPoints() { |
169 | - return injectionTarget.getInjectionPoints(); | |
191 | + return getInjectionTarget().getInjectionPoints(); | |
170 | 192 | } |
171 | 193 | } | ... | ... |