org.daisy.pipeline.braille.common.HyphenatorRegistry Maven / Gradle / Ivy
package org.daisy.pipeline.braille.common;
import java.util.ArrayList;
import java.util.List;
import static org.daisy.pipeline.braille.common.TransformProvider.util.dispatch;
import org.daisy.pipeline.braille.common.TransformProvider.util.Memoize;
import org.daisy.pipeline.braille.common.util.Strings;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferenceCardinality;
import org.osgi.service.component.annotations.ReferencePolicy;
import org.slf4j.Logger;
@Component(
name = "hyphenator-registry",
service = { HyphenatorRegistry.class }
)
public class HyphenatorRegistry extends Memoize implements HyphenatorProvider {
public HyphenatorRegistry() {
super();
}
private final List> providers = new ArrayList<>();
private final TransformProvider dispatch = dispatch(providers);
@Reference(
name = "HyphenatorProvider",
unbind = "-",
service = HyphenatorProvider.class,
cardinality = ReferenceCardinality.MULTIPLE,
policy = ReferencePolicy.STATIC
)
public void addProvider(HyphenatorProvider p) {
providers.add(p);
}
public Iterable _get(Query q) {
return dispatch.get(q);
}
public TransformProvider _withContext(Logger context) {
return dispatch.withContext(context);
}
@Override
public String toString() {
return "memoize(dispatch( " + Strings.join(providers, ", ") + " ))";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy