package org.limewire.jmx;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.management.MXBean;
/**
* A JMX Bean for {@link AtomicBoolean}s
*/
@MXBean
public interface AtomicBooleanBean {
/**
* Returns the current value
*/
public boolean getValue();
/**
* Sets the current value
*/
public void setValue(boolean value);
/**
* Returns true if this {@link AtomicBoolean} is a read-only value
*/
public boolean isReadOnly();
/**
* The default implementation of {@link AtomicBooleanBean}
*/
public static class Impl implements AtomicBooleanBean {
private final AtomicBoolean atomic;
private final boolean readOnly;
/**
* Creates an {@link AtomicBooleanBean}
*/
public Impl(AtomicBoolean atomic) {
this(atomic, false);
}
/**
* Creates an {@link AtomicBooleanBean}
*/
public Impl(AtomicBoolean atomic, boolean readOnly) {
this.atomic = atomic;
this.readOnly = readOnly;
}
@Override
public boolean getValue() {
return atomic.get();
}
@Override
public boolean isReadOnly() {
return readOnly;
}
@Override
public void setValue(boolean value) {
if (readOnly) {
throw new IllegalStateException();
}
atomic.set(value);
}
}
}