1 package org.apache.onami.persist;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import javax.inject.Inject;
23 import javax.servlet.FilterChain;
24 import javax.servlet.FilterConfig;
25 import javax.servlet.ServletException;
26 import javax.servlet.ServletRequest;
27 import javax.servlet.ServletResponse;
28 import java.io.IOException;
29
30 import static org.apache.onami.persist.Preconditions.checkNotNull;
31
32
33
34
35 class PersistenceFilterImpl
36 implements PersistenceFilter
37 {
38
39
40
41
42 private final AllPersistenceServices allPersistenceServices;
43
44
45
46
47 private final AllUnitsOfWork allUnitsOfWork;
48
49
50
51
52
53
54
55 @Inject
56 PersistenceFilterImpl( AllPersistenceServices allPersistenceServices, AllUnitsOfWork allUnitsOfWork )
57 {
58 this.allPersistenceServices = checkNotNull( allPersistenceServices, "allPersistenceServices is mandatory!" );
59 this.allUnitsOfWork = checkNotNull( allUnitsOfWork, "allUnitsOfWork is mandatory!" );
60 }
61
62
63
64
65
66 public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain )
67 throws IOException, ServletException
68 {
69 try
70 {
71 allUnitsOfWork.beginAllInactiveUnitsOfWork();
72 chain.doFilter( request, response );
73 }
74 finally
75 {
76 allUnitsOfWork.endAllUnitsOfWork();
77 }
78 }
79
80
81
82
83
84 public void init( FilterConfig filterConfig )
85 throws ServletException
86 {
87 allPersistenceServices.startAllStoppedPersistenceServices();
88 }
89
90
91
92
93
94 public void destroy()
95 {
96 allPersistenceServices.stopAllPersistenceServices();
97 }
98
99 }