* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.mdsal.singleton.common.api;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.util.AbstractStringIdentifier;
/**
* Identifier represents a service group competence. It's based on String.
*/
public class ServiceGroupIdentifier extends AbstractStringIdentifier<ServiceGroupIdentifier> {
+ private static final long serialVersionUID = 6853612584804702662L;
+
+ protected ServiceGroupIdentifier(final @NonNull String string) {
+ super(string);
+ }
/**
* Method to create immutable instances of {@link ServiceGroupIdentifier}.
*
- * @param serviceGroupIdentifier the String identifier for the ServiceGroupIdentifier instance
+ * @param name the String identifier for the ServiceGroupIdentifier instance
* @return {@link ServiceGroupIdentifier} new instance
*/
- public static ServiceGroupIdentifier create(final String serviceGroupIdentifier) {
- return new ServiceGroupIdentifier(serviceGroupIdentifier);
+ public static @NonNull ServiceGroupIdentifier create(final String name) {
+ return new ServiceGroupIdentifier(name);
}
- protected ServiceGroupIdentifier(final String string) {
- super(string);
+ public final @NonNull String getName() {
+ return getValue();
}
-
- private static final long serialVersionUID = 6853612584804702662L;
-
}
final ClusterSingletonService service) {
LOG.debug("Call registrationService {} method for ClusterSingletonService Provider {}", service, this);
- final String serviceIdentifier = service.getIdentifier().getValue();
+ final String serviceIdentifier = service.getIdentifier().getName();
checkArgument(!Strings.isNullOrEmpty(serviceIdentifier),
"ClusterSingletonService identifier may not be null nor empty");
LOG.debug("Closing service group {}", serviceIdentifier);
placeHolder = new PlaceholderGroup<>(lookup, future);
- final String identifier = reg.getInstance().getIdentifier().getValue();
+ final String identifier = reg.getInstance().getIdentifier().getName();
verify(serviceGroupMap.replace(identifier, lookup, placeHolder));
LOG.debug("Replaced group {} with {}", serviceIdentifier, placeHolder);
@Override
void registerService(final ClusterSingletonServiceRegistration reg) {
- final ClusterSingletonService service = reg.getInstance();
- verify(identifier.equals(service.getIdentifier().getValue()));
+ final ClusterSingletonService service = verifyRegistration(reg);
checkNotClosed();
checkState(initialized, "Service group %s is not initialized yet", identifier);
@Override
ListenableFuture<?> unregisterService(final ClusterSingletonServiceRegistration reg) {
- final ClusterSingletonService service = reg.getInstance();
- verify(identifier.equals(service.getIdentifier().getValue()));
+ verifyRegistration(reg);
checkNotClosed();
verify(members.remove(reg));
return null;
}
+ private ClusterSingletonService verifyRegistration(final ClusterSingletonServiceRegistration reg) {
+ final ClusterSingletonService service = reg.getInstance();
+ verify(identifier.equals(service.getIdentifier().getName()));
+ return service;
+ }
+
private synchronized @NonNull ListenableFuture<?> destroyGroup() {
final SettableFuture<Void> future = SettableFuture.create();
if (!closeFuture.compareAndSet(null, future)) {