2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.mdsal.singleton.dom.impl;
11 import com.google.common.base.Preconditions;
12 import com.google.common.util.concurrent.ListenableFuture;
13 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
14 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
15 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
18 * Package protected help class represent a Delegator for {@link ClusterSingletonService}
19 * instance and {@link ClusterSingletonServiceRegistration} implementation.
20 * Close registration means remove {@link ClusterSingletonService} instance from internal
21 * ClusterSingletonServiceGroup list reference.
23 * Close {@link ClusterSingletonServiceRegistration} is prepared for a possible restart
24 * service or application in osgi container. Any another services from group can not be
27 class ClusterSingletonServiceRegistrationDelegator
28 implements ClusterSingletonServiceRegistration, ClusterSingletonService {
30 private final ClusterSingletonService service;
31 private final ClusterSingletonServiceGroup<?, ?, ?> group;
33 ClusterSingletonServiceRegistrationDelegator(final ClusterSingletonService service,
34 final ClusterSingletonServiceGroup<?, ?, ?> group) {
35 this.service = Preconditions.checkNotNull(service);
36 this.group = Preconditions.checkNotNull(group);
40 public void close() throws Exception {
41 group.unregisterService(this);
45 public void instantiateServiceInstance() {
46 service.instantiateServiceInstance();
50 public ListenableFuture<Void> closeServiceInstance() {
51 return service.closeServiceInstance();
55 public ServiceGroupIdentifier getIdentifier() {
56 return service.getIdentifier();
59 public String getServiceGroupIdentifier() {
60 return service.getIdentifier().getValue();