View Javadoc

1   package org.apache.directmemory.conf;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.slf4j.Logger;
23  import org.slf4j.LoggerFactory;
24  
25  
26  /**
27   * Provides a global single point of access to all singleton properties comprehensible to DirectMemory.
28   * @since 0.2
29   */
30  public final class Configuration
31  {
32      private static final Logger logger = LoggerFactory.getLogger( Configuration.class );
33  
34      public static int getNumberOfBuffers()
35      {
36          return configurationService.getNumberOfBuffers();
37      }
38  
39      public static int getInitialCapacity()
40      {
41          return configurationService.getInitialCapacity();
42      }
43  
44      public static int getRamMegaBytes()
45      {
46          return configurationService.getRamMegaBytes();
47      }
48  
49      public static long getDisposalTime()
50      {
51          return configurationService.getDisposalTime();
52      }
53  
54      public static int getConcurrencyLevel()
55      {
56          return configurationService.getConcurrencyLevel();
57      }
58  
59      private static ConfigurationService configurationService;
60  
61      static
62      {
63          if ( configurationService == null )
64          {
65              // if not otherwise specified with another mechanism it uses the default implementation
66              logger.info( "using default configuration implementation" );
67              configurationService = new SimplePropertiesConfiguration();
68          }
69      }
70  
71      // Prevent instance escape
72      private Configuration()
73      {
74      }
75  
76      public static void configureFromYaml()
77      {
78          logger.info( "using yaml configuration implementation" );
79          configurationService = YamlConfiguration.load();
80      }
81  
82  }