Search in sources :

Example 16 with JsonProperty

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonProperty in project dhis2-core by dhis2.

the class JacksonPropertyIntrospector method collectProperties.

private static List<Property> collectProperties(Class<?> klass) {
    boolean isPrimitiveOrWrapped = ClassUtils.isPrimitiveOrWrapper(klass);
    if (isPrimitiveOrWrapped) {
        return Collections.emptyList();
    }
    List<Field> fields = ReflectionUtils.findFields(klass, f -> f.isAnnotationPresent(JsonProperty.class));
    List<Method> methods = ReflectionUtils.findMethods(klass, m -> AnnotationUtils.findAnnotation(m, JsonProperty.class) != null && m.getParameterTypes().length == 0);
    Multimap<String, Method> multimap = ReflectionUtils.getMethodsMultimap(klass);
    Map<String, Property> propertyMap = new HashMap<>();
    for (var field : fields) {
        Property property = new Property(klass, null, null);
        property.setAnnotations(getAnnotations(field.getAnnotations()));
        JsonProperty jsonProperty = field.getAnnotation(JsonProperty.class);
        String fieldName = field.getName();
        String name = StringUtils.isEmpty(requireNonNull(jsonProperty).value()) ? fieldName : jsonProperty.value();
        property.setName(name);
        property.setFieldName(fieldName);
        property.setSetterMethod(ReflectionUtils.findSetterMethod(fieldName, klass));
        property.setGetterMethod(ReflectionUtils.findGetterMethod(fieldName, klass));
        property.setNamespace(trimToNull(jsonProperty.namespace()));
        propertyMap.put(name, property);
    }
    for (var method : methods) {
        JsonProperty jsonProperty = AnnotationUtils.findAnnotation(method, JsonProperty.class);
        String fieldName = ReflectionUtils.getFieldName(method);
        String name = StringUtils.isEmpty(requireNonNull(jsonProperty).value()) ? fieldName : jsonProperty.value();
        if (propertyMap.containsKey(name)) {
            continue;
        }
        Property property = new Property(klass, method, null);
        property.setAnnotations(getAnnotations(method.getAnnotations()));
        property.setName(name);
        property.setFieldName(fieldName);
        property.setNamespace(trimToNull(jsonProperty.namespace()));
        propertyMap.put(name, property);
        String setterName = "set" + capitalize(fieldName);
        if (multimap.containsKey(setterName)) {
            property.setSetterMethod(multimap.get(setterName).iterator().next());
        }
        propertyMap.put(name, property);
    }
    return new ArrayList<>(propertyMap.values());
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) HashMap(java.util.HashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) ArrayList(java.util.ArrayList) Method(java.lang.reflect.Method) Field(java.lang.reflect.Field) JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) JacksonXmlProperty(com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty) Property(org.hisp.dhis.schema.Property)

Example 17 with JsonProperty

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonProperty in project POL-POM-5 by PlayOnLinux.

the class LocalisationHelper method fetchParameterName.

private String fetchParameterName(Parameter parameter) {
    final JsonProperty jsonAnnotation = parameter.getAnnotation(JsonProperty.class);
    final ParameterName parameterNameAnnotation = parameter.getAnnotation(ParameterName.class);
    if (parameterNameAnnotation != null) {
        return parameterNameAnnotation.value();
    }
    if (jsonAnnotation != null) {
        return jsonAnnotation.value();
    }
    return parameter.getName();
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty)

Example 18 with JsonProperty

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonProperty in project textdb by TextDB.

the class JsonSchemaHelper method getAdvancedOptionProperties.

public static List<String> getAdvancedOptionProperties(Class<? extends PredicateBase> predicateClass) {
    ArrayList<String> advancedProperties = new ArrayList<>();
    Constructor<?> constructor = getJsonCreatorConstructor(predicateClass);
    for (Annotation[] annotations : Arrays.asList(constructor.getParameterAnnotations())) {
        // find the @AdvancedOption annotation for each parameter
        Optional<Annotation> findAdvancedOptionAnnotation = Arrays.asList(annotations).stream().filter(annotation -> annotation.annotationType().equals(AdvancedOption.class)).findAny();
        if (!findAdvancedOptionAnnotation.isPresent()) {
            continue;
        }
        AdvancedOption advancedOptionAnnotation = (AdvancedOption) findAdvancedOptionAnnotation.get();
        // find the @JsonProperty annotation
        Optional<Annotation> findJsonProperty = Arrays.asList(annotations).stream().filter(annotation -> annotation.annotationType().equals(JsonProperty.class)).findAny();
        if (!findJsonProperty.isPresent()) {
            continue;
        }
        JsonProperty jsonProperty = (JsonProperty) findJsonProperty.get();
        if (advancedOptionAnnotation.isAdvancedOption()) {
            advancedProperties.add(jsonProperty.value());
        }
    }
    return advancedProperties;
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) java.util(java.util) OperatorArityConstants(edu.uci.ics.texera.dataflow.plangen.OperatorArityConstants) Files(java.nio.file.Files) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) JsonSchema(com.fasterxml.jackson.module.jsonSchema.JsonSchema) TexeraException(edu.uci.ics.texera.api.exception.TexeraException) Constructor(java.lang.reflect.Constructor) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) AnnotatedClass(com.fasterxml.jackson.databind.introspect.AnnotatedClass) Utils(edu.uci.ics.texera.api.utils.Utils) JsonSchemaGenerator(com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator) Annotation(java.lang.annotation.Annotation) JsonCreator(com.fasterxml.jackson.annotation.JsonCreator) NamedType(com.fasterxml.jackson.databind.jsontype.NamedType) AdvancedOption(edu.uci.ics.texera.dataflow.annotation.AdvancedOption) JsonNode(com.fasterxml.jackson.databind.JsonNode) DataConstants(edu.uci.ics.texera.api.constants.DataConstants) Path(java.nio.file.Path) JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) AdvancedOption(edu.uci.ics.texera.dataflow.annotation.AdvancedOption) Annotation(java.lang.annotation.Annotation)

Example 19 with JsonProperty

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonProperty in project swagger-core by swagger-api.

the class SwaggerAnnotationIntrospector method hasRequiredMarker.

@Override
public Boolean hasRequiredMarker(AnnotatedMember m) {
    XmlElement elem = m.getAnnotation(XmlElement.class);
    if (elem != null) {
        if (elem.required()) {
            return true;
        }
    }
    JsonProperty jsonProperty = m.getAnnotation(JsonProperty.class);
    if (jsonProperty != null) {
        if (jsonProperty.required()) {
            return true;
        }
    }
    Schema ann = m.getAnnotation(Schema.class);
    if (ann != null) {
        if (ann.required()) {
            return ann.required();
        }
    }
    ArraySchema arraySchema = m.getAnnotation(ArraySchema.class);
    if (arraySchema != null) {
        if (arraySchema.arraySchema().required()) {
            return arraySchema.arraySchema().required();
        }
        if (arraySchema.schema().required()) {
            return arraySchema.schema().required();
        }
    }
    return null;
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) ArraySchema(io.swagger.v3.oas.annotations.media.ArraySchema) Schema(io.swagger.v3.oas.annotations.media.Schema) ArraySchema(io.swagger.v3.oas.annotations.media.ArraySchema) XmlElement(javax.xml.bind.annotation.XmlElement)

Example 20 with JsonProperty

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonProperty in project hippo by NHS-digital-website.

the class CyberAlert method getBasePath.

@JsonProperty
public String getBasePath() {
    if (getPublicallyAccessible() || getLimitedAccess()) {
        final HstRequestContext context = RequestContextProvider.get();
        if (context != null) {
            // DW-1077 - compose this documetn base URL for REST API purposes
            HttpServletRequest req = context.getServletRequest();
            StringBuffer url = req.getRequestURL();
            String base = url.substring(0, url.length() - req.getRequestURI().length() + req.getContextPath().length());
            // remove basepath part ('content/documents/corporate-website')
            // and compose full path
            String pathSuffix = this.getPath().replace("/" + context.getSiteContentBasePath(), "");
            // remove '/site/' if exists
            return (base + pathSuffix).replace("/site/", "/");
        }
    }
    return null;
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) HstRequestContext(org.hippoecm.hst.core.request.HstRequestContext) JsonProperty(com.fasterxml.jackson.annotation.JsonProperty)

Aggregations

JsonProperty (com.fasterxml.jackson.annotation.JsonProperty)45 Field (java.lang.reflect.Field)12 ArrayList (java.util.ArrayList)10 Annotation (java.lang.annotation.Annotation)8 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)6 NamedType (com.fasterxml.jackson.databind.jsontype.NamedType)6 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)6 Method (java.lang.reflect.Method)6 Type (java.lang.reflect.Type)6 BeanDescription (com.fasterxml.jackson.databind.BeanDescription)5 JsonNode (com.fasterxml.jackson.databind.JsonNode)5 HashMap (java.util.HashMap)5 Map (java.util.Map)5 JsonCreator (com.fasterxml.jackson.annotation.JsonCreator)4 JavaType (com.fasterxml.jackson.databind.JavaType)4 AnnotatedClass (com.fasterxml.jackson.databind.introspect.AnnotatedClass)4 JsonSchema (com.fasterxml.jackson.module.jsonSchema.JsonSchema)4 JsonSchemaGenerator (com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator)4 List (java.util.List)4 JsonIdentityInfo (com.fasterxml.jackson.annotation.JsonIdentityInfo)3