You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/12/28 22:35:18 UTC
svn commit: r1776351 - in /qpid/java/trunk:
bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/
broker-codegen/src/main/java/org/apache/qpid/server/model/validation/
broker-core/src/main/java/org/apache/qpid/server/binding/ broker-cor...
Author: rgodfrey
Date: Wed Dec 28 22:35:18 2016
New Revision: 1776351
URL: http://svn.apache.org/viewvc?rev=1776351&view=rev
Log:
QPID-7601 : Allow annotations to define ManagedAttributeValueTypes as abstract, some methods as derived
Added:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueTypeDerivedMethod.java (with props)
Modified:
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/ConfiguredObjectBinding.java
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/MapBinding.java
qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/AttributeAnnotationValidator.java
qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/ManagedAttributeValueTypeValidator.java
qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/OperationAnnotationValidator.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/connection/AmqpConnectionMetaData.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AncestorAttributeResolver.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectCustomSerialization.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModule.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueType.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/OwnAttributeResolver.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/PublishingLink.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/SocketConnectionMetaData.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCConfigurationStore.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/AbstractJDBCPreferenceStore.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/JsonFilePreferenceStore.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModuleTest.java
qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementOutputConverter.java
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
Modified: qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/ConfiguredObjectBinding.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/ConfiguredObjectBinding.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/ConfiguredObjectBinding.java (original)
+++ qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/ConfiguredObjectBinding.java Wed Dec 28 22:35:18 2016
@@ -25,13 +25,13 @@ import java.io.StringWriter;
import java.util.Map;
import java.util.UUID;
-import org.apache.qpid.server.model.ConfiguredObjectJacksonModule;
-import org.apache.qpid.server.store.ConfiguredObjectRecord;
-
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sleepycat.bind.tuple.TupleBinding;
import com.sleepycat.bind.tuple.TupleInput;
import com.sleepycat.bind.tuple.TupleOutput;
+
+import org.apache.qpid.server.model.ConfiguredObjectJacksonModule;
+import org.apache.qpid.server.store.ConfiguredObjectRecord;
import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.store.berkeleydb.BDBConfiguredObjectRecord;
@@ -75,7 +75,7 @@ public class ConfiguredObjectBinding ext
try
{
StringWriter writer = new StringWriter();
- final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper(true);
objectMapper.writeValue(writer, object.getAttributes());
tupleOutput.writeString(object.getType());
tupleOutput.writeString(writer.toString());
Modified: qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/MapBinding.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/MapBinding.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/MapBinding.java (original)
+++ qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/MapBinding.java Wed Dec 28 22:35:18 2016
@@ -44,7 +44,7 @@ public class MapBinding extends TupleBin
public Map<String, Object> entryToObject(final TupleInput input)
{
String json = input.readString();
- ObjectMapper mapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ ObjectMapper mapper = ConfiguredObjectJacksonModule.newObjectMapper(true);
try
{
Map<String, Object> value = mapper.readValue(json, Map.class);
@@ -63,7 +63,7 @@ public class MapBinding extends TupleBin
try
{
StringWriter writer = new StringWriter();
- final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper(true);
objectMapper.writeValue(writer, map);
output.writeString(writer.toString());
}
Modified: qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/AttributeAnnotationValidator.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/AttributeAnnotationValidator.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/AttributeAnnotationValidator.java (original)
+++ qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/AttributeAnnotationValidator.java Wed Dec 28 22:35:18 2016
@@ -86,8 +86,8 @@ public class AttributeAnnotationValidato
typeUtils = processingEnv.getTypeUtils();
messager = processingEnv.getMessager();
- processAttributes(roundEnv, MANAGED_ATTRIBUTE_CLASS_NAME, false);
- processAttributes(roundEnv, DERIVED_ATTRIBUTE_CLASS_NAME, true);
+ processAttributes(roundEnv, MANAGED_ATTRIBUTE_CLASS_NAME, false, false);
+ processAttributes(roundEnv, DERIVED_ATTRIBUTE_CLASS_NAME, true, true);
processStatistics(roundEnv, MANAGED_STATISTIC_CLASS_NAME);
@@ -95,7 +95,9 @@ public class AttributeAnnotationValidato
}
public void processAttributes(final RoundEnvironment roundEnv,
- String elementName, final boolean allowedNamed)
+ String elementName,
+ final boolean allowedNamed,
+ final boolean allowAbstractManagedTypes)
{
TypeElement annotationElement = elementUtils.getTypeElement(elementName);
@@ -323,11 +325,11 @@ public class AttributeAnnotationValidato
boolean isValidType(final TypeMirror type)
{
- return isValidType(processingEnv, type);
+ return isValidType(processingEnv, type, false);
}
static boolean isValidType(ProcessingEnvironment processingEnv,
- final TypeMirror type)
+ final TypeMirror type, final boolean allowAbstractManagedTypes)
{
Types typeUtils = processingEnv.getTypeUtils();
Elements elementUtils = processingEnv.getElementUtils();
@@ -365,7 +367,23 @@ public class AttributeAnnotationValidato
{
if (annotation.getAnnotationType().asElement().equals(managedAttributeTypeValueElement))
{
- return true;
+ if(allowAbstractManagedTypes)
+ {
+ return true;
+ }
+ else
+ {
+ final Map<? extends ExecutableElement, ? extends AnnotationValue> annotationValues =
+ elementUtils.getElementValuesWithDefaults(annotation);
+ for(Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> element : annotationValues.entrySet())
+ {
+ if("isAbstract".contentEquals(element.getKey().getSimpleName()))
+ {
+ return element.getValue().getValue().equals(Boolean.FALSE);
+ }
+ }
+ return false;
+ }
}
}
}
@@ -413,7 +431,7 @@ public class AttributeAnnotationValidato
{
for(TypeMirror paramType : ((DeclaredType)type).getTypeArguments())
{
- if(!isValidType(processingEnv, paramType))
+ if(!isValidType(processingEnv, paramType, allowAbstractManagedTypes))
{
return false;
}
@@ -428,8 +446,8 @@ public class AttributeAnnotationValidato
{
throw new IllegalArgumentException("Map types " + type + " must have exactly two type arguments");
}
- return isValidType(processingEnv, args.get(0))
- && (isValidType(processingEnv, args.get(1))
+ return isValidType(processingEnv, args.get(0), false)
+ && (isValidType(processingEnv, args.get(1), false)
|| typeUtils.isSameType(args.get(1), getErasure(processingEnv, "java.lang.Object")));
}
Modified: qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/ManagedAttributeValueTypeValidator.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/ManagedAttributeValueTypeValidator.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/ManagedAttributeValueTypeValidator.java (original)
+++ qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/ManagedAttributeValueTypeValidator.java Wed Dec 28 22:35:18 2016
@@ -90,7 +90,7 @@ public class ManagedAttributeValueTypeVa
if(memberElement instanceof ExecutableElement)
{
final ExecutableElement methodElement = (ExecutableElement) memberElement;
- AttributeAnnotationValidator.isValidType(processingEnv, methodElement.getReturnType());
+ AttributeAnnotationValidator.isValidType(processingEnv, methodElement.getReturnType(), false);
String methodName = methodElement.getSimpleName().toString();
if (methodName.length() < 3
Modified: qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/OperationAnnotationValidator.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/OperationAnnotationValidator.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/OperationAnnotationValidator.java (original)
+++ qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/OperationAnnotationValidator.java Wed Dec 28 22:35:18 2016
@@ -93,7 +93,7 @@ public class OperationAnnotationValidato
public void checkMethodReturnType(final TypeElement annotationElement, final ExecutableElement methodElement)
{
final TypeMirror returnType = methodElement.getReturnType();
- if (!(returnType.getKind() == TypeKind.VOID || isValidType(returnType)))
+ if (!(returnType.getKind() == TypeKind.VOID || isValidType(returnType, true)))
{
processingEnv.getMessager()
.printMessage(Diagnostic.Kind.ERROR,
@@ -113,6 +113,17 @@ public class OperationAnnotationValidato
for (VariableElement varElem : methodElement.getParameters())
{
+ if(!isValidType(varElem.asType(), false))
+ {
+ processingEnv.getMessager()
+ .printMessage(Diagnostic.Kind.ERROR,
+ "@"
+ + paramElement.getSimpleName()
+ + " cannot be applied to variables of type "
+ + varElem.asType().toString(),
+ methodElement
+ );
+ }
String name = varElem.getSimpleName().toString();
final List<? extends AnnotationMirror> annotationMirrors = varElem.getAnnotationMirrors();
AnnotationMirror paramAnnotation = null;
@@ -204,9 +215,9 @@ public class OperationAnnotationValidato
}
}
- boolean isValidType(final TypeMirror type)
+ boolean isValidType(final TypeMirror type, final boolean allowAbstractManagedTypes)
{
- return AttributeAnnotationValidator.isValidType(processingEnv, type);
+ return AttributeAnnotationValidator.isValidType(processingEnv, type, allowAbstractManagedTypes);
}
private TypeMirror getErasure(final String className)
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java Wed Dec 28 22:35:18 2016
@@ -40,6 +40,18 @@ public class BindingImpl implements Bind
}
@Override
+ public String getName()
+ {
+ return getBindingKey();
+ }
+
+ @Override
+ public String getType()
+ {
+ return TYPE;
+ }
+
+ @Override
public String getBindingKey()
{
return _bindingKey;
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/connection/AmqpConnectionMetaData.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/connection/AmqpConnectionMetaData.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/connection/AmqpConnectionMetaData.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/connection/AmqpConnectionMetaData.java Wed Dec 28 22:35:18 2016
@@ -34,5 +34,4 @@ public interface AmqpConnectionMetaData
String getClientId();
String getClientVersion();
String getClientProduct();
-
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Wed Dec 28 22:35:18 2016
@@ -2024,7 +2024,7 @@ public abstract class AbstractConfigured
{
if(value instanceof Collection || value instanceof Map)
{
- ObjectMapper mapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ ObjectMapper mapper = ConfiguredObjectJacksonModule.newObjectMapper(false);
try(StringWriter stringWriter = new StringWriter())
{
mapper.writeValue(stringWriter, value);
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AncestorAttributeResolver.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AncestorAttributeResolver.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AncestorAttributeResolver.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AncestorAttributeResolver.java Wed Dec 28 22:35:18 2016
@@ -42,7 +42,7 @@ public class AncestorAttributeResolver i
public AncestorAttributeResolver(final ConfiguredObject<?> object)
{
_object = object;
- _objectMapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ _objectMapper = ConfiguredObjectJacksonModule.newObjectMapper(false);
}
@Override
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java Wed Dec 28 22:35:18 2016
@@ -23,6 +23,7 @@ package org.apache.qpid.server.model;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Proxy;
@@ -1125,10 +1126,85 @@ abstract class AttributeValueConverter<T
throw new ServerScopedRuntimeException("Unable to process type when constructing configuration model: " + t);
}
+ private interface ValueMethod<X extends ManagedAttributeValue>
+ {
+ Object getValue(X object);
+ }
+
+
+ private static class ConstantValueMethod<X extends ManagedAttributeValue> implements ValueMethod<X>
+ {
+
+ private final String _value;
+
+ public ConstantValueMethod(final String derivedMethodValue)
+ {
+ _value = derivedMethodValue;
+ }
+
+ @Override
+ public Object getValue(final X object)
+ {
+ return _value;
+ }
+ }
+
+
+ private static class ObjectMethodValueMethod<X extends ManagedAttributeValue> implements ValueMethod<X>
+ {
+ private final Method _sourceMethod;
+
+ public ObjectMethodValueMethod(final Method sourceMethod)
+ {
+ _sourceMethod = sourceMethod;
+ }
+
+ @Override
+ public Object getValue(final X object)
+ {
+ try
+ {
+ return _sourceMethod.invoke(object);
+ }
+ catch (IllegalAccessException | InvocationTargetException e)
+ {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ }
+
+
+ private static class StaticMethodValueMethod<X extends ManagedAttributeValue> implements ValueMethod<X>
+ {
+ private final Method _sourceMethod;
+
+ public StaticMethodValueMethod(final Method sourceMethod)
+ {
+ _sourceMethod = sourceMethod;
+ }
+
+ @Override
+ public Object getValue(final X object)
+ {
+ try
+ {
+ return _sourceMethod.invoke(null, object);
+ }
+ catch (IllegalAccessException | InvocationTargetException e)
+ {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ }
+
static final class ManageableAttributeTypeConverter<X extends ManagedAttributeValue> extends AttributeValueConverter<X>
{
+ private static final Pattern STATIC_METHOD_PATTERN = Pattern.compile("([\\w][\\w\\d_]+\\.)+[\\w][\\w\\d_\\$]*#[\\w\\d_]+\\s*\\(\\s*\\)");
+ private static final Pattern OBJECT_METHOD_PATTERN = Pattern.compile("#[\\w\\d_]+\\s*\\(\\s*\\)");
+
private final Class<X> _klazz;
private final Map<Method, AttributeValueConverter<?>> _propertyConverters = new HashMap<>();
+ private final Map<Method, ValueMethod<X>> _derivedValueMethod = new HashMap<>();
private ManageableAttributeTypeConverter(final Class<X> klazz)
{
@@ -1142,6 +1218,46 @@ abstract class AttributeValueConverter<T
{
_propertyConverters.put(method, AttributeValueConverter.getConverter(getTypeFromMethod(method), method.getGenericReturnType()));
}
+
+ final ManagedAttributeValueTypeDerivedMethod derivedMethodAnnotation =
+ method.getAnnotation(ManagedAttributeValueTypeDerivedMethod.class);
+ if (derivedMethodAnnotation != null)
+ {
+ String derivedMethodValue = derivedMethodAnnotation.value();
+ if (STATIC_METHOD_PATTERN.matcher(derivedMethodValue).matches())
+ {
+ try
+ {
+ String className = derivedMethodValue.split("#")[0].trim();
+ String sourceMethodName = derivedMethodValue.split("#")[1].split("\\(")[0].trim();
+ Class<?> sourceMethodClass = Class.forName(className);
+ Method sourceMethod = sourceMethodClass.getMethod(sourceMethodName, klazz);
+ _derivedValueMethod.put(method, new StaticMethodValueMethod<X>(sourceMethod));
+
+ }
+ catch (ClassNotFoundException | NoSuchMethodException e)
+ {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ else if (OBJECT_METHOD_PATTERN.matcher(derivedMethodValue).matches())
+ {
+ try
+ {
+ final Method sourceMethod =
+ klazz.getMethod(derivedMethodValue.substring(1, derivedMethodValue.indexOf((int) '(')));
+ _derivedValueMethod.put(method, new ObjectMethodValueMethod<X>(sourceMethod));
+ }
+ catch (NoSuchMethodException e)
+ {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ else
+ {
+ _derivedValueMethod.put(method, new ConstantValueMethod<X>(derivedMethodValue));
+ }
+ }
}
}
@@ -1159,61 +1275,79 @@ abstract class AttributeValueConverter<T
}
else if(value instanceof Map)
{
- return (X) Proxy.newProxyInstance(_klazz.getClassLoader(), new Class[]{_klazz}, new InvocationHandler()
- {
- @Override
- public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable
- {
- AttributeValueConverter<?> converter = _propertyConverters.get(method);
- Map map = (Map) value;
- if(converter != null)
- {
- return convertValue(map, converter, method);
- }
- else if("toString".equals(method.getName()) && method.getParameterTypes().length == 0)
- {
- return _klazz.getSimpleName() + " : " + map.toString();
- }
- else if("hashCode".equals(method.getName()) && method.getParameterTypes().length == 0)
+ @SuppressWarnings("unchecked")
+ final X proxyObject =
+ (X) Proxy.newProxyInstance(_klazz.getClassLoader(), new Class[]{_klazz}, new InvocationHandler()
{
- return map.hashCode();
- }
- else if("equals".equals(method.getName()) && method.getParameterTypes().length == 1 && method.getParameterTypes()[0] == Object.class)
- {
- if(_klazz.isInstance(args[0]))
+ @Override
+ public Object invoke(final Object proxy, final Method method, final Object[] args)
+ throws Throwable
{
- for(Map.Entry<Method, AttributeValueConverter<?>> entry : _propertyConverters.entrySet())
+ AttributeValueConverter<?> converter = _propertyConverters.get(method);
+ Map map = (Map) value;
+ if (converter != null)
{
- AttributeValueConverter<?> conv = entry.getValue();
- Method meth = entry.getKey();
-
- Object lvalue = convertValue(map, conv, meth);
- Object rvalue = meth.invoke(args[0]);
- if((lvalue == null && rvalue != null) || (lvalue != null && !lvalue.equals(rvalue)))
+ return convertValue(map, converter, method, proxy);
+ }
+ else if ("toString".equals(method.getName()) && method.getParameterTypes().length == 0)
+ {
+ return _klazz.getSimpleName() + " : " + map.toString();
+ }
+ else if ("hashCode".equals(method.getName()) && method.getParameterTypes().length == 0)
+ {
+ return map.hashCode();
+ }
+ else if ("equals".equals(method.getName())
+ && method.getParameterTypes().length == 1
+ && method.getParameterTypes()[0] == Object.class)
+ {
+ if (_klazz.isInstance(args[0]))
+ {
+ for (Map.Entry<Method, AttributeValueConverter<?>> entry : _propertyConverters.entrySet())
+ {
+ AttributeValueConverter<?> conv = entry.getValue();
+ Method meth = entry.getKey();
+
+ Object lvalue = convertValue(map, conv, meth, proxy);
+ Object rvalue = meth.invoke(args[0]);
+ if ((lvalue == null && rvalue != null) || (lvalue != null && !lvalue.equals(
+ rvalue)))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+ else
{
return false;
}
}
- return true;
+ throw new UnsupportedOperationException(
+ "The proxy class implements only attribute getters and toString(), hashCode() and equals()");
}
- else
+
+ private Object convertValue(final Map map,
+ final AttributeValueConverter<?> converter,
+ final Method method, final Object proxy)
{
- return false;
+ String attributeName = getNameFromMethod(method, getTypeFromMethod(method));
+ if (_derivedValueMethod.containsKey(method))
+ {
+ return converter.convert(_derivedValueMethod.get(method).getValue((X) proxy),
+ object);
+ }
+ else if (map.containsKey(attributeName))
+ {
+ return converter.convert(map.get(attributeName), object);
+ }
+ else
+ {
+ return Defaults.defaultValue(method.getReturnType());
+ }
}
- }
- throw new UnsupportedOperationException("The proxy class implements only attribute getters and toString(), hashCode() and equals()");
- }
-
- private Object convertValue(final Map map,
- final AttributeValueConverter<?> converter,
- final Method method)
- {
- String attributeName = getNameFromMethod(method, getTypeFromMethod(method));
- return map.containsKey(attributeName)
- ? converter.convert(map.get(attributeName), object)
- : Defaults.defaultValue(method.getReturnType());
- }
- });
+ });
+ return proxyObject;
}
else if(value instanceof String)
{
@@ -1231,6 +1365,7 @@ abstract class AttributeValueConverter<T
}
throw new IllegalArgumentException("Cannot convert type " + value.getClass() + " to a " + _klazz.getName());
}
+
}
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java Wed Dec 28 22:35:18 2016
@@ -25,6 +25,17 @@ import java.util.Map;
@ManagedAttributeValueType
public interface Binding extends PublishingLink
{
+
+ String TYPE = "binding";
+
+ @Override
+ @ManagedAttributeValueTypeDerivedMethod("#getBindingKey()")
+ String getName();
+
+ @Override
+ @ManagedAttributeValueTypeDerivedMethod(TYPE)
+ String getType();
+
String getBindingKey();
Map<String,Object> getArguments();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectCustomSerialization.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectCustomSerialization.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectCustomSerialization.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectCustomSerialization.java Wed Dec 28 22:35:18 2016
@@ -58,14 +58,28 @@ public class ConfiguredObjectCustomSeria
}
private static final Map<Class<?>, Converter<?>> REGISTERED_CONVERTERS = new ConcurrentHashMap<>();
+ private static final Map<Class<?>, Converter<?>> REGISTERED_PERSISTENCE_CONVERTERS = new ConcurrentHashMap<>();
private abstract static class AbstractConverter<T> implements Converter<T>
{
private final Class<T> _conversionClass;
+
public AbstractConverter(Class<T> conversionClass)
{
- REGISTERED_CONVERTERS.put(conversionClass, this);
+ this(conversionClass, true, true);
+ }
+
+ public AbstractConverter(Class<T> conversionClass, boolean nonPersistenceConverter, boolean persistenceConverted)
+ {
+ if(nonPersistenceConverter)
+ {
+ REGISTERED_CONVERTERS.put(conversionClass, this);
+ }
+ if(persistenceConverted)
+ {
+ REGISTERED_PERSISTENCE_CONVERTERS.put(conversionClass, this);
+ }
_conversionClass = conversionClass;
}
@@ -76,9 +90,9 @@ public class ConfiguredObjectCustomSeria
}
}
- public static Collection<Converter<?>> getConverters()
+ public static Collection<Converter<?>> getConverters(final boolean forPersistence)
{
- return REGISTERED_CONVERTERS.values();
+ return forPersistence ? REGISTERED_PERSISTENCE_CONVERTERS.values() : REGISTERED_CONVERTERS.values();
}
@SuppressWarnings("unused")
@@ -137,41 +151,111 @@ public class ConfiguredObjectCustomSeria
@SuppressWarnings("unused")
private static final Converter<ManagedAttributeValue> MANAGED_ATTRIBUTE_VALUE_CONVERTER =
- new AbstractConverter<ManagedAttributeValue>(ManagedAttributeValue.class)
+ new ManagedAttributeValueAbstractConverter(true);
+
+
+ @SuppressWarnings("unused")
+ private static final Converter<ManagedAttributeValue> MANAGED_ATTRIBUTE_VALUE_PERSISTENCE_CONVERTER =
+ new ManagedAttributeValueAbstractConverter(false);
+
+ private static class ManagedAttributeValueAbstractConverter extends AbstractConverter<ManagedAttributeValue>
+ {
+ private final boolean _includeDerivedAttributes;
+
+ public ManagedAttributeValueAbstractConverter(final boolean includeDerivedAttributes)
+ {
+ super(ManagedAttributeValue.class, includeDerivedAttributes, !includeDerivedAttributes);
+ _includeDerivedAttributes = includeDerivedAttributes;
+ }
+
+ @Override
+ public Object convert(final ManagedAttributeValue value)
+ {
+
+ Map<String, Object> valueAsMap = new LinkedHashMap<>();
+ for (Method method : value.getClass().getMethods())
{
- @Override
- public Object convert(final ManagedAttributeValue value)
+ final String methodName = method.getName();
+ if (method.getParameterTypes().length == 0
+ && !OBJECT_METHOD_NAMES.contains(methodName)
+ && (methodName.startsWith("is")
+ || methodName.startsWith("has")
+ || methodName.startsWith("get")))
{
-
- Map<String, Object> valueAsMap = new LinkedHashMap<>();
- for (Method method : value.getClass().getMethods())
+ if(_includeDerivedAttributes || !isDerivedMethod(method))
{
- final String methodName = method.getName();
- if (method.getParameterTypes().length == 0
- && !OBJECT_METHOD_NAMES.contains(methodName)
- && (methodName.startsWith("is")
- || methodName.startsWith("has")
- || methodName.startsWith("get")))
+ String propertyName =
+ methodName.startsWith("is") ? methodName.substring(2) : methodName.substring(3);
+ propertyName = Character.toLowerCase(propertyName.charAt(0)) + propertyName.substring(1);
+ try
{
- String propertyName =
- methodName.startsWith("is") ? methodName.substring(2) : methodName.substring(3);
- propertyName = Character.toLowerCase(propertyName.charAt(0)) + propertyName.substring(1);
- try
+ final Object attrValue = method.invoke(value);
+ if (attrValue != null)
{
- final Object attrValue = method.invoke(value);
- if (attrValue != null)
- {
- valueAsMap.put(propertyName, attrValue);
- }
- }
- catch (IllegalAccessException | InvocationTargetException e)
- {
- throw new ServerScopedRuntimeException(e);
+ valueAsMap.put(propertyName, attrValue);
}
}
+ catch (IllegalAccessException | InvocationTargetException e)
+ {
+ throw new ServerScopedRuntimeException(e);
+ }
}
- return valueAsMap;
}
- };
+ }
+ return valueAsMap;
+ }
+ private boolean isDerivedMethod(final Method method)
+ {
+ final boolean annotationPresent = method.isAnnotationPresent(ManagedAttributeValueTypeDerivedMethod.class);
+ if(!annotationPresent)
+ {
+
+ final Class<?> clazz = method.getDeclaringClass();
+ final String methodName = method.getName();
+ if (isDerivedMethod(clazz, methodName))
+ {
+ return true;
+ }
+ }
+ return annotationPresent;
+ }
+
+ private boolean isDerivedMethod(final Class<?> clazz, final String methodName)
+ {
+ for(Method method : clazz.getDeclaredMethods())
+ {
+ if(method.getName().equals(methodName)
+ && method.getParameterTypes().length==0)
+ {
+ if(method.isAnnotationPresent(ManagedAttributeValueTypeDerivedMethod.class))
+ {
+ return true;
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ for(Class<?> iface : clazz.getInterfaces())
+ {
+ if(ManagedAttributeValue.class.isAssignableFrom(iface))
+ {
+ if(isDerivedMethod(iface, methodName))
+ {
+ return true;
+ }
+ }
+ }
+ if(clazz.getSuperclass() != null && ManagedAttributeValue.class.isAssignableFrom(clazz.getSuperclass()))
+ {
+ if(isDerivedMethod(clazz.getSuperclass(), methodName))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModule.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModule.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModule.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModule.java Wed Dec 28 22:35:18 2016
@@ -38,7 +38,9 @@ public class ConfiguredObjectJacksonModu
{
private static final long serialVersionUID = 1L;
- private static final ConfiguredObjectJacksonModule INSTANCE = new ConfiguredObjectJacksonModule();
+ private static final ConfiguredObjectJacksonModule INSTANCE = new ConfiguredObjectJacksonModule(false);
+ private static final ConfiguredObjectJacksonModule PERSISTENCE_INSTANCE = new ConfiguredObjectJacksonModule(true);
+
private static final Set<String> OBJECT_METHOD_NAMES = Collections.synchronizedSet(new HashSet<String>());
@@ -50,10 +52,11 @@ public class ConfiguredObjectJacksonModu
}
}
- private ConfiguredObjectJacksonModule()
+ private ConfiguredObjectJacksonModule(final boolean forPersistence)
{
super("ConfiguredObjectSerializer", new Version(1,0,0,null, "org.apache.qpid", "broker-core"));
- for(final ConfiguredObjectCustomSerialization.Converter converter : ConfiguredObjectCustomSerialization.getConverters())
+ for(final ConfiguredObjectCustomSerialization.Converter converter :
+ ConfiguredObjectCustomSerialization.getConverters(forPersistence))
{
addSerializer(converter.getConversionClass(), new JsonSerializer()
{
@@ -68,10 +71,10 @@ public class ConfiguredObjectJacksonModu
}
- public static ObjectMapper newObjectMapper()
+ public static ObjectMapper newObjectMapper(final boolean forPersistence)
{
final ObjectMapper objectMapper = new ObjectMapper();
- objectMapper.registerModule(INSTANCE);
+ objectMapper.registerModule(forPersistence ? PERSISTENCE_INSTANCE : INSTANCE);
return objectMapper;
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java Wed Dec 28 22:35:18 2016
@@ -959,7 +959,7 @@ public class ConfiguredObjectTypeRegistr
{
try
{
- stringValue = ConfiguredObjectJacksonModule.newObjectMapper().writeValueAsString(value);
+ stringValue = ConfiguredObjectJacksonModule.newObjectMapper(false).writeValueAsString(value);
}
catch (JsonProcessingException e)
{
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueType.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueType.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueType.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueType.java Wed Dec 28 22:35:18 2016
@@ -28,4 +28,5 @@ import java.lang.annotation.Target;
@Target(ElementType.TYPE)
public @interface ManagedAttributeValueType
{
+ boolean isAbstract() default false;
}
Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueTypeDerivedMethod.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueTypeDerivedMethod.java?rev=1776351&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueTypeDerivedMethod.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueTypeDerivedMethod.java Wed Dec 28 22:35:18 2016
@@ -0,0 +1,32 @@
+package org.apache.qpid.server.model;/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface ManagedAttributeValueTypeDerivedMethod
+{
+ String value();
+}
Propchange: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeValueTypeDerivedMethod.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/OwnAttributeResolver.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/OwnAttributeResolver.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/OwnAttributeResolver.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/OwnAttributeResolver.java Wed Dec 28 22:35:18 2016
@@ -42,7 +42,7 @@ public class OwnAttributeResolver implem
public OwnAttributeResolver(final ConfiguredObject<?> object)
{
_object = object;
- _objectMapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ _objectMapper = ConfiguredObjectJacksonModule.newObjectMapper(false);
}
@Override
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/PublishingLink.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/PublishingLink.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/PublishingLink.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/PublishingLink.java Wed Dec 28 22:35:18 2016
@@ -20,8 +20,10 @@
*/
package org.apache.qpid.server.model;
-@ManagedAttributeValueType
+@ManagedAttributeValueType(isAbstract = true)
public interface PublishingLink extends ManagedAttributeValue
{
+ String getName();
+ String getType();
String getDestination();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/SocketConnectionMetaData.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/SocketConnectionMetaData.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/SocketConnectionMetaData.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/SocketConnectionMetaData.java Wed Dec 28 22:35:18 2016
@@ -24,7 +24,7 @@ import org.apache.qpid.server.model.Mana
import org.apache.qpid.server.model.Protocol;
import org.apache.qpid.server.model.Transport;
-@ManagedAttributeValueType
+@ManagedAttributeValueType(isAbstract = true)
public interface SocketConnectionMetaData
{
String getLocalAddress();
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCConfigurationStore.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCConfigurationStore.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCConfigurationStore.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCConfigurationStore.java Wed Dec 28 22:35:18 2016
@@ -290,7 +290,7 @@ public abstract class AbstractJDBCConfig
Map<UUID,Map<String,Object>> bindingsToUpdate = new HashMap<UUID, Map<String, Object>>();
List<UUID> others = new ArrayList<UUID>();
- final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper(true);
PreparedStatement stmt = connection.prepareStatement("SELECT id, object_type, attributes FROM " + getConfiguredObjectsTableName());
try
@@ -632,7 +632,7 @@ public abstract class AbstractJDBCConfig
else
{
final Map<String, Object> attributes = configuredObject.getAttributes();
- final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper(true);
byte[] attributesAsBytes = objectMapper.writeValueAsBytes(attributes);
ByteArrayInputStream bis = new ByteArrayInputStream(attributesAsBytes);
@@ -742,7 +742,7 @@ public abstract class AbstractJDBCConfig
try (ResultSet rs = stmt.executeQuery())
{
- final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper(true);
if (rs.next())
{
try (PreparedStatement stmt2 = conn.prepareStatement("UPDATE " + getConfiguredObjectsTableName()
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java Wed Dec 28 22:35:18 2016
@@ -29,7 +29,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -93,7 +92,7 @@ public class JsonFileConfigStore extends
public JsonFileConfigStore(Class<? extends ConfiguredObject> rootClass)
{
super();
- _objectMapper = ConfiguredObjectJacksonModule.newObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+ _objectMapper = ConfiguredObjectJacksonModule.newObjectMapper(true).enable(SerializationFeature.INDENT_OUTPUT);
_rootClass = rootClass;
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/AbstractJDBCPreferenceStore.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/AbstractJDBCPreferenceStore.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/AbstractJDBCPreferenceStore.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/AbstractJDBCPreferenceStore.java Wed Dec 28 22:35:18 2016
@@ -350,7 +350,7 @@ public abstract class AbstractJDBCPrefer
final Map<String, Object> attributes)
throws JsonProcessingException, SQLException
{
- final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ final ObjectMapper objectMapper = ConfiguredObjectJacksonModule.newObjectMapper(true);
if (attributes != null)
{
byte[] attributesAsBytes = objectMapper.writeValueAsBytes(attributes);
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/JsonFilePreferenceStore.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/JsonFilePreferenceStore.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/JsonFilePreferenceStore.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/JsonFilePreferenceStore.java Wed Dec 28 22:35:18 2016
@@ -50,7 +50,7 @@ public class JsonFilePreferenceStore ext
super();
_storePath = path;
_posixFilePermissions = posixFilePermissions;
- _objectMapper = ConfiguredObjectJacksonModule.newObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+ _objectMapper = ConfiguredObjectJacksonModule.newObjectMapper(true).enable(SerializationFeature.INDENT_OUTPUT);
_recordMap = new LinkedHashMap<>();
}
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModuleTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModuleTest.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModuleTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModuleTest.java Wed Dec 28 22:35:18 2016
@@ -52,7 +52,7 @@ public class ConfiguredObjectJacksonModu
when(authProvider.getType()).thenReturn(originType);
when(authProvider.getName()).thenReturn(originName);
Principal p = new UsernamePrincipal(username, authProvider);
- ObjectMapper mapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ ObjectMapper mapper = ConfiguredObjectJacksonModule.newObjectMapper(false);
String json = mapper.writeValueAsString(p);
assertEquals("unexpected principal serialisation", expectedSerialisation, json);
}
@@ -61,7 +61,7 @@ public class ConfiguredObjectJacksonModu
{
ManagedAttributeValue testType = new TestManagedAttributeValue();
- ObjectMapper encoder = ConfiguredObjectJacksonModule.newObjectMapper();
+ ObjectMapper encoder = ConfiguredObjectJacksonModule.newObjectMapper(false);
String encodedValue = encoder.writeValueAsString(testType);
ObjectMapper decoder = new ObjectMapper();
Map decodedMap = decoder.readValue(encodedValue, Map.class);
Modified: qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementOutputConverter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementOutputConverter.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementOutputConverter.java (original)
+++ qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementOutputConverter.java Wed Dec 28 22:35:18 2016
@@ -92,7 +92,8 @@ class ManagementOutputConverter
}
else
{
- for(ConfiguredObjectCustomSerialization.Converter converter : ConfiguredObjectCustomSerialization.getConverters())
+ for(ConfiguredObjectCustomSerialization.Converter converter : ConfiguredObjectCustomSerialization.getConverters(
+ false))
{
if(converter.getConversionClass().isAssignableFrom(value.getClass()))
{
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java?rev=1776351&r1=1776350&r2=1776351&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java Wed Dec 28 22:35:18 2016
@@ -247,7 +247,7 @@ public abstract class AbstractServlet ex
private void writeObjectToResponse(Object object, HttpServletRequest request, HttpServletResponse response) throws IOException
{
OutputStream stream = getOutputStream(request, response);
- ObjectMapper mapper = ConfiguredObjectJacksonModule.newObjectMapper();
+ ObjectMapper mapper = ConfiguredObjectJacksonModule.newObjectMapper(false);
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
mapper.writeValue(stream, object);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org