View Javadoc
1   package com.atlassian.plugin.osgi.hostcomponents.impl;
2   
3   import com.atlassian.plugin.osgi.hostcomponents.HostComponentRegistration;
4   
5   import java.util.Arrays;
6   import java.util.Dictionary;
7   import java.util.Hashtable;
8   
9   
10  /**
11   * A registration of a host component
12   */
13  class Registration implements HostComponentRegistration {
14      private final String[] mainInterfaces;
15      private final Class<?>[] mainInterfaceClasses;
16      private final Dictionary<String, String> properties = new Hashtable<>();
17      private Object instance;
18  
19      public Registration(final Class<?>[] ifs) {
20          mainInterfaceClasses = ifs;
21          mainInterfaces = new String[ifs.length];
22          for (int x = 0; x < ifs.length; x++) {
23              if (!ifs[x].isInterface()) {
24                  throw new IllegalArgumentException("Services can only be registered against interfaces");
25              }
26  
27              mainInterfaces[x] = ifs[x].getName();
28          }
29      }
30  
31      public Object getInstance() {
32          return instance;
33      }
34  
35      public void setInstance(final Object instance) {
36          this.instance = instance;
37      }
38  
39      public Dictionary<String, String> getProperties() {
40          return properties;
41      }
42  
43      public String[] getMainInterfaces() {
44          return mainInterfaces;
45      }
46  
47      public Class<?>[] getMainInterfaceClasses() {
48          return mainInterfaceClasses;
49      }
50  
51      @Override
52      public boolean equals(final Object o) {
53          if (this == o) {
54              return true;
55          }
56          if ((o == null) || (getClass() != o.getClass())) {
57              return false;
58          }
59  
60          final Registration that = (Registration) o;
61  
62          if (!instance.equals(that.instance)) {
63              return false;
64          }
65          if (!Arrays.equals(mainInterfaces, that.mainInterfaces)) {
66              return false;
67          }
68          return properties.equals(that.properties);
69      }
70  
71      @Override
72      public int hashCode() {
73          int result;
74          result = Arrays.hashCode(mainInterfaces);
75          result = 31 * result + instance.hashCode();
76          result = 31 * result + properties.hashCode();
77          return result;
78      }
79  }