X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Fimpl%2FMountPointManagerImpl.java;h=c3f46b2a625226eebdfce228a7ee9f4ea16f856a;hp=f8059fed41ec07fdb39bc0eb09408b6d8c60d576;hb=de65a21905e4bed93d250007ac053bec48a5f35a;hpb=67dd6d9e323157551345f89d3c00c8ebad068a11 diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/MountPointManagerImpl.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/MountPointManagerImpl.java index f8059fed41..c3f46b2a62 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/MountPointManagerImpl.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/MountPointManagerImpl.java @@ -1,26 +1,33 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * 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.controller.sal.binding.impl; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; - +import java.util.concurrent.Executors; import org.opendaylight.controller.md.sal.binding.util.AbstractBindingSalProviderInstance; -import org.opendaylight.yangtools.concepts.util.ListenerRegistry; import org.opendaylight.controller.sal.binding.api.mount.MountProviderInstance; import org.opendaylight.controller.sal.binding.api.mount.MountProviderService; import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.util.ListenerRegistry; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.util.concurrent.ListeningExecutorService; - public class MountPointManagerImpl implements MountProviderService { public final Logger LOG = LoggerFactory.getLogger(MountPointManagerImpl.class); private final ConcurrentMap, BindingMountPointImpl> mountPoints; private final ListenerRegistry listeners = ListenerRegistry.create(); - + private ListeningExecutorService notificationExecutor; private ListeningExecutorService dataCommitExecutor; @@ -32,7 +39,7 @@ public class MountPointManagerImpl implements MountProviderService { return notificationExecutor; } - public void setNotificationExecutor(ListeningExecutorService notificationExecutor) { + public void setNotificationExecutor(final ListeningExecutorService notificationExecutor) { this.notificationExecutor = notificationExecutor; } @@ -40,12 +47,12 @@ public class MountPointManagerImpl implements MountProviderService { return dataCommitExecutor; } - public void setDataCommitExecutor(ListeningExecutorService dataCommitExecutor) { + public void setDataCommitExecutor(final ListeningExecutorService dataCommitExecutor) { this.dataCommitExecutor = dataCommitExecutor; } @Override - public synchronized BindingMountPointImpl createMountPoint(InstanceIdentifier path) { + public synchronized BindingMountPointImpl createMountPoint(final InstanceIdentifier path) { BindingMountPointImpl potential = mountPoints.get(path); if (potential != null) { throw new IllegalStateException("Mount point already exists."); @@ -54,7 +61,7 @@ public class MountPointManagerImpl implements MountProviderService { } @Override - public BindingMountPointImpl createOrGetMountPoint(InstanceIdentifier path) { + public BindingMountPointImpl createOrGetMountPoint(final InstanceIdentifier path) { BindingMountPointImpl potential = getMountPoint(path); if (potential != null) { return potential; @@ -63,20 +70,19 @@ public class MountPointManagerImpl implements MountProviderService { } @Override - public BindingMountPointImpl getMountPoint(InstanceIdentifier path) { + public BindingMountPointImpl getMountPoint(final InstanceIdentifier path) { return mountPoints.get(path); } - private synchronized BindingMountPointImpl createOrGetMountPointImpl(InstanceIdentifier path) { + private synchronized BindingMountPointImpl createOrGetMountPointImpl(final InstanceIdentifier path) { BindingMountPointImpl potential = getMountPoint(path); if (potential != null) { return potential; } RpcProviderRegistryImpl rpcRegistry = new RpcProviderRegistryImpl("mount"); - NotificationBrokerImpl notificationBroker = new NotificationBrokerImpl(); - notificationBroker.setExecutor(getNotificationExecutor()); + NotificationBrokerImpl notificationBroker = new NotificationBrokerImpl(getNotificationExecutor()); DataBrokerImpl dataBroker = new DataBrokerImpl(); - dataBroker.setExecutor(getDataCommitExecutor()); + dataBroker.setExecutor(MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor())); BindingMountPointImpl mountInstance = new BindingMountPointImpl(path, rpcRegistry, notificationBroker, dataBroker); mountPoints.putIfAbsent(path, mountInstance); @@ -84,7 +90,7 @@ public class MountPointManagerImpl implements MountProviderService { return mountInstance; } - private void notifyMountPointCreated(InstanceIdentifier path) { + private void notifyMountPointCreated(final InstanceIdentifier path) { for (ListenerRegistration listener : listeners) { try { listener.getInstance().onMountPointCreated(path); @@ -95,23 +101,28 @@ public class MountPointManagerImpl implements MountProviderService { } @Override - public ListenerRegistration registerProvisionListener(MountProvisionListener listener) { + public ListenerRegistration registerProvisionListener(final MountProvisionListener listener) { return listeners.register(listener); } public class BindingMountPointImpl extends - AbstractBindingSalProviderInstance + AbstractBindingSalProviderInstance implements MountProviderInstance { - private InstanceIdentifier identifier; + private final InstanceIdentifier identifier; - public BindingMountPointImpl(org.opendaylight.yangtools.yang.binding.InstanceIdentifier identifier, - RpcProviderRegistryImpl rpcRegistry, NotificationBrokerImpl notificationBroker, - DataBrokerImpl dataBroker) { + public BindingMountPointImpl(final InstanceIdentifier identifier, + final RpcProviderRegistryImpl rpcRegistry, final NotificationBrokerImpl notificationBroker, + final DataBrokerImpl dataBroker) { super(rpcRegistry, notificationBroker, dataBroker); this.identifier = identifier; } - + + // Needed only for BI Connector + public DataBrokerImpl getDataBrokerImpl() { + return getDataBroker(); + } + @Override public InstanceIdentifier getIdentifier() { return this.identifier;