summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/tags/2.0.1-RC1/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/DiscoveryActivator.java
blob: 32bd10b77b15281618929aa83666e35cd602422e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
  * regarding copyright ownership. The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License. You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
package org.apache.tuscany.sca.osgi.service.discovery.impl;

import java.util.ArrayList;
import java.util.List;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;

public class DiscoveryActivator implements BundleActivator {
    private List<AbstractDiscoveryService> discoveryServices = new ArrayList<AbstractDiscoveryService>();
    private List<ServiceRegistration> discoveryServiceRegistrations = new ArrayList<ServiceRegistration>();

    public void start(BundleContext context) {
        discoveryServices.add(new LocalDiscoveryService(context));

        discoveryServices.add(new DomainDiscoveryService(context));

        for (AbstractDiscoveryService service : discoveryServices) {
            service.start();
            ServiceRegistration registration =
                context.registerService(Discovery.class.getName(), service, service.getProperties());
            discoveryServiceRegistrations.add(registration);
        }
    }

    public void stop(BundleContext context) {
        for (ServiceRegistration registration : discoveryServiceRegistrations) {
            try {
                registration.unregister();
            } catch (IllegalStateException e) {
                // The service has been unregistered, ignore it
            }        
        }
        for (AbstractDiscoveryService service : discoveryServices) {
            service.stop();
        }
    }
}