// 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.std; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.SerializableString; import com.fasterxml.jackson.databind.AnnotationIntrospector; import com.fasterxml.jackson.databind.BeanDescription; 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.SerializationConfig; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonIntegerFormatVisitor; import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonStringFormatVisitor; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.ser.ContextualSerializer; import com.fasterxml.jackson.databind.util.EnumValues; import java.io.IOException; import java.lang.reflect.Type; import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; // Referenced classes of package com.fasterxml.jackson.databind.ser.std: // StdScalarSerializer public class EnumSerializer extends StdScalarSerializer implements ContextualSerializer { private static final long serialVersionUID = 1L; protected final Boolean _serializeAsIndex; protected final EnumValues _values; public EnumSerializer(EnumValues enumvalues) { this(enumvalues, null); } public EnumSerializer(EnumValues enumvalues, Boolean boolean1) { super(enumvalues.getEnumClass(), false); _values = enumvalues; _serializeAsIndex = boolean1; } protected static Boolean _isShapeWrittenUsingIndex(Class class1, com.fasterxml.jackson.annotation.JsonFormat.Value value, boolean flag) { if (value == null) { value = null; } else { value = value.getShape(); } while (value == null || value == com.fasterxml.jackson.annotation.JsonFormat.Shape.ANY || value == com.fasterxml.jackson.annotation.JsonFormat.Shape.SCALAR) { return null; } if (value == com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING) { return Boolean.FALSE; } if (value.isNumeric() || value == com.fasterxml.jackson.annotation.JsonFormat.Shape.ARRAY) { return Boolean.TRUE; } value = (new StringBuilder()).append("Unsupported serialization shape (").append(value).append(") for Enum ").append(class1.getName()).append(", not supported as "); if (flag) { class1 = "class"; } else { class1 = "property"; } throw new IllegalArgumentException(value.append(class1).append(" annotation").toString()); } public static EnumSerializer construct(Class class1, SerializationConfig serializationconfig, BeanDescription beandescription, com.fasterxml.jackson.annotation.JsonFormat.Value value) { return new EnumSerializer(EnumValues.constructFromName(serializationconfig, class1), _isShapeWrittenUsingIndex(class1, value, true)); } protected final boolean _serializeAsIndex(SerializerProvider serializerprovider) { if (_serializeAsIndex != null) { return _serializeAsIndex.booleanValue(); } else { return serializerprovider.isEnabled(SerializationFeature.WRITE_ENUMS_USING_INDEX); } } public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper jsonformatvisitorwrapper, JavaType javatype) throws JsonMappingException { SerializerProvider serializerprovider = jsonformatvisitorwrapper.getProvider(); if (_serializeAsIndex(serializerprovider)) { jsonformatvisitorwrapper = jsonformatvisitorwrapper.expectIntegerFormat(javatype); if (jsonformatvisitorwrapper != null) { jsonformatvisitorwrapper.numberType(com.fasterxml.jackson.core.JsonParser.NumberType.INT); } } else { jsonformatvisitorwrapper = jsonformatvisitorwrapper.expectStringFormat(javatype); if (jsonformatvisitorwrapper != null) { javatype = new LinkedHashSet(); if (serializerprovider != null && serializerprovider.isEnabled(SerializationFeature.WRITE_ENUMS_USING_TO_STRING)) { for (Iterator iterator = _values.enums().iterator(); iterator.hasNext(); javatype.add(((Enum)iterator.next()).toString())) { } } else { for (Iterator iterator1 = _values.values().iterator(); iterator1.hasNext(); javatype.add(((SerializableString)iterator1.next()).getValue())) { } } jsonformatvisitorwrapper.enumTypes(javatype); return; } } } public JsonSerializer createContextual(SerializerProvider serializerprovider, BeanProperty beanproperty) throws JsonMappingException { EnumSerializer enumserializer = this; if (beanproperty != null) { serializerprovider = serializerprovider.getAnnotationIntrospector().findFormat(beanproperty.getMember()); enumserializer = this; if (serializerprovider != null) { serializerprovider = _isShapeWrittenUsingIndex(beanproperty.getType().getRawClass(), serializerprovider, false); enumserializer = this; if (serializerprovider != _serializeAsIndex) { enumserializer = new EnumSerializer(_values, serializerprovider); } } } return enumserializer; } public EnumValues getEnumValues() { return _values; } public JsonNode getSchema(SerializerProvider serializerprovider, Type type) { if (!_serializeAsIndex(serializerprovider)) goto _L2; else goto _L1 _L1: ObjectNode objectnode = createSchemaNode("integer", true); _L4: return objectnode; _L2: ObjectNode objectnode1 = createSchemaNode("string", true); objectnode = objectnode1; if (type == null) { continue; } objectnode = objectnode1; if (!serializerprovider.constructType(type).isEnumType()) { continue; } serializerprovider = objectnode1.putArray("enum"); type = _values.values().iterator(); do { objectnode = objectnode1; if (!type.hasNext()) { continue; } serializerprovider.add(((SerializableString)type.next()).getValue()); } while (true); if (true) goto _L4; else goto _L3 _L3: } public final void serialize(Enum enum, JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws IOException { if (_serializeAsIndex(serializerprovider)) { jsongenerator.writeNumber(enum.ordinal()); return; } if (serializerprovider.isEnabled(SerializationFeature.WRITE_ENUMS_USING_TO_STRING)) { jsongenerator.writeString(enum.toString()); return; } else { jsongenerator.writeString(_values.serializedValueFor(enum)); return; } } public volatile void serialize(Object obj, JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws IOException { serialize((Enum)obj, jsongenerator, serializerprovider); } }