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

package io.sentry.config;

import java.util.Collections;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.NotNull;

public interface PropertiesProvider
{
    @Nullable
    String getProperty(@NotNull final String p0);
    
    @NotNull
    Map<String, String> getMap(@NotNull final String p0);
    
    @NotNull
    default List<String> getList(@NotNull final String property) {
        final String value = this.getProperty(property);
        return (value != null) ? Arrays.asList(value.split(",")) : Collections.emptyList();
    }
    
    @Nullable
    default List<String> getListOrNull(@NotNull final String property) {
        final String value = this.getProperty(property);
        return (value != null) ? Arrays.asList(value.split(",")) : null;
    }
    
    @NotNull
    default String getProperty(@NotNull final String property, @NotNull final String defaultValue) {
        final String result = this.getProperty(property);
        return (result != null) ? result : defaultValue;
    }
    
    @Nullable
    default Boolean getBooleanProperty(@NotNull final String property) {
        final String result = this.getProperty(property);
        return (result != null) ? Boolean.valueOf(result) : null;
    }
    
    @Nullable
    default Double getDoubleProperty(@NotNull final String property) {
        final String prop = this.getProperty(property);
        Double result = null;
        if (prop != null) {
            try {
                result = Double.valueOf(prop);
            }
            catch (final NumberFormatException ex) {}
        }
        return result;
    }
    
    @Nullable
    default Long getLongProperty(@NotNull final String property) {
        final String prop = this.getProperty(property);
        Long result = null;
        if (prop != null) {
            try {
                result = Long.valueOf(prop);
            }
            catch (final NumberFormatException ex) {}
        }
        return result;
    }
}
