package org.jolokia.converter.json; import java.io.File; import java.lang.reflect.InvocationTargetException; import javax.management.*; import javax.management.openmbean.OpenDataException; import org.jolokia.converter.util.CompositeTypeAndJson; import org.json.simple.JSONObject; import org.testng.annotations.Test; import static javax.management.openmbean.SimpleType.*; import static org.testng.Assert.*; /** * @author roland * @since 04.06.14 */ public class CompositeDataExtractorTest extends AbstractExtractorTest { @Test(expectedExceptions = IllegalArgumentException.class) public void noSettingAllowed() throws InvocationTargetException, IllegalAccessException { assertFalse(extractor.canSetValue()); extractor.setObjectValue(stringToObjectConverter,new File("test"),"executable",Boolean.TRUE); } @Test public void simple() throws OpenDataException, AttributeNotFoundException, MalformedObjectNameException { CompositeTypeAndJson ctj = getTestData(); JSONObject result = (JSONObject) extractJson(ctj.getCompositeData()); assertEquals(result.size(), 4); assertEquals(result.get("verein"),"FCN"); assertEquals(result.get("platz"),17); assertTrue((Boolean) result.get("absteiger")); } @Test public void withPath() throws MalformedObjectNameException, OpenDataException, AttributeNotFoundException { CompositeTypeAndJson ctj = getTestData(); String result = (String) extractJson(ctj.getCompositeData(),"complex","domain"); assertEquals(result,"java.lang"); } @Test(expectedExceptions = ValueFaultHandler.AttributeFilteredException.class) public void withInvalidPath1() throws MalformedObjectNameException, OpenDataException, AttributeNotFoundException { CompositeTypeAndJson ctj = getTestData(); extractJson(ctj.getCompositeData(),"blub"); } @Test(expectedExceptions = ValueFaultHandler.AttributeFilteredException.class) public void withInvalidPath2() throws MalformedObjectNameException, OpenDataException, AttributeNotFoundException { CompositeTypeAndJson ctj = getTestData(); extractJson(ctj.getCompositeData(),"complex","domain","blub"); } @Test public void withWildCardPath() throws MalformedObjectNameException, OpenDataException, AttributeNotFoundException { CompositeTypeAndJson ctj = getTestData(); JSONObject result = (JSONObject) extractJson(ctj.getCompositeData(),null,"domain"); assertEquals(result.size(),1); assertEquals(result.get("complex"),"java.lang"); } @Test(expectedExceptions = ValueFaultHandler.AttributeFilteredException.class) public void withWildCardPathAndInvalidFilter() throws MalformedObjectNameException, OpenDataException, AttributeNotFoundException { CompositeTypeAndJson ctj = getTestData(); extractJson(ctj.getCompositeData(),null,"unknownAttribute"); } private CompositeTypeAndJson getTestData() throws OpenDataException, MalformedObjectNameException { return new CompositeTypeAndJson( STRING,"verein","FCN", INTEGER,"platz",17, BOOLEAN,"absteiger",Boolean.TRUE, OBJECTNAME,"complex",new ObjectName("java.lang:type=Memory") ); } @Override Extractor createExtractor() { return new CompositeDataExtractor(); } }