package alien4cloud.utils.jackson; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.databind.DatabindContext; /** * Utility to share the condition validation code between serializer and de-serializer. */ public class ConditionalEnabledHelper { /** * return the attributes defined on the conditional on attribute annotation. * * @param property The property from witch to extract the list of attributes to enable the conditional (de)serializer. * @return get the attributes */ private static String[] getAttributes(BeanProperty property) { ConditionalOnAttribute conditionalOnAttribute = property.getAnnotation(ConditionalOnAttribute.class); if (conditionalOnAttribute != null) { return conditionalOnAttribute.value(); } return new String[0]; } /** * Checks if a conditional serializer or de-serializer should be enabled. * * @param context The serialization or de-serialization context. * @param property The property from witch to extract the list of attributes to enable the conditional (de)serializer. * @return true if the condition is matched (one of the attribute exists in context) or false if not. */ public static boolean isEnabled(DatabindContext context, BeanProperty property) { String[] enabledAttributes = getAttributes(property); for (String attribute : enabledAttributes) { if (context.getAttribute(attribute) != null) { return true; } } return false; } }