package de.is24.util.monitoring.jmx;
import de.is24.util.monitoring.MultiValueProvider;
import de.is24.util.monitoring.State;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.openmbean.CompositeType;
import javax.management.openmbean.OpenDataException;
import javax.management.openmbean.OpenType;
import javax.management.openmbean.SimpleType;
import java.util.Collection;
public class MultiValueProviderHelper {
private MultiValueProvider reportable;
private String[] itemNames;
private OpenType[] itemTypes;
private Object[] itemValues;
public MultiValueProviderHelper(MultiValueProvider reportable) {
this.reportable = reportable;
this.loadFields();
}
private void loadFields() {
Collection<State> values = reportable.getValues();
int stateCount = values.size();
itemNames = new String[stateCount];
itemTypes = new OpenType[stateCount];
itemValues = new Object[stateCount];
int index = 0;
for (State state : values) {
itemNames[index] = state.name;
itemTypes[index] = SimpleType.LONG;
itemValues[index] = state.value;
index++;
}
}
public CompositeData toComposite() {
try {
CompositeType compositeType = new CompositeType("testCompositeType", "a text composite", itemNames,
itemNames,
itemTypes);
return new CompositeDataSupport(compositeType, itemNames, itemValues);
} catch (OpenDataException e) {
throw new RuntimeException(e);
}
}
}