
io.protostuff.generator.AbstractExtensionProvider Maven / Gradle / Ivy
package io.protostuff.generator;
import org.stringtemplate.v4.AttributeRenderer;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
/**
* @author Kostiantyn Shchepanovskyi
*/
public class AbstractExtensionProvider implements ExtensionProvider {
private final Map, AttributeRenderer> attributeRenderers;
private final Map, PropertyProvider>> extenderMap;
public AbstractExtensionProvider() {
extenderMap = new HashMap<>();
attributeRenderers = new HashMap<>();
}
@SuppressWarnings("unchecked")
public final void registerProperty(Class object, String property, Function function) {
PropertyProvider extender = (PropertyProvider) extenderMap.computeIfAbsent(object,
aClass -> new SimplePropertyProvider());
extender.register(property, function);
}
@Override
public Map, AttributeRenderer> attributeRenderers() {
return Collections.unmodifiableMap(attributeRenderers);
}
@Override
public Map, PropertyProvider>> propertyProviders() {
return Collections.unmodifiableMap(extenderMap);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy