import java.lang.management.ManagementFactory;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import javax.management.InstanceAlreadyExistsException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
+import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Abstract base for an MXBean implementation class.
+ *
* <p>
* This class is not intended for use outside of MD-SAL and its part of private
* implementation (still exported as public to be reused across MD-SAL implementation
private final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
- private final String mBeanName;
- private final String mBeanType;
- private final String mBeanCategory;
+ private final String beanName;
+ private final String beanType;
+ private final String beanCategory;
/**
* Constructor.
*
- * @param mBeanName Used as the <code>name</code> property in the bean's ObjectName.
- * @param mBeanType Used as the <code>type</code> property in the bean's ObjectName.
- * @param mBeanCategory Used as the <code>Category</code> property in the bean's ObjectName.
+ * @param beanName Used as the <code>name</code> property in the bean's ObjectName.
+ * @param beanType Used as the <code>type</code> property in the bean's ObjectName.
+ * @param beanCategory Used as the <code>Category</code> property in the bean's ObjectName.
*/
- protected AbstractMXBean(@Nonnull String mBeanName, @Nonnull String mBeanType,
- @Nullable String mBeanCategory) {
- this.mBeanName = mBeanName;
- this.mBeanType = mBeanType;
- this.mBeanCategory = mBeanCategory;
+ protected AbstractMXBean(@Nonnull String beanName, @Nonnull String beanType,
+ @Nullable String beanCategory) {
+ this.beanName = beanName;
+ this.beanType = beanType;
+ this.beanCategory = beanCategory;
}
private ObjectName getMBeanObjectName() throws MalformedObjectNameException {
StringBuilder builder = new StringBuilder(BASE_JMX_PREFIX)
.append("type=").append(getMBeanType());
- if(getMBeanCategory() != null) {
+ if (getMBeanCategory() != null) {
builder.append(",Category=").append(getMBeanCategory());
}
LOG.debug("Register MBean {}", mbeanName);
// unregistered if already registered
- if(server.isRegistered(mbeanName)) {
+ if (server.isRegistered(mbeanName)) {
LOG.debug("MBean {} found to be already registered", mbeanName);
try {
unregisterMBean(mbeanName);
- } catch(Exception e) {
-
+ } catch (MBeanRegistrationException | InstanceNotFoundException e) {
LOG.warn("unregister mbean {} resulted in exception {} ", mbeanName, e);
}
}
registered = true;
LOG.debug("MBean {} registered successfully", mbeanName.getCanonicalName());
- } catch(Exception e) {
-
+ } catch (InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException
+ | MalformedObjectNameException e) {
LOG.error("registration failed {}", e);
-
}
return registered;
}
ObjectName mbeanName = this.getMBeanObjectName();
unregisterMBean(mbeanName);
unregister = true;
- } catch(Exception e) {
+ } catch (MBeanRegistrationException | InstanceNotFoundException | MalformedObjectNameException e) {
LOG.debug("Failed when unregistering MBean {}", e);
}
* Returns the <code>name</code> property of the bean's ObjectName.
*/
public String getMBeanName() {
- return mBeanName;
+ return beanName;
}
/**
* Returns the <code>type</code> property of the bean's ObjectName.
*/
public String getMBeanType() {
- return mBeanType;
+ return beanType;
}
/**
* Returns the <code>Category</code> property of the bean's ObjectName.
*/
public String getMBeanCategory() {
- return mBeanCategory;
+ return beanCategory;
}
}
package org.opendaylight.controller.md.sal.common.util.jmx;
+import com.google.common.base.Preconditions;
import java.util.List;
-
import org.opendaylight.yangtools.util.concurrent.ListenerNotificationQueueStats;
import org.opendaylight.yangtools.util.concurrent.QueuedNotificationManager;
-import com.google.common.base.Preconditions;
-
/**
* Implementation of the QueuedNotificationManagerMXBean interface.
*
private final QueuedNotificationManager<?,?> manager;
- public QueuedNotificationManagerMXBeanImpl( QueuedNotificationManager<?,?> manager,
- String mBeanName, String mBeanType, String mBeanCategory ) {
- super(mBeanName, mBeanType, mBeanCategory);
- this.manager = Preconditions.checkNotNull( manager );
+ public QueuedNotificationManagerMXBeanImpl(QueuedNotificationManager<?,?> manager,
+ String beanName, String beanType, String beanCategory) {
+ super(beanName, beanType, beanCategory);
+ this.manager = Preconditions.checkNotNull(manager);
}
@Override
}
public QueuedNotificationManagerStats toQueuedNotificationManagerStats() {
- return new QueuedNotificationManagerStats( getMaxListenerQueueSize(),
- getCurrentListenerQueueStats() );
+ return new QueuedNotificationManagerStats(getMaxListenerQueueSize(), getCurrentListenerQueueStats());
}
}
* Constructs an instance for the given {@link Executor}.
*
* @param executor the backing {@link Executor}
- * @param mBeanName Used as the <code>name</code> property in the bean's ObjectName.
- * @param mBeanType Used as the <code>type</code> property in the bean's ObjectName.
- * @param mBeanCategory Used as the <code>Category</code> property in the bean's ObjectName.
+ * @param beanName Used as the <code>name</code> property in the bean's ObjectName.
+ * @param beanType Used as the <code>type</code> property in the bean's ObjectName.
+ * @param beanCategory Used as the <code>Category</code> property in the bean's ObjectName.
*/
- public ThreadExecutorStatsMXBeanImpl(final ThreadPoolExecutor executor, final String mBeanName,
- final String mBeanType, @Nullable final String mBeanCategory) {
- super(mBeanName, mBeanType, mBeanCategory);
+ public ThreadExecutorStatsMXBeanImpl(final ThreadPoolExecutor executor, final String beanName,
+ final String beanType, @Nullable final String beanCategory) {
+ super(beanName, beanType, beanCategory);
this.executor = Preconditions.checkNotNull(executor);
}
private static ThreadExecutorStatsMXBeanImpl createInternal(final Executor executor,
- final String mBeanName, final String mBeanType, final String mBeanCategory) {
+ final String beanName, final String beanType, final String beanCategory) {
if (executor instanceof ThreadPoolExecutor) {
final ThreadExecutorStatsMXBeanImpl ret = new ThreadExecutorStatsMXBeanImpl(
- (ThreadPoolExecutor) executor, mBeanName, mBeanType, mBeanCategory);
+ (ThreadPoolExecutor) executor, beanName, beanType, beanCategory);
return ret;
}
* Creates a new bean if the backing executor is a ThreadPoolExecutor and registers it.
*
* @param executor the backing {@link Executor}
- * @param mBeanName Used as the <code>name</code> property in the bean's ObjectName.
- * @param mBeanType Used as the <code>type</code> property in the bean's ObjectName.
- * @param mBeanCategory Used as the <code>Category</code> property in the bean's ObjectName.
+ * @param beanName Used as the <code>name</code> property in the bean's ObjectName.
+ * @param beanType Used as the <code>type</code> property in the bean's ObjectName.
+ * @param beanCategory Used as the <code>Category</code> property in the bean's ObjectName.
* @return a registered ThreadExecutorStatsMXBeanImpl instance if the backing executor
* is a ThreadPoolExecutor, otherwise null.
*/
- public static ThreadExecutorStatsMXBeanImpl create(final Executor executor, final String mBeanName,
- final String mBeanType, @Nullable final String mBeanCategory) {
- ThreadExecutorStatsMXBeanImpl ret = createInternal(executor, mBeanName, mBeanType, mBeanCategory);
- if(ret != null) {
+ public static ThreadExecutorStatsMXBeanImpl create(final Executor executor, final String beanName,
+ final String beanType, @Nullable final String beanCategory) {
+ ThreadExecutorStatsMXBeanImpl ret = createInternal(executor, beanName, beanType, beanCategory);
+ if (ret != null) {
ret.registerMBean();
}
@Override
public Long getLargestQueueSize() {
BlockingQueue<Runnable> queue = executor.getQueue();
- if(queue instanceof TrackingLinkedBlockingQueue) {
+ if (queue instanceof TrackingLinkedBlockingQueue) {
return Long.valueOf(((TrackingLinkedBlockingQueue<?>)queue).getLargestQueueSize());
}
@Override
public Long getRejectedTaskCount() {
RejectedExecutionHandler rejectedHandler = executor.getRejectedExecutionHandler();
- if(rejectedHandler instanceof CountingRejectedExecutionHandler) {
+ if (rejectedHandler instanceof CountingRejectedExecutionHandler) {
return Long.valueOf(((CountingRejectedExecutionHandler)rejectedHandler)
.getRejectedTaskCount());
}
}
/**
- * Checks if value is instance of provided class
- *
+ * Checks if value is instance of provided class.
*
* @param value Value to check
* @param type Type to check
*/
@SuppressWarnings("unchecked")
public static <T> T checkInstanceOf(Object value, Class<T> type) {
- if(!type.isInstance(value)) {
+ if (!type.isInstance(value)) {
throw new IllegalArgumentException(String.format("Value %s is not of type %s", value, type));
}
return (T) value;
import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
/**
+ * Deprecated.
+ *
* @deprecated Use {@link org.opendaylight.yangtools.yang.common.RpcResultBuilder}
*/
@Deprecated
-public class RpcErrors {
+public final class RpcErrors {
+ private RpcErrors() {
+ }
/**
- * @param applicationTag
- * @param tag
- * @param info
- * @param severity
- * @param message
- * @param errorType
- * @param cause
+ * Creates an RpcError.
+ *
* @return {@link RpcError} implementation
*/
public static RpcError getRpcError(String applicationTag, String tag, String info,
private final ErrorType errorType;
private final Throwable cause;
- /**
- * @param applicationTag
- * @param tag
- * @param info
- * @param severity
- * @param message
- * @param errorType
- * @param cause
- */
protected RpcErrorTO(String applicationTag, String tag, String info,
ErrorSeverity severity, String message, ErrorType errorType, Throwable cause) {
this.applicationTag = applicationTag;
*/
package org.opendaylight.controller.sal.common.util;
+import com.google.common.collect.ImmutableList;
import java.io.Serializable;
import java.util.Collection;
-
import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.RpcError;
import org.opendaylight.yangtools.yang.common.RpcResult;
-import com.google.common.collect.ImmutableList;
-
/**
+ * Deprecated.
+ *
* @deprecated Use {@link org.opendaylight.yangtools.yang.common.RpcResultBuilder}
*/
@Deprecated
-public class Rpcs {
+public final class Rpcs {
+ private Rpcs() {
+ }
public static <T> RpcResult<T> getRpcResult(boolean successful) {
return new RpcResultTO<>(successful, null, ImmutableList.of());
private final T result;
private final boolean successful;
- public RpcResultTO(boolean successful, T result,
- Collection<RpcError> errors) {
+ RpcResultTO(boolean successful, T result, Collection<RpcError> errors) {
this.successful = successful;
this.result = result;
this.errors = ImmutableList.copyOf(errors);
public Collection<RpcError> getErrors() {
return errors;
}
-
}
}