package org.datadog.jmxfetch;
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 javax.management.openmbean.TabularData;
import javax.management.openmbean.TabularDataSupport;
import javax.management.openmbean.TabularType;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
public class SimpleTestJavaApp implements SimpleTestJavaAppMBean {
// Integers
private final int shouldBe100 = 100;
private final int shouldBe1000 = 1000;
private final Integer int424242 = new Integer(424242);
private final AtomicInteger atomic42 = new AtomicInteger(42);
private int shouldBeCounter = 0;
// Floats & Long
private final float primitiveFloat = 123.4f;
private final Float instanceFloat = 567.8f;
private final AtomicLong atomic4242 = new AtomicLong(4242);
private final Long long42424242 = new Long(42424242);
// String
private final String shouldBeConverted = "ShouldBe5";
private final String shouldBeDefaulted = "DefaultMe";
// Others
private final boolean shouldBeBoolean = true;
private final HashMap<String, Integer> hashmap = new HashMap<String, Integer>();
private final Object object1337 = new Double(13.37);
private final BigDecimal numberBig = new BigDecimal(123456788901234567890.0);
private final TabularData tabulardata;
private final CompositeType compositetype;
SimpleTestJavaApp() {
hashmap.put("thisis0", 0);
hashmap.put("thisis10", 10);
hashmap.put("thisiscounter", 0);
compositetype = buildCompositeType();
tabulardata = buildTabularType();
if (tabulardata != null) {
tabulardata.put(buildCompositeData(1));
}
}
public int getShouldBe100() {
return shouldBe100;
}
public Double getShouldBe1000() {
return Double.valueOf(shouldBe1000);
}
public int getShouldBeCounter() {
return shouldBeCounter;
}
public String getShouldBeConverted() {
return shouldBeConverted;
}
public String getShouldBeDefaulted() {
return shouldBeDefaulted;
}
public boolean getShouldBeBoolean() {
return shouldBeBoolean;
}
public void incrementCounter(int inc) {
shouldBeCounter += inc;
}
public void incrementHashMapCounter(int inc) {
hashmap.put("thisiscounter", hashmap.get("thisiscounter") + inc);
}
public void populateHashMap(int count) {
for (Integer i =1;i <= count ; i++ ) {
hashmap.put(i.toString(), i);
}
}
public HashMap<String, Integer> getHashmap() {
return hashmap;
}
public AtomicInteger getAtomic42() {
return atomic42;
}
public AtomicLong getAtomic4242() {
return atomic4242;
}
public Object getObject1337() {
return object1337;
}
public Number getNumberBig() {
return numberBig;
}
public Long getLong42424242() {
return long42424242;
}
public Integer getInt424242() {
return int424242;
}
public float getPrimitiveFloat(){
return primitiveFloat;
}
public Float getInstanceFloat(){
return instanceFloat;
}
private TabularData buildTabularType() {
try {
CompositeType rowType = buildCompositeType();
TabularType tabularType = new TabularType("myTabularType", "My tabular type", rowType,
new String[]{"foo"});
return new TabularDataSupport(tabularType);
} catch (OpenDataException e) {
return null;
}
}
private CompositeType buildCompositeType() {
try {
return new CompositeType("myCompositeType", "My composite type",
new String[]{"foo", "bar", "toto"},
new String[]{"Description of `foo`", "Description of `bar`", "Description of `toto`"},
new OpenType[]{SimpleType.STRING, SimpleType.INTEGER, SimpleType.STRING});
} catch (OpenDataException e) {
return null;
}
}
private CompositeData buildCompositeData(Integer i) {
try {
return new CompositeDataSupport(compositetype,
new String[]{"foo", "bar", "toto"},
new Object[]{i.toString(), i, "tata"});
} catch (OpenDataException e) {
return null;
}
}
public void populateTabularData(int count) {
tabulardata.clear();
for (Integer i = 1; i <= count; i++) {
tabulardata.put(buildCompositeData(i));
}
}
public TabularData getTabulardata() { return tabulardata; }
}