protected void init(ObjectMapper objectMapper) { objectMapper.setSerializationInclusion(Include.NON_NULL); objectMapper.setVisibility(objectMapper.getSerializationConfig() .getDefaultVisibilityChecker() .withFieldVisibility(JsonAutoDetect.Visibility.ANY) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.NONE) .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)); objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); objectMapper.enable(Feature.WRITE_BIGDECIMAL_AS_PLAIN); objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); objectMapper.enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY); objectMapper.addMixIn(Throwable.class, ThrowableMixIn.class); }
private static VisibilityChecker<?> fieldsOnlyVisibilityChecker(ObjectMapper mapper) { return mapper.getSerializationConfig().getDefaultVisibilityChecker() .withFieldVisibility(JsonAutoDetect.Visibility.ANY) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE); }
@Override public VisibilityChecker<?> findAutoDetectVisibility(AnnotatedClass ac, VisibilityChecker<?> checker) { JsonAutoDetect ann = _findAnnotation(ac, JsonAutoDetect.class); return (ann == null) ? checker : checker.with(ann); }
@Override public VisibilityChecker<?> getDefaultVisibilityChecker() { VisibilityChecker<?> vchecker = super.getDefaultVisibilityChecker(); if (!isEnabled(MapperFeature.AUTO_DETECT_GETTERS)) { vchecker = vchecker.withGetterVisibility(Visibility.NONE); } // then global overrides (disabling) if (!isEnabled(MapperFeature.AUTO_DETECT_IS_GETTERS)) { vchecker = vchecker.withIsGetterVisibility(Visibility.NONE); } if (!isEnabled(MapperFeature.AUTO_DETECT_FIELDS)) { vchecker = vchecker.withFieldVisibility(Visibility.NONE); } return vchecker; }
public static RestTemplate defaultRestTemplate() { LOG.debug("Creating new default RestTemplate instance."); ObjectMapper objectMapper = new ObjectMapper(). configure(FAIL_ON_UNKNOWN_PROPERTIES, false).configure(FAIL_ON_EMPTY_BEANS, false). setSerializationInclusion(NON_NULL); objectMapper.getSerializationConfig().getDefaultVisibilityChecker(). withFieldVisibility(PUBLIC_ONLY); MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter(objectMapper); return new RestTemplate(singletonList(jacksonConverter)); }
String implName = (ai == null) ? null : ai.findImplicitPropertyName(f); if (implName == null) { implName = f.getName(); pn = ai.findNameForSerialization(f); } else { pn = ai.findNameForDeserialization(f); if (nameExplicit && pn.isEmpty()) { // empty String meaning "use default name", here just means "same as field name" pn = _propNameFromSimple(implName); nameExplicit = false; visible = _visibilityChecker.isFieldVisible(f);
static ObjectWriter getConfiguredJsonWriter() { final ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, false); final VisibilityChecker<?> defaultVisibilityChecker = mapper.getSerializationConfig().getDefaultVisibilityChecker(); final VisibilityChecker<?> visibilityChecker = defaultVisibilityChecker.withIsGetterVisibility(JsonAutoDetect.Visibility.NONE); mapper.setVisibilityChecker(visibilityChecker); final ObjectWriter writer = mapper.writer(); final MyDefaultPrettyPrinter prettyPrinter = new MyDefaultPrettyPrinter(); final IdeaLikeIndenter indenter = new IdeaLikeIndenter(); prettyPrinter.indentArraysWith(indenter); prettyPrinter.indentObjectsWith(indenter); return writer.with(prettyPrinter); }
JsonCreator.Mode creatorMode = intr.findCreatorAnnotation(ctxt.getConfig(), factory); final int argCount = factory.getParameterCount(); if (creatorMode == null) { if ((argCount == 1) && vchecker.isCreatorVisible(factory)) { nonAnnotated.add(CreatorCandidate.construct(intr, factory, null)); if (!useProps) { // not property based but delegating factory, false, vchecker.isCreatorVisible(factory)); final AnnotatedParameter param = factory.getParameter(i); BeanPropertyDefinition propDef = (propDefs == null) ? null : propDefs[i]; JacksonInject.Value injectable = intr.findInjectableValue(param); final PropertyName name = (propDef == null) ? null : propDef.getFullName(); continue; NameTransformer unwrapper = intr.findUnwrappingNameTransformer(param); if (unwrapper != null) { _reportUnwrappedCreatorProperty(ctxt, beanDesc, param);
String implName = ai.findImplicitPropertyName(f); if (Boolean.TRUE.equals(ai.hasAsValue(f))) { if (_jsonValueAccessors == null) { _jsonValueAccessors = new LinkedList<>(); if (Boolean.TRUE.equals(ai.hasAnySetter(f))) { if (_anySetterField == null) { _anySetterField = new LinkedList<AnnotatedMember>(); boolean nameExplicit = hasName; if (nameExplicit && pn.isEmpty()) { // empty String meaning "use default name", here just means "same as field name" pn = _propNameFromSimple(implName); nameExplicit = false; visible = _visibilityChecker.isFieldVisible(f);
if (!creators.hasDefaultCreator() || intr.hasCreatorAnnotation(defaultCtor)) { creators.setDefaultCreator(defaultCtor); final boolean isCreator = intr.hasCreatorAnnotation(ctor); BeanPropertyDefinition[] propDefs = creatorParams.get(ctor); final int argCount = ctor.getParameterCount(); AnnotatedParameter arg = ctor.getParameter(0); properties[0] = constructCreatorProperty(ctxt, beanDesc, name, 0, arg, intr.findInjectableValueId(arg)); creators.addPropertyCreator(ctor, isCreator, properties); } else { vchecker.isCreatorVisible(ctor)); if (name != null && !name.isEmpty()) { ++implicitNameCount; properties[i] = constructCreatorProperty(ctxt, beanDesc, name, i, param, injectId);
@Override public IgnorePropertiesBackedByTransientFields withSetterVisibility(JsonAutoDetect.Visibility v) { return castToPropertiesBackedByTransientFields(defaultChecker.withSetterVisibility(v)); }
PropertyName pn = ai.findNameForSerialization(f); explName = (pn == null) ? null : pn.getSimpleName(); } else { PropertyName pn = ai.findNameForDeserialization(f); explName = (pn == null) ? null : pn.getSimpleName(); visible = _visibilityChecker.isFieldVisible(f); boolean ignored = (ai != null) && ai.hasIgnoreMarker(f); _property(implName).addField(f, explName, visible, ignored);
@Override public IgnorePropertiesBackedByTransientFields withCreatorVisibility(JsonAutoDetect.Visibility v) { return castToPropertiesBackedByTransientFields(defaultChecker.withCreatorVisibility(v)); }
@Override public IgnorePropertiesBackedByTransientFields withGetterVisibility(JsonAutoDetect.Visibility v) { return castToPropertiesBackedByTransientFields(defaultChecker.withGetterVisibility(v)); }
if (!creators.hasDefaultCreator() || intr.hasCreatorAnnotation(defaultCtor)) { creators.setDefaultCreator(defaultCtor); boolean isCreator = intr.hasCreatorAnnotation(ctor); boolean isVisible = vchecker.isCreatorVisible(ctor); for (int i = 0; i < argCount; ++i) { AnnotatedParameter param = ctor.getParameter(i); PropertyName pn = (param == null) ? null : intr.findNameForDeserialization(param); String name = (pn == null) ? null : pn.getSimpleName(); Object injectId = intr.findInjectableValueId(param); if (name != null && name.length() > 0) {
@Override public IgnorePropertiesBackedByTransientFields withIsGetterVisibility(JsonAutoDetect.Visibility v) { return castToPropertiesBackedByTransientFields(defaultChecker.withIsGetterVisibility(v)); }
int explCount = 0; for (AnnotatedConstructor ctor : beanDesc.getConstructors()) { JsonCreator.Mode creatorMode = intr.findCreatorAnnotation(ctxt.getConfig(), ctor); if (Mode.DISABLED == creatorMode) { continue; if (vchecker.isCreatorVisible(ctor)) { nonAnnotated.add(CreatorCandidate.construct(intr, ctor, creatorParams.get(ctor))); vchecker.isCreatorVisible(ctor)); final AnnotatedParameter param = ctor.getParameter(i); BeanPropertyDefinition propDef = candidate.propertyDef(i); JacksonInject.Value injectId = intr.findInjectableValue(param); final PropertyName name = (propDef == null) ? null : propDef.getFullName(); continue; NameTransformer unwrapper = intr.findUnwrappingNameTransformer(param); if (unwrapper != null) { _reportUnwrappedCreatorProperty(ctxt, beanDesc, param); if (impl == null || impl.isEmpty()) {
throws JsonMappingException Class<?> type = factory.getRawParameterType(0); if (isCreator || vchecker.isCreatorVisible(factory)) { creators.addStringCreator(factory); if (isCreator || vchecker.isCreatorVisible(factory)) { creators.addIntCreator(factory); if (isCreator || vchecker.isCreatorVisible(factory)) { creators.addLongCreator(factory); if (isCreator || vchecker.isCreatorVisible(factory)) { creators.addDoubleCreator(factory); if (isCreator || vchecker.isCreatorVisible(factory)) { creators.addBooleanCreator(factory); if (intr.hasCreatorAnnotation(factory)) { creators.addDelegatingCreator(factory, null); return true;
throws JsonMappingException Class<?> type = factory.getRawParameterType(0); if (isCreator || vchecker.isCreatorVisible(factory)) { creators.addStringCreator(factory, isCreator); if (isCreator || vchecker.isCreatorVisible(factory)) { creators.addIntCreator(factory, isCreator); if (isCreator || vchecker.isCreatorVisible(factory)) { creators.addLongCreator(factory, isCreator); if (isCreator || vchecker.isCreatorVisible(factory)) { creators.addDoubleCreator(factory, isCreator); if (isCreator || vchecker.isCreatorVisible(factory)) { creators.addBooleanCreator(factory, isCreator);
explName = ai.findSerializationName(f); } else { explName = ai.findDeserializationName(f); visible = _visibilityChecker.isFieldVisible(f); boolean ignored = (ai != null) && ai.hasIgnoreMarker(f); _property(implName).addField(f, explName, visible, ignored);