private boolean isMap(FieldAccess fieldAccess) { switch (fieldAccess.typeEnum()) { case MAP: return true; } return false; }
private boolean isOptional(FieldAccess fieldAccess) { return (fieldAccess.type() == Optional.class); }
private String getDescription(final FieldAccess fieldAccess) { String description = ""; final Map<String, Object> descriptionMap = fieldAccess.getAnnotationData("Description"); if (descriptionMap != null) { if (descriptionMap.containsKey("value")) { description = descriptionMap.get("value").toString(); } } return description; }
private Schema convertFieldToSchema(final FieldAccess fieldAccess) { try { final Class<?> type = fieldAccess.type(); final Schema schema = mappings.get(type); final String description = getDescription(fieldAccess); if (schema != null) { if (description == null) { return schema; } else { return Schema.schemaWithDescription(schema, description); } } return convertFieldToComplexSchema(fieldAccess); } catch (Exception ex) { logger.warn("unable to convert field " + fieldAccess.name() + " from " + fieldAccess.declaringParent(), ex); return Schema.schemaWithFormat("error", "error.see.logs"); } }
private void addClass(final ClassMeta<?> classMeta) { try { if (definitionMap.containsKey(classMeta.name())) { return; } definitionMap.put(classMeta.name(), null); final DefinitionBuilder definitionBuilder = new DefinitionBuilder(); final String description = getDescription(classMeta); definitionBuilder.setDescription(description); final Map<String, FieldAccess> fieldAccessMap = classMeta.fieldMap(); fieldAccessMap.entrySet().forEach(fieldAccessEntry -> { final FieldAccess fieldAccess = fieldAccessEntry.getValue(); if (fieldAccess.ignore() || fieldAccess.isStatic()) { return; } definitionBuilder.addProperty(fieldAccess.name(), convertFieldToSchema(fieldAccess)); }); final Definition definition = definitionBuilder.build(); definitionMap.put(classMeta.name(), definition); } catch (Exception ex) { logger.warn("Unable to add class " + classMeta.longName(), ex); } }
@Override protected JsonSerializer initialValue() { return new JsonSerializerFactory().addFilter((parent, fieldAccess) -> !fieldAccess.name().equals("metaClass")).create(); } };
public MapperComplex(FieldAccessMode fieldAccessType, boolean useAnnotations, boolean caseInsensitiveFields, Set<String> ignoreSet, String view, boolean respectIgnore, boolean acceptSingleValueAsArray) { fieldsAccessor = FieldAccessMode.create( fieldAccessType, useAnnotations, caseInsensitiveFields ); this.ignoreSet = ignoreSet; this.view = view; this.respectIgnore = respectIgnore; this.acceptSingleValueAsArray = acceptSingleValueAsArray; this.outputType = true; } public MapperComplex(FieldsAccessor fieldsAccessor, Set<String> ignoreSet, String view, boolean respectIgnore) {
public MapperComplex() { fieldsAccessor = new FieldsAccessorFieldThenProp(true); ignoreSet = null; view = null; respectIgnore = true; acceptSingleValueAsArray = false; this.outputType = true; }
private Schema convertFieldToMapSchema(final FieldAccess fieldAccess) { final Type[] actualTypeArguments = fieldAccess.getParameterizedType().getActualTypeArguments(); final String description = getDescription(fieldAccess); if (actualTypeArguments[1] instanceof Class) { Schema componentSchema = mappings.get(actualTypeArguments[1]); /* If it was not in the mapping, then it is complex. */ if (componentSchema == null) { if (!definitionMap.containsKey(fieldAccess.getComponentClass().getSimpleName())) { addClass(fieldAccess.getComponentClass()); } componentSchema = Schema.definitionRef(fieldAccess.getComponentClass().getSimpleName(), ""); } return Schema.map(componentSchema, description); } else { return null; } }
@Override public FieldAccess apply( Field from ) { if ( useUnsafe && thisUseUnsafe ) { return UnsafeField.createUnsafeField(from); } else { return new ReflectField( from ); } } }
private Schema convertFieldToArraySchema(final FieldAccess fieldAccess) { String description = getDescription(fieldAccess); Schema componentSchema = mappings.get(fieldAccess.getComponentClass()); /* If it was not in the mapping, then it is complex. */ if (componentSchema == null) { if (!definitionMap.containsKey(fieldAccess.getComponentClass().getSimpleName())) { addClass(fieldAccess.getComponentClass()); } componentSchema = Schema.definitionRef(fieldAccess.getComponentClass().getSimpleName(), description); } return Schema.array(componentSchema); }
@Override protected JsonSerializer initialValue() { return new JsonSerializerFactory().setUseAnnotations(true) .addFilter((parent, fieldAccess) -> !fieldAccess.name().equals("metaClass")).create(); } };
public MapperComplex(boolean outputType, FieldAccessMode fieldAccessType, boolean useAnnotations, boolean caseInsensitiveFields, Set<String> ignoreSet, String view, boolean respectIgnore, boolean acceptSingleValueAsArray) { fieldsAccessor = FieldAccessMode.create( fieldAccessType, useAnnotations, caseInsensitiveFields ); this.ignoreSet = ignoreSet; this.view = view; this.respectIgnore = respectIgnore; this.acceptSingleValueAsArray = acceptSingleValueAsArray; this.outputType = outputType; }
public MapperComplex(Set<String> ignoreSet) { this.fieldsAccessor = new FieldsAccessorFieldThenProp(true);; this.ignoreSet = ignoreSet; this.view = null; this.respectIgnore = true; this.acceptSingleValueAsArray = false; this.outputType = true; }
private boolean isArraySchema(FieldAccess fieldAccess) { switch (fieldAccess.typeEnum()) { case SET: return true; case LIST: return true; case COLLECTION: return true; case ARRAY: return true; } return false; }
private Schema convertFieldToDefinitionRef(final FieldAccess fieldAccess) { if (!definitionMap.containsKey(fieldAccess.type().getSimpleName())) { addClass(fieldAccess.type()); } final String description = getDescription(fieldAccess); return Schema.definitionRef(fieldAccess.type().getSimpleName(), description); }
@Override public FieldAccess apply( Field from ) { if ( useUnsafe && thisUseUnsafe ) { return UnsafeField.createUnsafeField(from); } else { return new ReflectField( from ); } } }
public MapperComplex(boolean outputType, FieldAccessMode fieldAccessType, boolean useAnnotations, boolean caseInsensitiveFields, Set<String> ignoreSet, String view, boolean respectIgnore, boolean acceptSingleValueAsArray) { fieldsAccessor = FieldAccessMode.create( fieldAccessType, useAnnotations, caseInsensitiveFields ); this.ignoreSet = ignoreSet; this.view = view; this.respectIgnore = respectIgnore; this.acceptSingleValueAsArray = acceptSingleValueAsArray; this.outputType = outputType; }
public MapperComplex(Set<String> ignoreSet) { this.fieldsAccessor = new FieldsAccessorFieldThenProp(true);; this.ignoreSet = ignoreSet; this.view = null; this.respectIgnore = true; this.acceptSingleValueAsArray = false; this.outputType = true; }
public MapperComplex(FieldAccessMode fieldAccessType, boolean useAnnotations, boolean caseInsensitiveFields, Set<String> ignoreSet, String view, boolean respectIgnore, boolean acceptSingleValueAsArray) { fieldsAccessor = FieldAccessMode.create( fieldAccessType, useAnnotations, caseInsensitiveFields ); this.ignoreSet = ignoreSet; this.view = view; this.respectIgnore = respectIgnore; this.acceptSingleValueAsArray = acceptSingleValueAsArray; this.outputType = true; } public MapperComplex(FieldsAccessor fieldsAccessor, Set<String> ignoreSet, String view, boolean respectIgnore) {