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
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 }