1   package com.atlassian.pageobjects.elements;
2   
3   import com.google.common.collect.ImmutableMap;
4   
5   import java.util.Map;
6   
7   /**
8    * Maps element interfaces to web driver implementations.
9    *
10   */
11  public class WebDriverElementMappings
12  {
13      private static final Map<Class<? extends PageElement>, Class<? extends PageElement>> MAPPINGS = ImmutableMap.<Class<? extends PageElement>, Class<? extends PageElement>>builder()
14              .put(PageElement.class, WebDriverElement.class)
15              .put(SelectElement.class, WebDriverSelectElement.class)
16              .put(MultiSelectElement.class, WebDriverMultiSelectElement.class)
17              .put(CheckboxElement.class, WebDriverCheckboxElement.class)
18              .build();
19  
20  
21      @SuppressWarnings({"unchecked"})
22      public static <T extends PageElement> Class<T> findMapping(Class<T> input)
23      {
24          if (!input.isInterface())
25          {
26              // concrete class - just return it
27              return input;
28          }
29          Class<T> answer = (Class<T>) MAPPINGS.get(input);
30          if (answer == null)
31          {
32              answer = (Class<T>) WebDriverElement.class;
33          }
34          return answer;
35      }
36  }