View Javadoc

1   package fr.in2p3.jsaga.engine.config;
2   
3   import fr.in2p3.jsaga.EngineProperties;
4   import org.ogf.saga.SagaObject;
5   
6   import java.io.IOException;
7   import java.io.InputStream;
8   import java.net.URL;
9   import java.util.Properties;
10  
11  /* ***************************************************
12  * *** Centre de Calcul de l'IN2P3 - Lyon (France) ***
13  * ***             http://cc.in2p3.fr/             ***
14  * ***************************************************
15  * File:   TimeoutConfiguration
16  * Author: Sylvain Reynaud (sreynaud@in2p3.fr)
17  * Date:   28 mai 2009
18  * ***************************************************
19  * Description:                                      */
20  /**
21   *
22   */
23  public class TimeoutConfiguration {
24      private static TimeoutConfiguration _instance;
25      private Properties m_timeout;
26  
27      public static TimeoutConfiguration getInstance() throws ConfigurationException {
28          if (_instance == null) {
29              _instance = new TimeoutConfiguration();
30          }
31          return _instance;
32      }
33      private TimeoutConfiguration() throws ConfigurationException {
34          // init
35          m_timeout = new Properties();
36  
37          // load configuration
38          URL timeoutCfgURL = EngineProperties.getURL(EngineProperties.JSAGA_TIMEOUT);
39          if (timeoutCfgURL != null) {
40              try {
41                  InputStream timeoutCfgStream = timeoutCfgURL.openStream();
42                  m_timeout.load(timeoutCfgStream);
43                  timeoutCfgStream.close();
44              } catch (IOException e) {
45                  throw new ConfigurationException("Failed to load configuration file: "+timeoutCfgURL, e);
46              }
47          }
48      }
49  
50      public float getTimeout(Class itf, String methodName, String protocolScheme) throws ConfigurationException {
51          // get property
52          String methodKey = itf.getName()+"#"+methodName;
53          String protocolKey = methodKey+"|"+protocolScheme;
54          String timeout = m_timeout.getProperty(protocolKey);
55          if (timeout == null) {
56              timeout = m_timeout.getProperty(methodKey);
57          }
58  
59          // return timeout
60          if (timeout!=null && !timeout.trim().equals("")) {
61              try {
62                  return Float.parseFloat(timeout);
63              } catch (NumberFormatException e) {
64                  throw new ConfigurationException("Configured timeout is not a float for: "+protocolKey, e);
65              }
66          } else {
67              return SagaObject.WAIT_FOREVER;
68          }
69      }
70  }