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