1   package com.atlassian.pageobjects.elements.timeout;
2   
3   
4   import java.util.HashMap;
5   
6   /**
7    * {@link Timeouts} implementation that reads values from a default properties file or loads default timeouts if file
8    * is not found.
9    */
10  public class DefaultTimeouts implements Timeouts
11  {
12      private static final String PAGE_OBJECTS_TIMEOUTS_PROPERTIES = "com/atlassian/timeout/pageobjects-timeouts.properties";
13  
14      public static final long DEFAULT = 5000L;
15      public static final long DEFAULT_PAGE_LOAD = 20000L;
16      public static final long DEFAULT_AJAX_ACTION = DEFAULT;
17      public static final long DEFAULT_DIALOG_LOAD = DEFAULT;
18  
19      private final Timeouts timeouts;
20  
21  
22  
23      public DefaultTimeouts()
24      {
25           if(this.getClass().getClassLoader().getResource(PAGE_OBJECTS_TIMEOUTS_PROPERTIES) != null)
26           {
27               timeouts = PropertiesBasedTimeouts.fromClassPath(PAGE_OBJECTS_TIMEOUTS_PROPERTIES);
28           }
29          else
30           {
31               HashMap<TimeoutType, Long> defaultTimeouts = new HashMap<TimeoutType, Long>();
32               defaultTimeouts.put(TimeoutType.DEFAULT, DEFAULT);
33               defaultTimeouts.put(TimeoutType.EVALUATION_INTERVAL, DEFAULT_INTERVAL);
34               defaultTimeouts.put(TimeoutType.UI_ACTION, 1000L);
35               defaultTimeouts.put(TimeoutType.PAGE_LOAD, DEFAULT_PAGE_LOAD);
36               defaultTimeouts.put(TimeoutType.SLOW_PAGE_LOAD, 50000L);
37               defaultTimeouts.put(TimeoutType.DIALOG_LOAD, DEFAULT_DIALOG_LOAD);
38               defaultTimeouts.put(TimeoutType.COMPONENT_LOAD, 3000L);
39               defaultTimeouts.put(TimeoutType.AJAX_ACTION, DEFAULT_AJAX_ACTION);
40               timeouts = new MapBasedTimeouts(defaultTimeouts);
41           }
42      }
43  
44      public long timeoutFor(TimeoutType timeoutType)
45      {
46          return timeouts.timeoutFor(timeoutType);
47      }
48  }