All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fasterxml.jackson.dataformat.javaprop.JavaPropsMapper Maven / Gradle / Ivy

Go to download

Support for reading and writing content of "Java Properties" style configuration files as if there was implied nesting structure (by default using dots as separators).

There is a newer version: 2.18.2
Show newest version
package com.fasterxml.jackson.dataformat.javaprop;

import java.io.IOException;
import java.util.Properties;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JavaPropsMapper extends ObjectMapper
{
    private static final long serialVersionUID = 1L;

    /*
    /**********************************************************
    /* Life-cycle
    /**********************************************************
     */

    public JavaPropsMapper() {
        this(new JavaPropsFactory());
    }

    public JavaPropsMapper(JavaPropsFactory f) {
        super(f);
    }

    protected JavaPropsMapper(JavaPropsMapper src) {
        super(src);
    }
    
    @Override
    public JavaPropsMapper copy()
    {
        _checkInvalidCopy(JavaPropsMapper.class);
        return new JavaPropsMapper(this);
    }

    @Override
    public Version version() {
        return PackageVersion.VERSION;
    }

    @Override
    public JavaPropsFactory getFactory() {
        return (JavaPropsFactory) _jsonFactory;
    }

    /*
    /**********************************************************
    /* Extended read methods
    /**********************************************************
     */

    /**
     * Convenience method which uses given `Properties` as the source
     * as if they had been read from an external source, processes
     * them (splits paths etc), and then binds as given result
     * value.
     *

* Note that this is NOT identical to calling {@link #convertValue(Object, Class)}; * rather, it would be similar to writing `Properties` out into a File, * then calling `readValue()` on this mapper to bind contents. * * @since 2.9 */ @SuppressWarnings("resource") public T readPropertiesAs(Properties props, JavaPropsSchema schema, Class valueType) throws IOException { JsonParser p = getFactory().createParser(props); p.setSchema(schema); return (T) readValue(p, valueType); } /** * Convenience method which uses given `Properties` as the source * as if they had been read from an external source, processes * them (splits paths etc), and then binds as given result * value. *

* Note that this is NOT identical to calling {@link #convertValue(Object, Class)}; * rather, it would be similar to writing `Properties` out into a File, * then calling `readValue()` on this mapper to bind contents. * * @since 2.9 */ @SuppressWarnings({ "resource", "unchecked" }) public T readPropertiesAs(Properties props, JavaPropsSchema schema, JavaType valueType) throws IOException { JsonParser p = getFactory().createParser(props); p.setSchema(schema); return (T) readValue(p, valueType); } /** * Convenience method, functionally equivalent to: *

     *   readPropertiesAs(props, JavaPropsSchema.emptySchema(), valueType);
     *
* * @since 2.9 */ public T readPropertiesAs(Properties props, Class valueType) throws IOException { return readPropertiesAs(props, JavaPropsSchema.emptySchema(), valueType); } /** * Convenience method, functionally equivalent to: *
     *   readPropertiesAs(props, JavaPropsSchema.emptySchema(), valueType);
     *
* * @since 2.9 */ public T readPropertiesAs(Properties props, JavaType valueType) throws IOException { return readPropertiesAs(props, JavaPropsSchema.emptySchema(), valueType); } /** * Convenience method, functionally equivalent to: *
     *   readPropertiesAs(System.getProperties(), schema, valueType);
     *
* * @since 2.9 */ public T readSystemPropertiesAs(JavaPropsSchema schema, Class valueType) throws IOException { return readPropertiesAs(System.getProperties(), schema, valueType); } /** * Convenience method, functionally equivalent to: *
     *   readPropertiesAs(System.getProperties(), schema, valueType);
     *
* * @since 2.9 */ public T readSystemPropertiesAs(JavaPropsSchema schema, JavaType valueType) throws IOException { return readPropertiesAs(System.getProperties(), schema, valueType); } /** * Convenience method, functionally equivalent to: *
     *   readPropertiesAs(convertMapToProperties(System.getenv()), schema, valueType);
     *
* * @since 2.9 */ public T readEnvVariablesAs(JavaPropsSchema schema, Class valueType) throws IOException { return readPropertiesAs(_env(), schema, valueType); } /** * Convenience method, functionally equivalent to: *
     *   readPropertiesAs(convertMapToProperties(System.getenv()), schema, valueType);
     *
* * @since 2.9 */ public T readEnvVariablesAs(JavaPropsSchema schema, JavaType valueType) throws IOException { return readPropertiesAs(_env(), schema, valueType); } protected Properties _env() { Properties props = new Properties(); props.putAll(System.getenv()); return props; } /* /********************************************************** /* Extended write methods /********************************************************** */ /** * Convenience method that "writes" given `value` as properties * in given {@link Properties} object. * * @since 2.9 */ public void writeValue(Properties targetProps, Object value) throws IOException { if (targetProps == null) { throw new IllegalArgumentException("Can not pass null Properties as target"); } JavaPropsGenerator g = ((JavaPropsFactory) getFactory()) .createGenerator(targetProps); writeValue(g, value); g.close(); } /** * Convenience method that "writes" given `value` as properties * in given {@link Properties} object. * * @since 2.9 */ public void writeValue(Properties targetProps, Object value, JavaPropsSchema schema) throws IOException { if (targetProps == null) { throw new IllegalArgumentException("Can not pass null Properties as target"); } JavaPropsGenerator g = ((JavaPropsFactory) getFactory()) .createGenerator(targetProps); if (schema != null) { g.setSchema(schema); } writeValue(g, value); g.close(); } /** * Convenience method that serializes given value but so that results are * stored in a newly constructed {@link Properties}. Functionally equivalent * to serializing in a File and reading contents into {@link Properties}. * * @since 2.9 */ public Properties writeValueAsProperties(Object value) throws IOException { Properties props = new Properties(); writeValue(props, value); return props; } /** * Convenience method that serializes given value but so that results are * stored in given {@link Properties} instance. * * @since 2.9 */ public Properties writeValueAsProperties(Object value, JavaPropsSchema schema) throws IOException { Properties props = new Properties(); writeValue(props, value, schema); return props; } /* /********************************************************** /* Schema support methods? /********************************************************** */ // do we have any actually? }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy