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

org.dominokit.jacksonapt.deser.map.BaseMapJsonDeserializer Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2013 Nicolas Morel
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.dominokit.jacksonapt.deser.map;

import org.dominokit.jacksonapt.JsonDeserializationContext;
import org.dominokit.jacksonapt.JsonDeserializer;
import org.dominokit.jacksonapt.JsonDeserializerParameters;
import org.dominokit.jacksonapt.deser.map.key.KeyDeserializer;
import org.dominokit.jacksonapt.stream.JsonReader;
import org.dominokit.jacksonapt.stream.JsonToken;

import java.util.Map;

/**
 * Base {@link org.dominokit.jacksonapt.JsonDeserializer} implementation for {@link java.util.Map}.
 *
 * @param  Type of the {@link java.util.Map}
 * @param  Type of the keys inside the {@link java.util.Map}
 * @param  Type of the values inside the {@link java.util.Map}
 * @author Nicolas Morel
 * @version $Id: $
 */
public abstract class BaseMapJsonDeserializer, K, V> extends JsonDeserializer {

    /**
     * {@link KeyDeserializer} used to deserialize the keys.
     */
    protected final KeyDeserializer keyDeserializer;

    /**
     * {@link JsonDeserializer} used to deserialize the values.
     */
    protected final JsonDeserializer valueDeserializer;

    /**
     * 

Constructor for BaseMapJsonDeserializer.

* * @param keyDeserializer {@link org.dominokit.jacksonapt.deser.map.key.KeyDeserializer} used to deserialize the keys. * @param valueDeserializer {@link org.dominokit.jacksonapt.JsonDeserializer} used to deserialize the values. */ protected BaseMapJsonDeserializer(KeyDeserializer keyDeserializer, JsonDeserializer valueDeserializer) { if (null == keyDeserializer) { throw new IllegalArgumentException("keyDeserializer cannot be null"); } if (null == valueDeserializer) { throw new IllegalArgumentException("valueDeserializer cannot be null"); } this.keyDeserializer = keyDeserializer; this.valueDeserializer = valueDeserializer; } /** {@inheritDoc} */ @Override public M doDeserialize(JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params) { M result = newMap(); reader.beginObject(); while (JsonToken.END_OBJECT != reader.peek()) { String name = reader.nextName(); K key = keyDeserializer.deserialize(name, ctx); V value = valueDeserializer.deserialize(reader, ctx, params); result.put(key, value); } reader.endObject(); return result; } /** * Instantiates a new map for deserialization process. * * @return the new map */ protected abstract M newMap(); /** {@inheritDoc} */ @Override public void setBackReference(String referenceName, Object reference, M value, JsonDeserializationContext ctx) { if (null != value) { for (V val : value.values()) { valueDeserializer.setBackReference(referenceName, reference, val, ctx); } } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy