Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.fasterxml.jackson.databind.ser.impl;
  
  
  
Standard serializer used for String[] values.
 
 public class StringArraySerializer
     extends ArraySerializerBase<String[]>
     implements ContextualSerializer
 {
     /* Note: not clean in general, but we are betting against
      * anyone re-defining properties of String.class here...
      */
     private final static JavaType VALUE_TYPE = TypeFactory.defaultInstance().uncheckedSimpleType(String.class);
 
     public final static StringArraySerializer instance = new StringArraySerializer();
    
    
Value serializer to use, if it's not the standard one (if it is we can optimize serialization a lot)
 
     protected final JsonSerializer<Object_elementSerializer;
 
     /*
     /**********************************************************
     /* Life-cycle
     /**********************************************************
      */
     
     protected StringArraySerializer() {
         super(String[].classnull);
          = null;
     }
 
     @SuppressWarnings("unchecked")
             BeanProperty propJsonSerializer<?> ser) {
         super(srcprop);
          = (JsonSerializer<Object>) ser;
     }
    
    
Strings never add type info; hence, even if type serializer is suggested, we'll ignore it...
 
     @Override
         return this;
     }
 
     /*
     /**********************************************************
     /* Post-processing
     /**********************************************************
      */
     
 //  @Override
     public JsonSerializer<?> createContextual(SerializerProvider provider,
             BeanProperty property)
         throws JsonMappingException
     {
         /* 29-Sep-2012, tatu: Actually, we need to do much more contextual
          *    checking here since we finally know for sure the property,
          *    and it may have overrides
          */
         JsonSerializer<?> ser = null;
         // First: if we have a property, may have property-annotation overrides
         if (property != null) {
             AnnotatedMember m = property.getMember();
             if (m != null) {
                 Object serDef = provider.getAnnotationIntrospector().findContentSerializer(m);
                 if (serDef != null) {
                     ser = provider.serializerInstance(mserDef);
                 }
             }
         }
         if (ser == null) {
             ser = ;
         }
         if (ser == null) {
             ser = provider.findValueSerializer(String.classproperty);
        } else if (ser instanceof ContextualSerializer) {
            ser = ((ContextualSerializerser).createContextual(providerproperty);
        }
        // Optimization: default serializer just writes String, so we can avoid a call:
        if (isDefaultSerializer(ser)) {
            ser = null;
        }
        // note: will never have TypeSerializer, because Strings are "natural" type
        if (ser == ) {
            return this;
        }
        return new StringArraySerializer(thispropertyser);
    }
    /*
    /**********************************************************
    /* Simple accessors
    /**********************************************************
     */
    @Override
    public JavaType getContentType() {
        return ;
    }
    @Override
    public JsonSerializer<?> getContentSerializer() {
        return ;
    }
    
    @Override
    public boolean isEmpty(String[] value) {
        return (value == null) || (value.length == 0);
    }
    @Override
    public boolean hasSingleElement(String[] value) {
        return (value.length == 1);
    }
    
    /*
    /**********************************************************
    /* Actual serialization
    /**********************************************************
     */
    
    @Override
    public void serializeContents(String[] valueJsonGenerator jgenSerializerProvider provider)
        throws IOExceptionJsonGenerationException
    {
        final int len = value.length;
        if (len == 0) {
            return;
        }
        if ( != null) {
            serializeContentsSlow(valuejgenprovider);
            return;
        }
        /* 08-Dec-2008, tatus: If we want this to be fully overridable
         *  (for example, to support String cleanup during writing
         *  or something), we should find serializer  by provider.
         *  But for now, that seems like an overkill: and caller can
         *  add custom serializer if that is needed as well.
         * (ditto for null values)
         */
        //JsonSerializer<String> ser = (JsonSerializer<String>)provider.findValueSerializer(String.class);
        for (int i = 0; i < len; ++i) {
            String str = value[i];
            if (str == null) {
                jgen.writeNull();
            } else {
                //ser.serialize(value[i], jgen, provider);
                jgen.writeString(value[i]);
            }
        }
    }
    private void serializeContentsSlow(String[] valueJsonGenerator jgenSerializerProvider provider,
            JsonSerializer<Objectser)
        throws IOExceptionJsonGenerationException
    {
        for (int i = 0, len = value.lengthi < len; ++i) {
            String str = value[i];
            if (str == null) {
                provider.defaultSerializeNull(jgen);
            } else {
                ser.serialize(value[i], jgenprovider);
            }
        }
    }
    @Override
    public JsonNode getSchema(SerializerProvider providerType typeHint)
    {
        ObjectNode o = createSchemaNode("array"true);
        o.put("items"createSchemaNode("string"));
        return o;
    }
    
    @Override
    public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitorJavaType typeHint)
    {
    }
New to GrepCode? Check out our FAQ X