b5ace148c012cb1b953fdacc1d0f22f13cb0a8f9
[photos] / src / main / java / org / wamblee / photos / model / plumbing / Initializer.java
1 /*
2  * Copyright 2005-2013 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.photos.model.plumbing;
17
18 import java.util.logging.Logger;
19
20 import javax.annotation.PostConstruct;
21 import javax.ejb.Singleton;
22 import javax.ejb.Startup;
23 import javax.inject.Inject;
24
25 import org.wamblee.inject.InjectorBuilder;
26 import org.wamblee.photos.model.Album;
27 import org.wamblee.security.authentication.UserAdministration;
28
29 /**
30  * @author Erik Brakkee
31  * 
32  */
33 @Singleton
34 @Startup
35 public class Initializer {
36
37     private static final Logger LOGGER = Logger.getLogger(Initializer.class
38         .getName());
39
40     /**
41      * We need this helper to do initialization of the beans from within the
42      * post construct method. Injecting these objects into the initializer class
43      * will lead to initialization outside of a transactional context and this
44      * is does not work because and entity manager is required.
45      * 
46      * @author Erik Brakkee
47      * 
48      */
49     public static class Helper {
50         @Inject
51         private UserAdministration userAdmin;
52
53         @Inject
54         @AllPhotos
55         private Album album;
56
57         public void init() {
58             userAdmin.getUserCount();
59             album.size();
60         }
61     }
62
63     @PostConstruct
64     public void scheduleInit() {
65         LOGGER.info("Photo application initializing");
66         // timerService.createTimer(1000, 1000, null);
67         LOGGER.info("Initializing photo application");
68         Helper helper = new Helper();
69         InjectorBuilder.getInjector().inject(helper);
70         helper.init();
71         LOGGER.info("Initialized photo application");
72     }
73 }