// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.fasterxml.jackson.databind.ser; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.SerializableString; import com.fasterxml.jackson.core.io.SerializedString; import com.fasterxml.jackson.databind.AnnotationIntrospector; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.PropertyMetadata; import com.fasterxml.jackson.databind.PropertyName; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.introspect.AnnotatedField; import com.fasterxml.jackson.databind.introspect.AnnotatedMember; import com.fasterxml.jackson.databind.introspect.AnnotatedMethod; import com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition; import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonObjectFormatVisitor; import com.fasterxml.jackson.databind.jsonschema.JsonSchema; import com.fasterxml.jackson.databind.jsonschema.SchemaAware; import com.fasterxml.jackson.databind.jsontype.TypeSerializer; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap; import com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanPropertyWriter; import com.fasterxml.jackson.databind.ser.std.BeanSerializerBase; import com.fasterxml.jackson.databind.util.Annotations; import com.fasterxml.jackson.databind.util.NameTransformer; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Type; import java.util.HashMap; // Referenced classes of package com.fasterxml.jackson.databind.ser: // PropertyWriter public class BeanPropertyWriter extends PropertyWriter implements BeanProperty { public static final Object MARKER_FOR_EMPTY; protected static final com.fasterxml.jackson.annotation.JsonFormat.Value NO_FORMAT = new com.fasterxml.jackson.annotation.JsonFormat.Value(); protected final Method _accessorMethod; protected final JavaType _cfgSerializationType; protected final Annotations _contextAnnotations; protected final JavaType _declaredType; protected transient PropertySerializerMap _dynamicSerializers; protected final Field _field; protected transient com.fasterxml.jackson.annotation.JsonFormat.Value _format; protected final Class _includeInViews[]; protected HashMap _internalSettings; protected final AnnotatedMember _member; protected final PropertyMetadata _metadata; protected final SerializedString _name; protected JavaType _nonTrivialBaseType; protected JsonSerializer _nullSerializer; protected JsonSerializer _serializer; protected final boolean _suppressNulls; protected final Object _suppressableValue; protected TypeSerializer _typeSerializer; protected final PropertyName _wrapperName; protected BeanPropertyWriter() { _member = null; _contextAnnotations = null; _name = null; _wrapperName = null; _metadata = null; _includeInViews = null; _declaredType = null; _serializer = null; _dynamicSerializers = null; _typeSerializer = null; _cfgSerializationType = null; _accessorMethod = null; _field = null; _suppressNulls = false; _suppressableValue = null; _nullSerializer = null; } public BeanPropertyWriter(BeanPropertyDefinition beanpropertydefinition, AnnotatedMember annotatedmember, Annotations annotations, JavaType javatype, JsonSerializer jsonserializer, TypeSerializer typeserializer, JavaType javatype1, boolean flag, Object obj) { _member = annotatedmember; _contextAnnotations = annotations; _name = new SerializedString(beanpropertydefinition.getName()); _wrapperName = beanpropertydefinition.getWrapperName(); _metadata = beanpropertydefinition.getMetadata(); _includeInViews = beanpropertydefinition.findViews(); _declaredType = javatype; _serializer = jsonserializer; if (jsonserializer == null) { beanpropertydefinition = PropertySerializerMap.emptyForProperties(); } else { beanpropertydefinition = null; } _dynamicSerializers = beanpropertydefinition; _typeSerializer = typeserializer; _cfgSerializationType = javatype1; if (annotatedmember instanceof AnnotatedField) { _accessorMethod = null; _field = (Field)annotatedmember.getMember(); } else if (annotatedmember instanceof AnnotatedMethod) { _accessorMethod = (Method)annotatedmember.getMember(); _field = null; } else { _accessorMethod = null; _field = null; } _suppressNulls = flag; _suppressableValue = obj; _nullSerializer = null; } protected BeanPropertyWriter(BeanPropertyWriter beanpropertywriter) { this(beanpropertywriter, beanpropertywriter._name); } protected BeanPropertyWriter(BeanPropertyWriter beanpropertywriter, SerializedString serializedstring) { _name = serializedstring; _wrapperName = beanpropertywriter._wrapperName; _member = beanpropertywriter._member; _contextAnnotations = beanpropertywriter._contextAnnotations; _declaredType = beanpropertywriter._declaredType; _accessorMethod = beanpropertywriter._accessorMethod; _field = beanpropertywriter._field; _serializer = beanpropertywriter._serializer; _nullSerializer = beanpropertywriter._nullSerializer; if (beanpropertywriter._internalSettings != null) { _internalSettings = new HashMap(beanpropertywriter._internalSettings); } _cfgSerializationType = beanpropertywriter._cfgSerializationType; _dynamicSerializers = beanpropertywriter._dynamicSerializers; _suppressNulls = beanpropertywriter._suppressNulls; _suppressableValue = beanpropertywriter._suppressableValue; _includeInViews = beanpropertywriter._includeInViews; _typeSerializer = beanpropertywriter._typeSerializer; _nonTrivialBaseType = beanpropertywriter._nonTrivialBaseType; _metadata = beanpropertywriter._metadata; } protected BeanPropertyWriter(BeanPropertyWriter beanpropertywriter, PropertyName propertyname) { _name = new SerializedString(propertyname.getSimpleName()); _wrapperName = beanpropertywriter._wrapperName; _member = beanpropertywriter._member; _contextAnnotations = beanpropertywriter._contextAnnotations; _declaredType = beanpropertywriter._declaredType; _accessorMethod = beanpropertywriter._accessorMethod; _field = beanpropertywriter._field; _serializer = beanpropertywriter._serializer; _nullSerializer = beanpropertywriter._nullSerializer; if (beanpropertywriter._internalSettings != null) { _internalSettings = new HashMap(beanpropertywriter._internalSettings); } _cfgSerializationType = beanpropertywriter._cfgSerializationType; _dynamicSerializers = beanpropertywriter._dynamicSerializers; _suppressNulls = beanpropertywriter._suppressNulls; _suppressableValue = beanpropertywriter._suppressableValue; _includeInViews = beanpropertywriter._includeInViews; _typeSerializer = beanpropertywriter._typeSerializer; _nonTrivialBaseType = beanpropertywriter._nonTrivialBaseType; _metadata = beanpropertywriter._metadata; } protected void _depositSchemaProperty(ObjectNode objectnode, JsonNode jsonnode) { objectnode.set(getName(), jsonnode); } protected JsonSerializer _findAndAddDynamic(PropertySerializerMap propertyserializermap, Class class1, SerializerProvider serializerprovider) throws JsonMappingException { if (_nonTrivialBaseType != null) { class1 = propertyserializermap.findAndAddPrimarySerializer(serializerprovider.constructSpecializedType(_nonTrivialBaseType, class1), serializerprovider, this); } else { class1 = propertyserializermap.findAndAddPrimarySerializer(class1, serializerprovider, this); } if (propertyserializermap != ((com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.SerializerAndMapResult) (class1)).map) { _dynamicSerializers = ((com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.SerializerAndMapResult) (class1)).map; } return ((com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.SerializerAndMapResult) (class1)).serializer; } protected boolean _handleSelfReference(Object obj, JsonGenerator jsongenerator, SerializerProvider serializerprovider, JsonSerializer jsonserializer) throws JsonMappingException { if (serializerprovider.isEnabled(SerializationFeature.FAIL_ON_SELF_REFERENCES) && !jsonserializer.usesObjectId() && (jsonserializer instanceof BeanSerializerBase)) { throw new JsonMappingException("Direct self-reference leading to cycle"); } else { return false; } } protected BeanPropertyWriter _new(PropertyName propertyname) { return new BeanPropertyWriter(this, propertyname); } public void assignNullSerializer(JsonSerializer jsonserializer) { if (_nullSerializer != null && _nullSerializer != jsonserializer) { throw new IllegalStateException("Can not override null serializer"); } else { _nullSerializer = jsonserializer; return; } } public void assignSerializer(JsonSerializer jsonserializer) { if (_serializer != null && _serializer != jsonserializer) { throw new IllegalStateException("Can not override serializer"); } else { _serializer = jsonserializer; return; } } public void assignTypeSerializer(TypeSerializer typeserializer) { _typeSerializer = typeserializer; } public void depositSchemaProperty(JsonObjectFormatVisitor jsonobjectformatvisitor) throws JsonMappingException { label0: { if (jsonobjectformatvisitor != null) { if (!isRequired()) { break label0; } jsonobjectformatvisitor.property(this); } return; } jsonobjectformatvisitor.optionalProperty(this); } public void depositSchemaProperty(ObjectNode objectnode, SerializerProvider serializerprovider) throws JsonMappingException { Object obj = getSerializationType(); JsonSerializer jsonserializer; JsonSerializer jsonserializer1; boolean flag; if (obj == null) { obj = getGenericPropertyType(); } else { obj = ((JavaType) (obj)).getRawClass(); } jsonserializer1 = getSerializer(); jsonserializer = jsonserializer1; if (jsonserializer1 == null) { jsonserializer = serializerprovider.findValueSerializer(getType(), this); } if (!isRequired()) { flag = true; } else { flag = false; } if (jsonserializer instanceof SchemaAware) { serializerprovider = ((SchemaAware)jsonserializer).getSchema(serializerprovider, ((Type) (obj)), flag); } else { serializerprovider = JsonSchema.getDefaultSchemaNode(); } _depositSchemaProperty(objectnode, serializerprovider); } public com.fasterxml.jackson.annotation.JsonFormat.Value findFormatOverrides(AnnotationIntrospector annotationintrospector) { com.fasterxml.jackson.annotation.JsonFormat.Value value = _format; Object obj = value; if (value == null) { if (annotationintrospector == null || _member == null) { annotationintrospector = null; } else { annotationintrospector = annotationintrospector.findFormat(_member); } if (annotationintrospector == null) { obj = NO_FORMAT; } else { obj = annotationintrospector; } _format = ((com.fasterxml.jackson.annotation.JsonFormat.Value) (obj)); obj = annotationintrospector; } annotationintrospector = ((AnnotationIntrospector) (obj)); if (obj == NO_FORMAT) { annotationintrospector = null; } return annotationintrospector; } public final Object get(Object obj) throws Exception { if (_accessorMethod == null) { return _field.get(obj); } else { return _accessorMethod.invoke(obj, new Object[0]); } } public Annotation getAnnotation(Class class1) { if (_member == null) { return null; } else { return _member.getAnnotation(class1); } } public Annotation getContextAnnotation(Class class1) { if (_contextAnnotations == null) { return null; } else { return _contextAnnotations.get(class1); } } public PropertyName getFullName() { return new PropertyName(_name.getValue()); } public Type getGenericPropertyType() { if (_accessorMethod != null) { return _accessorMethod.getGenericReturnType(); } if (_field != null) { return _field.getGenericType(); } else { return null; } } public Object getInternalSetting(Object obj) { if (_internalSettings == null) { return null; } else { return _internalSettings.get(obj); } } public AnnotatedMember getMember() { return _member; } public PropertyMetadata getMetadata() { return _metadata; } public String getName() { return _name.getValue(); } public Class getPropertyType() { if (_accessorMethod != null) { return _accessorMethod.getReturnType(); } else { return _field.getType(); } } public Class getRawSerializationType() { if (_cfgSerializationType == null) { return null; } else { return _cfgSerializationType.getRawClass(); } } public JavaType getSerializationType() { return _cfgSerializationType; } public SerializableString getSerializedName() { return _name; } public JsonSerializer getSerializer() { return _serializer; } public JavaType getType() { return _declaredType; } public TypeSerializer getTypeSerializer() { return _typeSerializer; } public Class[] getViews() { return _includeInViews; } public PropertyName getWrapperName() { return _wrapperName; } public boolean hasNullSerializer() { return _nullSerializer != null; } public boolean hasSerializer() { return _serializer != null; } public boolean isRequired() { return _metadata.isRequired(); } public boolean isUnwrapping() { return false; } public boolean isVirtual() { return false; } public Object removeInternalSetting(Object obj) { Object obj1 = null; if (_internalSettings != null) { obj = _internalSettings.remove(obj); obj1 = obj; if (_internalSettings.size() == 0) { _internalSettings = null; obj1 = obj; } } return obj1; } public BeanPropertyWriter rename(NameTransformer nametransformer) { nametransformer = nametransformer.transform(_name.getValue()); if (nametransformer.equals(_name.toString())) { return this; } else { return _new(PropertyName.construct(nametransformer)); } } public void serializeAsElement(Object obj, JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws Exception { Object obj1; if (_accessorMethod == null) { obj1 = _field.get(obj); } else { obj1 = _accessorMethod.invoke(obj, new Object[0]); } if (obj1 != null) goto _L2; else goto _L1 _L1: if (_nullSerializer == null) goto _L4; else goto _L3 _L3: _nullSerializer.serialize(null, jsongenerator, serializerprovider); _L6: return; _L4: jsongenerator.writeNull(); return; _L2: JsonSerializer jsonserializer1 = _serializer; JsonSerializer jsonserializer = jsonserializer1; if (jsonserializer1 == null) { Class class1 = obj1.getClass(); PropertySerializerMap propertyserializermap = _dynamicSerializers; JsonSerializer jsonserializer2 = propertyserializermap.serializerFor(class1); jsonserializer = jsonserializer2; if (jsonserializer2 == null) { jsonserializer = _findAndAddDynamic(propertyserializermap, class1, serializerprovider); } } if (_suppressableValue != null) { if (MARKER_FOR_EMPTY == _suppressableValue) { if (jsonserializer.isEmpty(serializerprovider, obj1)) { serializeAsPlaceholder(obj, jsongenerator, serializerprovider); return; } } else if (_suppressableValue.equals(obj1)) { serializeAsPlaceholder(obj, jsongenerator, serializerprovider); return; } } if (obj1 != obj || !_handleSelfReference(obj, jsongenerator, serializerprovider, jsonserializer)) { if (_typeSerializer == null) { jsonserializer.serialize(obj1, jsongenerator, serializerprovider); return; } else { jsonserializer.serializeWithType(obj1, jsongenerator, serializerprovider, _typeSerializer); return; } } if (true) goto _L6; else goto _L5 _L5: } public void serializeAsField(Object obj, JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws Exception { Object obj1; if (_accessorMethod == null) { obj1 = _field.get(obj); } else { obj1 = _accessorMethod.invoke(obj, new Object[0]); } if (obj1 != null) goto _L2; else goto _L1 _L1: if (_nullSerializer != null) { jsongenerator.writeFieldName(_name); _nullSerializer.serialize(null, jsongenerator, serializerprovider); } _L4: return; _L2: JsonSerializer jsonserializer; JsonSerializer jsonserializer1 = _serializer; jsonserializer = jsonserializer1; if (jsonserializer1 == null) { Class class1 = obj1.getClass(); PropertySerializerMap propertyserializermap = _dynamicSerializers; JsonSerializer jsonserializer2 = propertyserializermap.serializerFor(class1); jsonserializer = jsonserializer2; if (jsonserializer2 == null) { jsonserializer = _findAndAddDynamic(propertyserializermap, class1, serializerprovider); } } if (_suppressableValue == null) { break; /* Loop/switch isn't completed */ } if (MARKER_FOR_EMPTY != _suppressableValue) { break MISSING_BLOCK_LABEL_193; } if (jsonserializer.isEmpty(serializerprovider, obj1)) goto _L4; else goto _L3 _L3: if (obj1 != obj || !_handleSelfReference(obj, jsongenerator, serializerprovider, jsonserializer)) { jsongenerator.writeFieldName(_name); if (_typeSerializer == null) { jsonserializer.serialize(obj1, jsongenerator, serializerprovider); return; } else { jsonserializer.serializeWithType(obj1, jsongenerator, serializerprovider, _typeSerializer); return; } } continue; /* Loop/switch isn't completed */ if (_suppressableValue.equals(obj1)) { return; } goto _L3 if (true) goto _L4; else goto _L5 _L5: } public void serializeAsOmittedField(Object obj, JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws Exception { if (!jsongenerator.canOmitFields()) { jsongenerator.writeOmittedField(_name.getValue()); } } public void serializeAsPlaceholder(Object obj, JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws Exception { if (_nullSerializer != null) { _nullSerializer.serialize(null, jsongenerator, serializerprovider); return; } else { jsongenerator.writeNull(); return; } } public Object setInternalSetting(Object obj, Object obj1) { if (_internalSettings == null) { _internalSettings = new HashMap(); } return _internalSettings.put(obj, obj1); } public void setNonTrivialBaseType(JavaType javatype) { _nonTrivialBaseType = javatype; } public String toString() { StringBuilder stringbuilder = new StringBuilder(40); stringbuilder.append("property '").append(getName()).append("' ("); if (_accessorMethod != null) { stringbuilder.append("via method ").append(_accessorMethod.getDeclaringClass().getName()).append("#").append(_accessorMethod.getName()); } else if (_field != null) { stringbuilder.append("field \"").append(_field.getDeclaringClass().getName()).append("#").append(_field.getName()); } else { stringbuilder.append("virtual"); } if (_serializer == null) { stringbuilder.append(", no static serializer"); } else { stringbuilder.append((new StringBuilder()).append(", static serializer of type ").append(_serializer.getClass().getName()).toString()); } stringbuilder.append(')'); return stringbuilder.toString(); } public BeanPropertyWriter unwrappingWriter(NameTransformer nametransformer) { return new UnwrappingBeanPropertyWriter(this, nametransformer); } public boolean willSuppressNulls() { return _suppressNulls; } public boolean wouldConflictWithName(PropertyName propertyname) { if (_wrapperName != null) { return _wrapperName.equals(propertyname); } return propertyname.hasSimpleName(_name.getValue()) && !propertyname.hasNamespace(); } static { MARKER_FOR_EMPTY = com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY; } }