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.inject.Singleton;
24 import javax.persistence.EntityManagerFactory;
25
26 import static org.apache.onami.persist.Preconditions.checkNotNull;
27
28
29
30
31
32 @Singleton
33 class ApplicationManagedEntityManagerFactoryProvider
34 implements EntityManagerFactoryProvider, PersistenceService
35 {
36
37
38
39
40 private final EntityManagerFactoryFactory emfFactory;
41
42
43
44
45
46 private EntityManagerFactory emf;
47
48
49
50
51
52
53 @Inject
54 ApplicationManagedEntityManagerFactoryProvider( EntityManagerFactoryFactory emfFactory )
55 {
56 this.emfFactory = checkNotNull( emfFactory, "emfFactory is mandatory!" );
57 }
58
59
60
61
62
63 public EntityManagerFactory get()
64 {
65 if ( isRunning() )
66 {
67 return emf;
68 }
69
70 throw new IllegalStateException( "PersistenceService is not running." );
71 }
72
73
74
75
76
77 public void start()
78 {
79 if ( isRunning() )
80 {
81 throw new IllegalStateException( "PersistenceService is already running." );
82 }
83 emf = emfFactory.createApplicationManagedEntityManagerFactory();
84 }
85
86
87
88
89
90 public boolean isRunning()
91 {
92 return null != emf;
93 }
94
95
96
97
98
99 public void stop()
100 {
101 if ( isRunning() )
102 {
103 try
104 {
105 emf.close();
106 }
107 finally
108 {
109 emf = null;
110 }
111 }
112 }
113
114 }