Remove SingletonHolder 47/70047/2
authorTom Pantelis <tompantelis@gmail.com>
Sat, 24 Mar 2018 00:33:03 +0000 (20:33 -0400)
committerStephen Kitt <skitt@redhat.com>
Wed, 28 Mar 2018 16:37:24 +0000 (16:37 +0000)
It is not used except for the static JAVASSIST field.
This was moved to BindingToNormalizedNodeCodecFactory.

Change-Id: I6e503696f7f625b257b8a377099d113cd6a85fd3
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingToNormalizedNodeCodecFactory.java
opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/SingletonHolder.java [deleted file]

index f24eda2c4cea59811f022df89ebf70cdab9aa55c..ddb098c17f9804b480dfc448110c02647235b923 100644 (file)
@@ -7,10 +7,11 @@
  */
 package org.opendaylight.controller.md.sal.binding.impl;
 
  */
 package org.opendaylight.controller.md.sal.binding.impl;
 
-import org.opendaylight.controller.sal.binding.codegen.impl.SingletonHolder;
+import javassist.ClassPool;
 import org.opendaylight.mdsal.binding.dom.codec.gen.impl.StreamWriterGenerator;
 import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
 import org.opendaylight.mdsal.binding.generator.api.ClassLoadingStrategy;
 import org.opendaylight.mdsal.binding.dom.codec.gen.impl.StreamWriterGenerator;
 import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
 import org.opendaylight.mdsal.binding.generator.api.ClassLoadingStrategy;
+import org.opendaylight.mdsal.binding.generator.util.JavassistUtils;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
@@ -21,6 +22,8 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
  * @author Thomas Pantelis
  */
 public final class BindingToNormalizedNodeCodecFactory {
  * @author Thomas Pantelis
  */
 public final class BindingToNormalizedNodeCodecFactory {
+    private static final JavassistUtils JAVASSIST = JavassistUtils.forClassPool(ClassPool.getDefault());
+
     private BindingToNormalizedNodeCodecFactory() {
     }
 
     private BindingToNormalizedNodeCodecFactory() {
     }
 
@@ -32,7 +35,7 @@ public final class BindingToNormalizedNodeCodecFactory {
      */
     public static BindingToNormalizedNodeCodec newInstance(final ClassLoadingStrategy classLoadingStrategy) {
         final BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(
      */
     public static BindingToNormalizedNodeCodec newInstance(final ClassLoadingStrategy classLoadingStrategy) {
         final BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(
-                StreamWriterGenerator.create(SingletonHolder.JAVASSIST));
+                StreamWriterGenerator.create(JAVASSIST));
         return new BindingToNormalizedNodeCodec(classLoadingStrategy, codecRegistry, true);
     }
 
         return new BindingToNormalizedNodeCodec(classLoadingStrategy, codecRegistry, true);
     }
 
diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/SingletonHolder.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/SingletonHolder.java
deleted file mode 100644 (file)
index 13312b5..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * 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.codegen.impl;
-
-import com.google.common.util.concurrent.ForwardingBlockingQueue;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.google.common.util.concurrent.ThreadFactoryBuilder;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import javassist.ClassPool;
-import org.apache.commons.lang3.StringUtils;
-import org.opendaylight.mdsal.binding.generator.util.JavassistUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class SingletonHolder {
-    private static final Logger LOG = LoggerFactory.getLogger(SingletonHolder.class);
-
-    public static final ClassPool CLASS_POOL = ClassPool.getDefault();
-    public static final JavassistUtils JAVASSIST = JavassistUtils.forClassPool(CLASS_POOL);
-
-    public static final int CORE_NOTIFICATION_THREADS = 4;
-    public static final int MAX_NOTIFICATION_THREADS = 32;
-    // block caller thread after MAX_NOTIFICATION_THREADS + MAX_NOTIFICATION_QUEUE_SIZE pending notifications
-    public static final int MAX_NOTIFICATION_QUEUE_SIZE = 1000;
-    public static final int NOTIFICATION_THREAD_LIFE = 15;
-    private static final String NOTIFICATION_QUEUE_SIZE_PROPERTY = "mdsal.notificationqueue.size";
-
-    private static ListeningExecutorService NOTIFICATION_EXECUTOR = null;
-    private static ListeningExecutorService COMMIT_EXECUTOR = null;
-    private static ListeningExecutorService CHANGE_EVENT_EXECUTOR = null;
-
-    private SingletonHolder() {
-    }
-
-    /**
-     * Deprecated.
-     *
-     * @deprecated This method is only used from configuration modules and thus callers of it
-     *             should use service injection to make the executor configurable.
-     */
-    @Deprecated
-    public static synchronized ListeningExecutorService getDefaultNotificationExecutor() {
-
-        if (NOTIFICATION_EXECUTOR == null) {
-            int queueSize = MAX_NOTIFICATION_QUEUE_SIZE;
-            final String queueValue = System.getProperty(NOTIFICATION_QUEUE_SIZE_PROPERTY);
-            if (StringUtils.isNotBlank(queueValue)) {
-                try {
-                    queueSize = Integer.parseInt(queueValue);
-                    LOG.trace("Queue size was set to {}", queueSize);
-                } catch (final NumberFormatException e) {
-                    LOG.warn("Cannot parse {} as set by {}, using default {}", queueValue,
-                            NOTIFICATION_QUEUE_SIZE_PROPERTY, queueSize);
-                }
-            }
-
-            // Overriding the queue:
-            // ThreadPoolExecutor would not create new threads if the queue is not full, thus adding
-            // occurs in RejectedExecutionHandler.
-            // This impl saturates threadpool first, then queue. When both are full caller will get blocked.
-            final BlockingQueue<Runnable> delegate = new LinkedBlockingQueue<>(queueSize);
-            final BlockingQueue<Runnable> queue = new ForwardingBlockingQueue<Runnable>() {
-                @Override
-                protected BlockingQueue<Runnable> delegate() {
-                    return delegate;
-                }
-
-                @Override
-                public boolean offer(final Runnable runnrunnableable) {
-                    // ThreadPoolExecutor will spawn a new thread after core size is reached only
-                    // if the queue.offer returns false.
-                    return false;
-                }
-            };
-
-            final ThreadFactory factory = new ThreadFactoryBuilder().setDaemon(true)
-                    .setNameFormat("md-sal-binding-notification-%d").build();
-
-            final ThreadPoolExecutor executor = new ThreadPoolExecutor(CORE_NOTIFICATION_THREADS,
-                MAX_NOTIFICATION_THREADS, NOTIFICATION_THREAD_LIFE, TimeUnit.SECONDS, queue, factory,
-                // if the max threads are met, then it will raise a rejectedExecution. We then push to the queue.
-                (runnable, executor1) -> {
-                    try {
-                        executor1.getQueue().put(runnable);
-                    } catch (final InterruptedException e) {
-                        throw new RejectedExecutionException("Interrupted while waiting on the queue", e);
-                    }
-                });
-
-            NOTIFICATION_EXECUTOR = MoreExecutors.listeningDecorator(executor);
-        }
-
-        return NOTIFICATION_EXECUTOR;
-    }
-
-    /**
-     * Deprecated.
-     *
-     * @deprecated This method is only used from configuration modules and thus callers of it
-     *             should use service injection to make the executor configurable.
-     */
-    @Deprecated
-    public static synchronized ListeningExecutorService getDefaultCommitExecutor() {
-        if (COMMIT_EXECUTOR == null) {
-            final ThreadFactory factory = new ThreadFactoryBuilder().setDaemon(true)
-                    .setNameFormat("md-sal-binding-commit-%d").build();
-            /*
-             * FIXME: this used to be newCacheThreadPool(), but MD-SAL does not have transaction
-             *        ordering guarantees, which means that using a concurrent threadpool results
-             *        in application data being committed in random order, potentially resulting
-             *        in inconsistent data being present. Once proper primitives are introduced,
-             *        concurrency can be reintroduced.
-             */
-            final ExecutorService executor = Executors.newSingleThreadExecutor(factory);
-            COMMIT_EXECUTOR = MoreExecutors.listeningDecorator(executor);
-        }
-
-        return COMMIT_EXECUTOR;
-    }
-
-    public static synchronized ExecutorService getDefaultChangeEventExecutor() {
-        if (CHANGE_EVENT_EXECUTOR == null) {
-            final ThreadFactory factory = new ThreadFactoryBuilder().setDaemon(true)
-                    .setNameFormat("md-sal-binding-change-%d").build();
-            /*
-             * FIXME: this used to be newCacheThreadPool(), but MD-SAL does not have transaction
-             *        ordering guarantees, which means that using a concurrent threadpool results
-             *        in application data being committed in random order, potentially resulting
-             *        in inconsistent data being present. Once proper primitives are introduced,
-             *        concurrency can be reintroduced.
-             */
-            final ExecutorService executor = Executors.newSingleThreadExecutor(factory);
-            CHANGE_EVENT_EXECUTOR  = MoreExecutors.listeningDecorator(executor);
-        }
-
-        return CHANGE_EVENT_EXECUTOR;
-    }
-}