View Javadoc

1   package com.atlassian.plugin.osgi.hostcomponents.impl;
2   
3   import com.atlassian.plugin.osgi.hostcomponents.HostComponentRegistration;
4   
5   import java.util.Dictionary;
6   import java.util.Hashtable;
7   import java.util.Arrays;
8   
9   import org.osgi.framework.ServiceRegistration;
10  
11  
12  /**
13   * A registration of a host component
14   */
15  class Registration implements HostComponentRegistration
16  {
17      private String[] mainInterfaces;
18      private Class[] mainInterfaceClasses;
19      private Object instance;
20      private Dictionary<String,String> properties = new Hashtable<String,String>();
21  
22      public Registration(Class[] ifs)
23      {
24          this.mainInterfaceClasses = ifs;
25          mainInterfaces = new String[ifs.length];
26          for (int x=0; x<ifs.length; x++)
27          {
28              if (!ifs[x].isInterface())
29                  throw new IllegalArgumentException("Services can only be registered against interfaces");
30              
31              mainInterfaces[x] = ifs[x].getName();
32          }
33      }
34  
35      public Object getInstance()
36      {
37          return instance;
38      }
39  
40      public void setInstance(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      public boolean equals(Object o)
61      {
62          if (this == o) return true;
63          if (o == null || getClass() != o.getClass()) return false;
64  
65          Registration that = (Registration) o;
66  
67          if (!instance.equals(that.instance)) return false;
68          if (!Arrays.equals(mainInterfaces, that.mainInterfaces)) return false;
69          if (!properties.equals(that.properties)) return false;
70  
71          return true;
72      }
73  
74      public int hashCode()
75      {
76          int result;
77          result = Arrays.hashCode(mainInterfaces);
78          result = 31 * result + instance.hashCode();
79          result = 31 * result + properties.hashCode();
80          return result;
81      }
82  }