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