/* * ServerListPlus - https://git.io/slp * Copyright (C) 2014 Minecrell (https://github.com/Minecrell) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package net.minecrell.serverlistplus.core.config.storage; import com.google.common.base.Preconditions; import com.google.common.collect.ClassToInstanceMap; public class FallbackInstanceStorage<B> extends ClassToInstanceStorage<B> { private final InstanceStorage<B> defaults; protected FallbackInstanceStorage(ClassToInstanceMap<B> instances, InstanceStorage<B> defaults) { super(instances); this.defaults = Preconditions.checkNotNull(defaults, "defaults"); } @Override public <T extends B> T get(Class<T> type) { T result = super.get(type); return result != null ? result : defaults.get(type); } }