summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/EnigmaServices.java
blob: 86507bcac754d489ab401afb02007da12cd9c69b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package cuchaz.enigma;

import com.google.common.collect.ImmutableMap;
import cuchaz.enigma.api.service.EnigmaService;
import cuchaz.enigma.api.service.EnigmaServiceType;

import java.util.Optional;

public final class EnigmaServices {
	private final ImmutableMap<EnigmaServiceType<?>, EnigmaService> services;

	EnigmaServices(ImmutableMap<EnigmaServiceType<?>, EnigmaService> services) {
		this.services = services;
	}

	@SuppressWarnings("unchecked")
	public <T extends EnigmaService> Optional<T> get(EnigmaServiceType<T> type) {
		EnigmaService service = services.get(type);
		return Optional.ofNullable((T) service);
	}
}