source: contrib/MailArchiver/sources/src/serpro/mailarchiver/view/BaseApplication.java @ 6785

Revision 6785, 3.0 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado codigo do MailArchiver?. Documentação na subpasta DOCS.

Line 
1/**
2 * MailArchiver is an application that provides services for storing and managing e-mail messages through a Web Services SOAP interface.
3 * Copyright (C) 2012  Marcio Andre Scholl Levien and Fernando Alberto Reuter Wendt and Jose Ronaldo Nogueira Fonseca Junior
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Affero General Public License as
7 * published by the Free Software Foundation, either version 3 of the
8 * License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
19/******************************************************************************\
20*
21*  This product was developed by
22*
23*        SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO),
24*
25*  a government company established under Brazilian law (5.615/70),
26*  at Department of Development of Porto Alegre.
27*
28\******************************************************************************/
29
30package serpro.mailarchiver.view;
31
32import javax.annotation.PostConstruct;
33import javax.servlet.http.HttpServletRequest;
34import javax.servlet.http.HttpServletResponse;
35
36import org.springframework.beans.factory.annotation.Autowired;
37import org.springframework.beans.factory.annotation.Configurable;
38
39import com.eventrouter.DispatchContext;
40import com.eventrouter.SubscriptionRegistry;
41import com.eventrouter.annotation.AnnotationProcessor;
42
43import com.vaadin.Application;
44import com.vaadin.terminal.gwt.server.HttpServletRequestListener;
45
46@Configurable
47public abstract class BaseApplication extends Application implements HttpServletRequestListener {
48
49    private static final InheritableThreadLocal<BaseApplication> threadApp = new InheritableThreadLocal<BaseApplication>();
50
51    @Autowired
52    private DispatchContext dispatchContext;
53
54    public final DispatchContext getDispatchContext() {
55        return dispatchContext;
56    }
57
58    public BaseApplication() {
59        threadApp.set(this);
60    }
61
62    @PostConstruct
63    private void postConstruct() {
64        SubscriptionRegistry subscriptionRegistry = dispatchContext.getSubscriptionRegistry();
65        AnnotationProcessor processor = new AnnotationProcessor(subscriptionRegistry);
66        processor.process(this);
67    }
68
69    //--------------------------------------------------------------------------
70    @Override
71    public void onRequestStart(HttpServletRequest request, HttpServletResponse response) {
72        threadApp.set(this);
73    }
74
75    @Override
76    public void onRequestEnd(HttpServletRequest request, HttpServletResponse response) {
77        threadApp.remove();
78    }
79
80    public static BaseApplication getInstance() {
81        return threadApp.get();
82    }
83
84}
Note: See TracBrowser for help on using the repository browser.