// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.codec.lookup;

import javax.annotation.Nonnull;
import java.util.Collections;
import com.hypixel.hytale.codec.Codec;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.Map;

public class MapProvidedMapCodec<V, P> extends AMapProvidedMapCodec<String, V, P, Map<String, V>>
{
    private final Supplier<Map<String, V>> supplier;
    
    public MapProvidedMapCodec(final Map<String, P> codecProvider, final Function<P, Codec<V>> mapper, final Supplier<Map<String, V>> supplier) {
        this(codecProvider, mapper, supplier, true);
    }
    
    public MapProvidedMapCodec(final Map<String, P> codecProvider, final Function<P, Codec<V>> mapper, final Supplier<Map<String, V>> supplier, final boolean unmodifiable) {
        super(codecProvider, mapper, unmodifiable);
        this.supplier = supplier;
    }
    
    @Override
    public Map<String, V> createMap() {
        return this.supplier.get();
    }
    
    @Override
    protected String getIdForKey(final String key) {
        return key;
    }
    
    @Override
    protected String getKeyForId(final String id) {
        return id;
    }
    
    @Nonnull
    @Override
    protected Map<String, V> emptyMap() {
        return Collections.emptyMap();
    }
    
    @Nonnull
    @Override
    protected Map<String, V> unmodifiableMap(@Nonnull final Map<String, V> m) {
        return Collections.unmodifiableMap((Map<? extends String, ? extends V>)m);
    }
}
