View Javadoc

1   /*
2    * Copyright (c) 2015 Maxim Yunusov
3    *    Licensed under the Apache License, Version 2.0 (the "License");
4    *    you may not use this file except in compliance with the License.
5    *    You may obtain a copy of the License at
6    *
7    *        http://www.apache.org/licenses/LICENSE-2.0
8    *
9    *    Unless required by applicable law or agreed to in writing, software
10   *    distributed under the License is distributed on an "AS IS" BASIS,
11   *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   *    See the License for the specific language governing permissions and
13   *    limitations under the License.
14   */
15  
16  package org.maxur.perfmodel.backend;
17  
18  import org.glassfish.hk2.api.Factory;
19  import org.glassfish.hk2.api.ServiceLocator;
20  import org.maxur.perfmodel.backend.infrastructure.DataSourceLevelDbImpl;
21  
22  import javax.inject.Inject;
23  
24  /**
25   * @author myunusov
26   * @version 1.0
27   * @since <pre>12.09.2015</pre>
28   */
29  public class DataSourceProvider implements Factory<DataSourceLevelDbImpl> {
30  
31      private static DataSourceLevelDbImpl ds;
32  
33      @Inject
34      private ServiceLocator locator;
35  
36      @Override
37      public DataSourceLevelDbImpl provide() {
38          if (ds == null) {
39              ds = new DataSourceLevelDbImpl();
40              locator.inject(ds);
41              ds.init();
42          }
43          return ds;
44      }
45  
46      @Override
47      public void dispose(final DataSourceLevelDbImpl instance) {
48          instance.stop();
49      }
50  }