now distinguishing between provided and required service and added
[utils] / system / general / src / main / java / org / wamblee / system / DefaultServiceRegistry.java
1 package org.wamblee.system;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 public class DefaultServiceRegistry implements ServiceRegistry {
8
9         private int _count;
10         private Map<String, Service> _services;
11
12         public DefaultServiceRegistry() {
13                 _count = 0;
14                 _services = new HashMap<String, Service>();
15         }
16
17         @Override
18         public synchronized Service register(ProvidedServiceDescriptor aDescriptor,
19                         Object aService) {
20                 _count++;
21                 String id = "" + _count;
22                 Service svc = new DefaultService(id, aDescriptor, aService);
23                 _services.put(id, svc);
24                 return svc;
25         }
26         
27         @Override
28         public void remove(Service aService) {
29                 Service svc = _services.remove(aService.getId());
30                 if ( svc == null ) { 
31                         throw new IllegalArgumentException("Service '" + aService.getId() + "' does not exist");
32                 }
33         }
34
35         @Override
36         public synchronized Service find(String aId) {
37                 return _services.get(aId);
38         }
39
40         @Override
41         public Service[] listAllServices() {
42                 return new ArrayList<Service>(_services.values())
43                                 .toArray(new Service[0]);
44         }
45 }