/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.toolkit.core.internal; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; import de.rcenvironment.toolkit.core.api.ImmutableServiceRegistry; /** * Simple {@link ImmutableServiceRegistry} implementation. The {@link Map} provided to the constructor is copied internally, so it can be * safely modified or discarded after the constructor finishes. * * @author Robert Mischke */ public class ImmutableServiceRegistryImpl implements ImmutableServiceRegistry { private final Map<Class<?>, Object> services; /** * @param serviceSourceMap a map of services; this map is copied internally, so it can be safely modified or discarded after the * constructor finishes. */ public ImmutableServiceRegistryImpl(Map<Class<?>, Object> serviceSourceMap) { services = Collections.unmodifiableMap(new HashMap<>(serviceSourceMap)); } @Override public Collection<Class<?>> listServices() { return services.keySet(); } @Override @SuppressWarnings("unchecked") public <T> T getService(Class<T> apiClass) { return (T) services.get(apiClass); } }