// 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.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.SerializationFeature; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonArrayFormatVisitor; import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; 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.ContainerSerializer; import com.fasterxml.jackson.databind.ser.ContextualSerializer; import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap; import com.fasterxml.jackson.databind.type.ArrayType; import com.fasterxml.jackson.databind.type.TypeFactory; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Type; // Referenced classes of package com.fasterxml.jackson.databind.ser.std: // ArraySerializerBase public class ObjectArraySerializer extends ArraySerializerBase implements ContextualSerializer { protected PropertySerializerMap _dynamicSerializers; protected JsonSerializer _elementSerializer; protected final JavaType _elementType; protected final boolean _staticTyping; protected final TypeSerializer _valueTypeSerializer; public ObjectArraySerializer(JavaType javatype, boolean flag, TypeSerializer typeserializer, JsonSerializer jsonserializer) { super([Ljava/lang/Object;); _elementType = javatype; _staticTyping = flag; _valueTypeSerializer = typeserializer; _dynamicSerializers = PropertySerializerMap.emptyForProperties(); _elementSerializer = jsonserializer; } public ObjectArraySerializer(ObjectArraySerializer objectarrayserializer, BeanProperty beanproperty, TypeSerializer typeserializer, JsonSerializer jsonserializer, Boolean boolean1) { super(objectarrayserializer, beanproperty, boolean1); _elementType = objectarrayserializer._elementType; _valueTypeSerializer = typeserializer; _staticTyping = objectarrayserializer._staticTyping; _dynamicSerializers = objectarrayserializer._dynamicSerializers; _elementSerializer = jsonserializer; } public ObjectArraySerializer(ObjectArraySerializer objectarrayserializer, TypeSerializer typeserializer) { super(objectarrayserializer); _elementType = objectarrayserializer._elementType; _valueTypeSerializer = typeserializer; _staticTyping = objectarrayserializer._staticTyping; _dynamicSerializers = objectarrayserializer._dynamicSerializers; _elementSerializer = objectarrayserializer._elementSerializer; } protected final JsonSerializer _findAndAddDynamic(PropertySerializerMap propertyserializermap, JavaType javatype, SerializerProvider serializerprovider) throws JsonMappingException { javatype = propertyserializermap.findAndAddSecondarySerializer(javatype, serializerprovider, _property); if (propertyserializermap != ((com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.SerializerAndMapResult) (javatype)).map) { _dynamicSerializers = ((com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.SerializerAndMapResult) (javatype)).map; } return ((com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.SerializerAndMapResult) (javatype)).serializer; } protected final JsonSerializer _findAndAddDynamic(PropertySerializerMap propertyserializermap, Class class1, SerializerProvider serializerprovider) throws JsonMappingException { class1 = propertyserializermap.findAndAddSecondarySerializer(class1, serializerprovider, _property); 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; } public JsonSerializer _withResolved(BeanProperty beanproperty, Boolean boolean1) { return new ObjectArraySerializer(this, beanproperty, _valueTypeSerializer, _elementSerializer, boolean1); } public ContainerSerializer _withValueTypeSerializer(TypeSerializer typeserializer) { return new ObjectArraySerializer(_elementType, _staticTyping, typeserializer, _elementSerializer); } public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper jsonformatvisitorwrapper, JavaType javatype) throws JsonMappingException { JsonArrayFormatVisitor jsonarrayformatvisitor = jsonformatvisitorwrapper.expectArrayFormat(javatype); if (jsonarrayformatvisitor != null) { JavaType javatype1 = jsonformatvisitorwrapper.getProvider().getTypeFactory().moreSpecificType(_elementType, javatype.getContentType()); if (javatype1 == null) { throw new JsonMappingException("Could not resolve type"); } JsonSerializer jsonserializer = _elementSerializer; javatype = jsonserializer; if (jsonserializer == null) { javatype = jsonformatvisitorwrapper.getProvider().findValueSerializer(javatype1, _property); } jsonarrayformatvisitor.itemsFormat(javatype, javatype1); } } public JsonSerializer createContextual(SerializerProvider serializerprovider, BeanProperty beanproperty) throws JsonMappingException { Object obj1; TypeSerializer typeserializer; Object obj2; Object obj = _valueTypeSerializer; typeserializer = ((TypeSerializer) (obj)); if (obj != null) { typeserializer = ((TypeSerializer) (obj)).forProperty(beanproperty); } obj1 = null; com.fasterxml.jackson.annotation.JsonFormat.Value value = null; Object obj3 = null; obj2 = obj3; if (beanproperty != null) { obj2 = beanproperty.getMember(); obj1 = serializerprovider.getAnnotationIntrospector(); obj = value; if (obj2 != null) { Object obj4 = ((AnnotationIntrospector) (obj1)).findContentSerializer(((com.fasterxml.jackson.databind.introspect.Annotated) (obj2))); obj = value; if (obj4 != null) { obj = serializerprovider.serializerInstance(((com.fasterxml.jackson.databind.introspect.Annotated) (obj2)), obj4); } } value = beanproperty.findFormatOverrides(((AnnotationIntrospector) (obj1))); obj1 = obj; obj2 = obj3; if (value != null) { obj2 = value.getFeature(com.fasterxml.jackson.annotation.JsonFormat.Feature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED); obj1 = obj; } } obj = obj1; if (obj1 == null) { obj = _elementSerializer; } obj1 = findConvertingContentSerializer(serializerprovider, beanproperty, ((JsonSerializer) (obj))); if (obj1 != null) goto _L2; else goto _L1 _L1: JsonSerializer jsonserializer; label0: { jsonserializer = ((JsonSerializer) (obj1)); if (_elementType == null) { break label0; } if (!_staticTyping) { jsonserializer = ((JsonSerializer) (obj1)); if (!hasContentTypeAnnotation(serializerprovider, beanproperty)) { break label0; } } jsonserializer = serializerprovider.findValueSerializer(_elementType, beanproperty); } _L4: return withResolved(beanproperty, typeserializer, jsonserializer, ((Boolean) (obj2))); _L2: jsonserializer = serializerprovider.handleSecondaryContextualization(((JsonSerializer) (obj1)), beanproperty); if (true) goto _L4; else goto _L3 _L3: } public JsonSerializer getContentSerializer() { return _elementSerializer; } public JavaType getContentType() { return _elementType; } public JsonNode getSchema(SerializerProvider serializerprovider, Type type) throws JsonMappingException { ObjectNode objectnode; label0: { objectnode = createSchemaNode("array", true); if (type != null) { type = serializerprovider.constructType(type); if (type.isArrayType()) { type = ((ArrayType)type).getContentType().getRawClass(); if (type != java/lang/Object) { break label0; } objectnode.set("items", JsonSchema.getDefaultSchemaNode()); } } return objectnode; } type = serializerprovider.findValueSerializer(type, _property); if (type instanceof SchemaAware) { serializerprovider = ((SchemaAware)type).getSchema(serializerprovider, null); } else { serializerprovider = JsonSchema.getDefaultSchemaNode(); } objectnode.set("items", serializerprovider); return objectnode; } public volatile boolean hasSingleElement(Object obj) { return hasSingleElement((Object[])obj); } public boolean hasSingleElement(Object aobj[]) { return aobj.length == 1; } public volatile boolean isEmpty(SerializerProvider serializerprovider, Object obj) { return isEmpty(serializerprovider, (Object[])obj); } public boolean isEmpty(SerializerProvider serializerprovider, Object aobj[]) { return aobj == null || aobj.length == 0; } public volatile void serialize(Object obj, JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws IOException { serialize((Object[])obj, jsongenerator, serializerprovider); } public final void serialize(Object aobj[], JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws IOException { int i = aobj.length; if (i == 1 && (_unwrapSingle == null && serializerprovider.isEnabled(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED) || _unwrapSingle == Boolean.TRUE)) { serializeContents(aobj, jsongenerator, serializerprovider); return; } else { jsongenerator.writeStartArray(i); serializeContents(aobj, jsongenerator, serializerprovider); jsongenerator.writeEndArray(); return; } } public volatile void serializeContents(Object obj, JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws IOException { serializeContents((Object[])obj, jsongenerator, serializerprovider); } public void serializeContents(Object aobj[], JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws IOException { int k = aobj.length; if (k != 0) goto _L2; else goto _L1 _L1: return; _L2: int i; if (_elementSerializer != null) { serializeContentsUsing(aobj, jsongenerator, serializerprovider, _elementSerializer); return; } if (_valueTypeSerializer != null) { serializeTypedContents(aobj, jsongenerator, serializerprovider); return; } int j = 0; i = 0; Object obj = null; JsonSerializer jsonserializer; Object obj1; JsonSerializer jsonserializer1; PropertySerializerMap propertyserializermap; Class class1; try { propertyserializermap = _dynamicSerializers; } // Misplaced declaration of an exception variable catch (Object aobj[]) { throw aobj; } // Misplaced declaration of an exception variable catch (Object aobj[]) { for (; (aobj instanceof InvocationTargetException) && ((Throwable) (aobj)).getCause() != null; aobj = ((Throwable) (aobj)).getCause()) { } if (aobj instanceof Error) { throw (Error)aobj; } else { throw JsonMappingException.wrapWithPath(((Throwable) (aobj)), obj, j); } } _L11: if (i >= k) { continue; /* Loop/switch isn't completed */ } obj1 = aobj[i]; if (obj1 != null) goto _L4; else goto _L3 _L3: obj = obj1; j = i; serializerprovider.defaultSerializeNull(jsongenerator); goto _L5 _L4: obj = obj1; j = i; class1 = obj1.getClass(); obj = obj1; j = i; jsonserializer1 = propertyserializermap.serializerFor(class1); jsonserializer = jsonserializer1; if (jsonserializer1 != null) goto _L7; else goto _L6 _L6: obj = obj1; j = i; if (!_elementType.hasGenericTypes()) goto _L9; else goto _L8 _L8: obj = obj1; j = i; jsonserializer = _findAndAddDynamic(propertyserializermap, serializerprovider.constructSpecializedType(_elementType, class1), serializerprovider); _L7: obj = obj1; j = i; jsonserializer.serialize(obj1, jsongenerator, serializerprovider); break; /* Loop/switch isn't completed */ _L9: obj = obj1; j = i; jsonserializer = _findAndAddDynamic(propertyserializermap, class1, serializerprovider); if (true) goto _L7; else goto _L5 _L5: i++; if (true) goto _L11; else goto _L10 _L10: if (true) goto _L1; else goto _L12 _L12: } public void serializeContentsUsing(Object aobj[], JsonGenerator jsongenerator, SerializerProvider serializerprovider, JsonSerializer jsonserializer) throws IOException { TypeSerializer typeserializer; int i; int j; j = aobj.length; typeserializer = _valueTypeSerializer; i = 0; _L2: if (i >= j) { break MISSING_BLOCK_LABEL_117; } Object obj = aobj[i]; if (obj == null) { try { serializerprovider.defaultSerializeNull(jsongenerator); } // Misplaced declaration of an exception variable catch (Object aobj[]) { throw aobj; } // Misplaced declaration of an exception variable catch (Object aobj[]) { for (; (aobj instanceof InvocationTargetException) && ((Throwable) (aobj)).getCause() != null; aobj = ((Throwable) (aobj)).getCause()) { } if (aobj instanceof Error) { throw (Error)aobj; } else { throw JsonMappingException.wrapWithPath(((Throwable) (aobj)), obj, i); } } break MISSING_BLOCK_LABEL_118; } if (typeserializer != null) { break MISSING_BLOCK_LABEL_59; } jsonserializer.serialize(obj, jsongenerator, serializerprovider); break MISSING_BLOCK_LABEL_118; jsonserializer.serializeWithType(obj, jsongenerator, serializerprovider, typeserializer); break MISSING_BLOCK_LABEL_118; return; i++; if (true) goto _L2; else goto _L1 _L1: } public void serializeTypedContents(Object aobj[], JsonGenerator jsongenerator, SerializerProvider serializerprovider) throws IOException { int i; int k = aobj.length; TypeSerializer typeserializer = _valueTypeSerializer; int j = 0; i = 0; Object obj = null; JsonSerializer jsonserializer; Object obj1; JsonSerializer jsonserializer1; PropertySerializerMap propertyserializermap; Class class1; try { propertyserializermap = _dynamicSerializers; } // Misplaced declaration of an exception variable catch (Object aobj[]) { throw aobj; } // Misplaced declaration of an exception variable catch (Object aobj[]) { for (; (aobj instanceof InvocationTargetException) && ((Throwable) (aobj)).getCause() != null; aobj = ((Throwable) (aobj)).getCause()) { } if (aobj instanceof Error) { throw (Error)aobj; } else { throw JsonMappingException.wrapWithPath(((Throwable) (aobj)), obj, j); } } _L2: if (i >= k) { break MISSING_BLOCK_LABEL_188; } obj1 = aobj[i]; if (obj1 != null) { break MISSING_BLOCK_LABEL_59; } obj = obj1; j = i; serializerprovider.defaultSerializeNull(jsongenerator); break MISSING_BLOCK_LABEL_189; obj = obj1; j = i; class1 = obj1.getClass(); obj = obj1; j = i; jsonserializer1 = propertyserializermap.serializerFor(class1); jsonserializer = jsonserializer1; if (jsonserializer1 != null) { break MISSING_BLOCK_LABEL_119; } obj = obj1; j = i; jsonserializer = _findAndAddDynamic(propertyserializermap, class1, serializerprovider); obj = obj1; j = i; jsonserializer.serializeWithType(obj1, jsongenerator, serializerprovider, typeserializer); break MISSING_BLOCK_LABEL_189; return; i++; if (true) goto _L2; else goto _L1 _L1: } public ObjectArraySerializer withResolved(BeanProperty beanproperty, TypeSerializer typeserializer, JsonSerializer jsonserializer, Boolean boolean1) { if (_property == beanproperty && jsonserializer == _elementSerializer && _valueTypeSerializer == typeserializer && _unwrapSingle == boolean1) { return this; } else { return new ObjectArraySerializer(this, beanproperty, typeserializer, jsonserializer, boolean1); } } }