Initialization of authorization service from the code is now working.
[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 import org.wamblee.security.authorization.AuthorizationService;
29
30 /**
31  * @author Erik Brakkee
32  * 
33  */
34 @Singleton
35 @Startup
36 public class Initializer {
37
38         private static final Logger LOGGER = Logger.getLogger(Initializer.class
39                         .getName());
40
41         /**
42          * We need this helper to do initialization of the beans from within the
43          * post construct method. Injecting these objects into the initializer class
44          * will lead to initialization outside of a transactional context and this
45          * is does not work because and entity manager is required.
46          * 
47          * @author Erik Brakkee
48          * 
49          */
50         public static class Helper {
51                 @Inject
52                 private UserAdministration userAdmin;
53
54                 @Inject
55                 private AuthorizationService authorizationService;
56
57                 @Inject
58                 @AllPhotos
59                 private Album album;
60
61                 public void init() {
62                         userAdmin.getUserCount();
63                         album.size();
64                         authorizationService.getRules();
65                 }
66         }
67
68         @PostConstruct
69         public void scheduleInit() {
70                 LOGGER.info("Photo application initializing");
71                 // timerService.createTimer(1000, 1000, null);
72                 LOGGER.info("Initializing photo application");
73                 Helper helper = new Helper();
74                 InjectorBuilder.getInjector().inject(helper);
75                 helper.init();
76                 LOGGER.info("Initialized photo application");
77         }
78 }