50bed00a907aae1be4913e5a3108da8b75f6944b
[utils] / support / cdi / src / main / java / org / wamblee / cdi / BeanManagerLookup.java
1 /*
2  * Copyright 2005-2010 the original author or authors.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.wamblee.cdi;
17
18 import java.util.logging.Logger;
19
20 import javax.enterprise.inject.spi.BeanManager;
21 import javax.naming.InitialContext;
22 import javax.naming.NamingException;
23
24 /**
25  * Class that encapsulates beanmanager lookup in a way so that the lookup can be
26  * explicitly overriden (e.g. for unit test).
27  * 
28  * In case no bean manager is found the beanmanager is set to null and the
29  * problem is logged.
30  * 
31  * @author Erik Brakkee
32  */
33 public class BeanManagerLookup {
34
35     private static final Logger LOGGER = Logger
36         .getLogger(BeanManagerLookup.class.getName());
37
38     public static final String BEAN_MANAGER_JNDI = "java:comp/BeanManager";
39     private static BeanManager mgr = null;
40
41     /**
42      * Sets the bean manager (mainly for testability).
43      * 
44      * @param aMgr
45      *            Bean manager.
46      */
47     public static void setBeanManager(BeanManager aMgr) {
48         mgr = aMgr;
49     }
50
51     /**
52      * Looks up the bean manager if not already cached and returns it.
53      * 
54      * @return Bean manager.
55      */
56     public static BeanManager lookup() {
57         if (mgr == null) {
58             try {
59                 InitialContext ctx = new InitialContext();
60                 mgr = (BeanManager) ctx.lookup(BEAN_MANAGER_JNDI);
61                 LOGGER.info("Beanmanager successfully located");
62             } catch (NamingException e) {
63                 LOGGER.warning("No beanmanager was found, using null");
64                 mgr = null;
65             }
66         }
67         return mgr;
68     }
69 }