1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.spi.impl;
20
21 import javax.faces.context.ExternalContext;
22 import org.apache.myfaces.shared.util.ClassUtils;
23 import org.apache.myfaces.spi.InjectionProvider;
24 import org.apache.myfaces.spi.InjectionProviderException;
25 import org.apache.myfaces.util.ExternalSpecifications;
26
27
28
29
30 public class CDIAnnotationDelegateInjectionProvider extends InjectionProvider
31 {
32 private InjectionProvider delegate;
33 private final boolean available;
34
35 public CDIAnnotationDelegateInjectionProvider(ExternalContext externalContext)
36 {
37 if (ExternalSpecifications.isCDIAvailable(externalContext))
38 {
39 try
40 {
41 Class clazz = ClassUtils.simpleClassForName(
42 "org.apache.myfaces.cdi.impl.CDIAnnotationInjectionProvider");
43 delegate = (InjectionProvider) clazz.getConstructor(
44 ExternalContext.class).newInstance(externalContext);
45 }
46 catch(Exception e)
47 {
48
49 }
50 }
51 available = (delegate != null);
52 }
53
54 @Override
55 public Object inject(Object instance) throws InjectionProviderException
56 {
57 if (available)
58 {
59 return delegate.inject(instance);
60 }
61 return null;
62 }
63
64 @Override
65 public void postConstruct(Object instance, Object creationMetaData) throws InjectionProviderException
66 {
67 if (available)
68 {
69 delegate.postConstruct(instance, creationMetaData);
70 }
71 }
72
73 @Override
74 public void preDestroy(Object instance, Object creationMetaData) throws InjectionProviderException
75 {
76 if (available)
77 {
78 delegate.preDestroy(instance, creationMetaData);
79 }
80 }
81
82 @Override
83 public boolean isAvailable()
84 {
85 return available;
86 }
87 }