package com.github.czyzby.uedi.stereotype.impl; import java.lang.reflect.Member; import com.badlogic.gdx.utils.ObjectMap; import com.github.czyzby.kiwi.util.gdx.collection.GdxMaps; import com.github.czyzby.uedi.stereotype.Default; import com.github.czyzby.uedi.stereotype.Property; /** Provides string properties using {@link Property} API. * * @author MJ */ public class PropertyProvider implements Default, StringProvider { private final ObjectMap<String, Property> properties = GdxMaps.newObjectMap(); @Override public boolean hasProperty(final String key) { return properties.containsKey(key); } @Override public Property getProperty(final String key) { return properties.get(key); } @Override public void addProperty(final Property property) { properties.put(property.getKey(), property); } @Override public Class<? extends String> getType() { return String.class; } @Override public String provide(final Object target, final Member member) { final String key = Providers.getName(member); if (properties.containsKey(key)) { return properties.get(key).getValue(); } return null; } }