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  {
15      private final String[] mainInterfaces;
16      private final Class<?>[] mainInterfaceClasses;
17      private final Dictionary<String,String> properties = new Hashtable<String,String>();
18      private Object instance;
19  
20      public Registration(final Class<?>[] ifs)
21      {
22          mainInterfaceClasses = ifs;
23          mainInterfaces = new String[ifs.length];
24          for (int x=0; x<ifs.length; x++)
25          {
26              if (!ifs[x].isInterface())
27              {
28                  throw new IllegalArgumentException("Services can only be registered against interfaces");
29              }
30  
31              mainInterfaces[x] = ifs[x].getName();
32          }
33      }
34  
35      public Object getInstance()
36      {
37          return instance;
38      }
39  
40      public void setInstance(final Object instance)
41      {
42          this.instance = instance;
43      }
44  
45      public Dictionary<String, String> getProperties()
46      {
47          return properties;
48      }
49  
50      public String[] getMainInterfaces()
51      {
52          return mainInterfaces;
53      }
54  
55      public Class<?>[] getMainInterfaceClasses()
56      {
57          return mainInterfaceClasses;
58      }
59  
60      @Override
61      public boolean equals(final Object o)
62      {
63          if (this == o)
64          {
65              return true;
66          }
67          if ((o == null) || (getClass() != o.getClass()))
68          {
69              return false;
70          }
71  
72          final Registration that = (Registration) o;
73  
74          if (!instance.equals(that.instance))
75          {
76              return false;
77          }
78          if (!Arrays.equals(mainInterfaces, that.mainInterfaces))
79          {
80              return false;
81          }
82          if (!properties.equals(that.properties))
83          {
84              return false;
85          }
86  
87          return true;
88      }
89  
90      @Override
91      public int hashCode()
92      {
93          int result;
94          result = Arrays.hashCode(mainInterfaces);
95          result = 31 * result + instance.hashCode();
96          result = 31 * result + properties.hashCode();
97          return result;
98      }
99  }