@Override public JsonSerializer<?> modifyMapSerializer(SerializationConfig config, MapType valueType, BeanDescription beanDesc, JsonSerializer<?> serializer) { if (serializer instanceof MapSerializer) { // TODO: We should probably be propagating the NON_EMPTY inclusion here, but it's breaking // discovery. return new DeepEmptyCheckingSerializer<>(serializer); } return serializer; }
protected JsonSerializer<?> buildMapSerializer(SerializationConfig paramSerializationConfig, MapType paramMapType, BeanDescription paramBeanDescription, boolean paramBoolean, JsonSerializer<Object> paramJsonSerializer1, TypeSerializer paramTypeSerializer, JsonSerializer<Object> paramJsonSerializer2) { Object localObject = null; Iterator localIterator1 = customSerializers().iterator(); JsonSerializer localJsonSerializer; do { if (!localIterator1.hasNext()) break; localJsonSerializer = ((Serializers)localIterator1.next()).findMapSerializer(paramSerializationConfig, paramMapType, paramBeanDescription, paramJsonSerializer1, paramTypeSerializer, paramJsonSerializer2); localObject = localJsonSerializer; } while (localJsonSerializer == null); if (localObject == null) if (EnumMap.class.isAssignableFrom(paramMapType.getRawClass())) { JavaType localJavaType = paramMapType.getKeyType(); boolean bool = localJavaType.isEnumType(); EnumValues localEnumValues = null; if (bool) localEnumValues = EnumValues.construct(localJavaType.getRawClass(), paramSerializationConfig.getAnnotationIntrospector()); localObject = new EnumMapSerializer(paramMapType.getContentType(), paramBoolean, localEnumValues, paramTypeSerializer, paramJsonSerializer2); } else { localObject = MapSerializer.construct(paramSerializationConfig.getAnnotationIntrospector().findPropertiesToIgnore(paramBeanDescription.getClassInfo()), paramMapType, paramBoolean, paramTypeSerializer, paramJsonSerializer1, paramJsonSerializer2); } if (this._factoryConfig.hasSerializerModifiers()) { Iterator localIterator2 = this._factoryConfig.serializerModifiers().iterator(); while (localIterator2.hasNext()) localObject = ((BeanSerializerModifier)localIterator2.next()).modifyMapSerializer(paramSerializationConfig, paramMapType, paramBeanDescription, (JsonSerializer)localObject); } return localObject; }
public AnyGetterWriter(BeanProperty property, AnnotatedMember accessor, MapSerializer serializer) { _accessor = accessor; _property = property; _serializer = serializer; }
@Override public void serialize(List<Link> value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException { // sort links according to their relation Map<String, List<Object>> sortedLinks = new LinkedHashMap<String, List<Object>>(); List<Link> links = new ArrayList<Link>(); boolean prefixingRequired = curieProvider != null; boolean curiedLinkPresent = false; boolean skipCuries = !jgen.getOutputContext().getParent().inRoot(); Object currentValue = jgen.getCurrentValue(); if (currentValue instanceof Resources) { if (mapper.hasCuriedEmbed((Resources<?>) currentValue)) { curiedLinkPresent = true; } } for (Link link : value) { if (link.equals(CURIES_REQUIRED_DUE_TO_EMBEDS)) { continue; } String rel = prefixingRequired ? curieProvider.getNamespacedRelFrom(link) : link.getRel(); if (!link.getRel().equals(rel)) { curiedLinkPresent = true; } if (sortedLinks.get(rel) == null) { sortedLinks.put(rel, new ArrayList<Object>()); } links.add(link); sortedLinks.get(rel).add(toHalLink(link)); } if (!skipCuries && prefixingRequired && curiedLinkPresent) { ArrayList<Object> curies = new ArrayList<Object>(); curies.add(curieProvider.getCurieInformation(new Links(links))); sortedLinks.put("curies", curies); } TypeFactory typeFactory = provider.getConfig().getTypeFactory(); JavaType keyType = typeFactory.uncheckedSimpleType(String.class); JavaType valueType = typeFactory.constructCollectionType(ArrayList.class, Object.class); JavaType mapType = typeFactory.constructMapType(HashMap.class, keyType, valueType); MapSerializer serializer = MapSerializer.construct(new String[]{}, mapType, true, null, provider.findKeySerializer(keyType, null), new OptionalListJackson2Serializer(property), null); serializer.serialize(sortedLinks, jgen, provider); }
protected JsonSerializer<Object> constructBeanSerializer(SerializerProvider paramSerializerProvider, BeanDescription paramBeanDescription) { if (paramBeanDescription.getBeanClass() == Object.class) return paramSerializerProvider.getUnknownTypeSerializer(Object.class); SerializationConfig localSerializationConfig = paramSerializerProvider.getConfig(); BeanSerializerBuilder localBeanSerializerBuilder1 = constructBeanSerializerBuilder(paramBeanDescription); BeanSerializerBuilder localBeanSerializerBuilder2 = localBeanSerializerBuilder1; localBeanSerializerBuilder1.setConfig(localSerializationConfig); List localList1 = findBeanProperties(paramSerializerProvider, paramBeanDescription, localBeanSerializerBuilder2); Object localObject = localList1; if (localList1 == null) localObject = new ArrayList(); if (this._factoryConfig.hasSerializerModifiers()) { Iterator localIterator3 = this._factoryConfig.serializerModifiers().iterator(); while (localIterator3.hasNext()) localObject = ((BeanSerializerModifier)localIterator3.next()).changeProperties(localSerializationConfig, paramBeanDescription, (List)localObject); } List localList2 = filterBeanProperties(localSerializationConfig, paramBeanDescription, (List)localObject); if (this._factoryConfig.hasSerializerModifiers()) { Iterator localIterator2 = this._factoryConfig.serializerModifiers().iterator(); while (localIterator2.hasNext()) localList2 = ((BeanSerializerModifier)localIterator2.next()).orderProperties(localSerializationConfig, paramBeanDescription, localList2); } localBeanSerializerBuilder2.setObjectIdWriter(constructObjectIdHandler(paramSerializerProvider, paramBeanDescription, localList2)); localBeanSerializerBuilder2.setProperties(localList2); localBeanSerializerBuilder2.setFilterId(findFilterId(localSerializationConfig, paramBeanDescription)); AnnotatedMember localAnnotatedMember = paramBeanDescription.findAnyGetter(); if (localAnnotatedMember != null) { if (localSerializationConfig.canOverrideAccessModifiers()) localAnnotatedMember.fixAccess(); JavaType localJavaType1 = localAnnotatedMember.getType(paramBeanDescription.bindingsForBeanType()); boolean bool = localSerializationConfig.isEnabled(MapperFeature.USE_STATIC_TYPING); JavaType localJavaType2 = localJavaType1.getContentType(); MapSerializer localMapSerializer = MapSerializer.construct(null, localJavaType1, bool, createTypeSerializer(localSerializationConfig, localJavaType2), null, null); localBeanSerializerBuilder2.setAnyGetter(new AnyGetterWriter(new BeanProperty.Std(localAnnotatedMember.getName(), localJavaType2, null, paramBeanDescription.getClassAnnotations(), localAnnotatedMember, false), localAnnotatedMember, localMapSerializer)); } processViews(localSerializationConfig, localBeanSerializerBuilder2); if (this._factoryConfig.hasSerializerModifiers()) { Iterator localIterator1 = this._factoryConfig.serializerModifiers().iterator(); while (localIterator1.hasNext()) localBeanSerializerBuilder2 = ((BeanSerializerModifier)localIterator1.next()).updateBuilder(localSerializationConfig, paramBeanDescription, localBeanSerializerBuilder2); } JsonSerializer localJsonSerializer = localBeanSerializerBuilder2.build(); if ((localJsonSerializer == null) && (paramBeanDescription.hasKnownClassAnnotations())) return localBeanSerializerBuilder2.createDummy(); return localJsonSerializer; }
public AnyGetterWriter(BeanProperty paramBeanProperty, AnnotatedMember paramAnnotatedMember, MapSerializer paramMapSerializer) { this._accessor = paramAnnotatedMember; this._property = paramBeanProperty; this._serializer = paramMapSerializer; }
public void resolve(SerializerProvider paramSerializerProvider) { this._serializer = ((MapSerializer)this._serializer.createContextual(paramSerializerProvider, this._property)); }
public void resolve(SerializerProvider provider) throws JsonMappingException { _serializer = (MapSerializer) _serializer.createContextual(provider, _property); }