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

org.thirdteeth.immutables.pcollections.encodings.PCollectionsPMapEncodings Maven / Gradle / Ivy

package org.thirdteeth.immutables.pcollections.encodings;

import org.immutables.encode.Encoding;
import org.pcollections.HashTreePMap;
import org.pcollections.PMap;

import java.util.Map;

@Encoding
class PCollectionsPMapEncodings {
    // Using a linked variant provides more predictable semantics for serialization
    @Encoding.Impl
    private PMap field = HashTreePMap.empty();

    PCollectionsPMapEncodings() {

    }

    @Encoding.Builder
    static final class Builder {
        private PMap pmap = HashTreePMap.empty();

        Builder() {

        }

        @Encoding.Naming(standard = Encoding.StandardNaming.PUT)
        @Encoding.Init
        void put(final K key, final V value) {
            this.pmap = this.pmap.plus(key, value);
        }

        @Encoding.Init
        @Encoding.Copy
        void set(final PMap elements) {
            this.pmap = elements;
        }

        @Encoding.Naming(value = "setJavaMap*")
        @Encoding.Init
        void setJavaMap(final Map in_map) {
            this.pmap = HashTreePMap.from(in_map);
        }

        @Encoding.Naming(standard = Encoding.StandardNaming.PUT_ALL)
        @Encoding.Init
        void putAll(final Map map) {
            this.pmap = this.pmap.plusAll(map);
        }

        @Encoding.Build
        PMap build()
        {
            return this.pmap;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy