From b5fccb3fd48fc04b12b111f795d4c422cfa42fba Mon Sep 17 00:00:00 2001 From: gered Date: Sun, 15 Dec 2013 13:09:29 -0500 Subject: [PATCH] add Service.register overload allowing to register an object by one of it's sub/super types instead --- src/main/java/ca/blarg/gdx/Services.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/ca/blarg/gdx/Services.java b/src/main/java/ca/blarg/gdx/Services.java index 556de2c..bb04997 100644 --- a/src/main/java/ca/blarg/gdx/Services.java +++ b/src/main/java/ca/blarg/gdx/Services.java @@ -20,7 +20,17 @@ public class Services { if (service == null) throw new IllegalArgumentException("service can not be null."); - Class type = service.getClass(); + register(service.getClass(), service); + } + + public static void register(Class type, Object service) { + if (type == null) + throw new IllegalArgumentException("type can not be null."); + if (service == null) + throw new IllegalArgumentException("service can not be null."); + if (!type.isInstance(service)) + throw new IllegalArgumentException("service object is not of the type specified."); + if (services.containsKey(type)) throw new UnsupportedOperationException("Another service of this type has already been registered.");