From 6f485db6c301acf8564c6a7670bee53abf08ae67 Mon Sep 17 00:00:00 2001 From: Dejan Bosanac Date: Fri, 15 Jan 2016 13:33:41 +0100 Subject: [PATCH] Support ignoring transient values (#239) --- .../jolokia/converter/json/BeanExtractor.java | 4 +- .../json/ObjectToJsonConverterTest.java | 39 +++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/agent/core/src/main/java/org/jolokia/converter/json/BeanExtractor.java b/agent/core/src/main/java/org/jolokia/converter/json/BeanExtractor.java index cc8cd4a87..c3c9007ce 100644 --- a/agent/core/src/main/java/org/jolokia/converter/json/BeanExtractor.java +++ b/agent/core/src/main/java/org/jolokia/converter/json/BeanExtractor.java @@ -1,5 +1,6 @@ package org.jolokia.converter.json; +import java.beans.Transient; import java.io.OutputStream; import java.io.Writer; import java.lang.reflect.*; @@ -206,7 +207,8 @@ private List extractBeanAttributes(Object pValue) { for (Method method : pValue.getClass().getMethods()) { if (!Modifier.isStatic(method.getModifiers()) && !IGNORE_METHODS.contains(method.getName()) && - !isIgnoredType(method.getReturnType())) { + !isIgnoredType(method.getReturnType()) && + !method.isAnnotationPresent(Transient.class)) { addAttributes(attrs, method); } } diff --git a/agent/core/src/test/java/org/jolokia/converter/json/ObjectToJsonConverterTest.java b/agent/core/src/test/java/org/jolokia/converter/json/ObjectToJsonConverterTest.java index cb74cee36..6c554a9ba 100644 --- a/agent/core/src/test/java/org/jolokia/converter/json/ObjectToJsonConverterTest.java +++ b/agent/core/src/test/java/org/jolokia/converter/json/ObjectToJsonConverterTest.java @@ -1,5 +1,6 @@ package org.jolokia.converter.json; +import java.beans.Transient; import java.io.File; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; @@ -146,6 +147,19 @@ public void setInnerValueTest() throws IllegalAccessException, AttributeNotFound assertEquals(oldValue,"bar"); assertEquals(bean.getArray()[0],"fcn"); } + + @Test + public void convertTransientValue() throws AttributeNotFoundException { + TransientValueBean bean = new TransientValueBean(); + bean.value = "value"; + bean.transientValue = "transient"; + + Map ret = (Map)converter.convertToJson(bean, null, JsonConvertOptions.DEFAULT); + System.out.println(ret); + assertNull(ret.get("transientValue")); + + } + // ============================================================================ // TestBeans: @@ -230,5 +244,30 @@ public String[] getArray() { return array; } } + + class TransientValueBean { + + String value; + + transient String transientValue; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @Transient + public String getTransientValue() { + return transientValue; + } + + @Transient + public void setTransientValue(String transientValue) { + this.transientValue = transientValue; + } + } }