package org.araqne.logdb.metadata;
import java.util.HashMap;
import java.util.Map;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Invalidate;
import org.apache.felix.ipojo.annotations.Requires;
import org.apache.felix.ipojo.annotations.Validate;
import org.araqne.logdb.LookupHandlerRegistry;
import org.araqne.logdb.MetadataCallback;
import org.araqne.logdb.MetadataProvider;
import org.araqne.logdb.MetadataService;
import org.araqne.logdb.QueryContext;
import org.araqne.logdb.Row;
/**
* @since 2.4.46
*/
@Component(name = "logdb-lookup-metadata")
public class LookupMetadataProvider implements MetadataProvider {
@Requires
private MetadataService metadataService;
@Requires
private LookupHandlerRegistry lookupRegistry;
@Override
public String getType() {
return "lookups";
}
@Validate
public void start() {
metadataService.addProvider(this);
}
@Invalidate
public void stop() {
if (metadataService != null)
metadataService.removeProvider(this);
}
@Override
public void verify(QueryContext context, String queryString) {
}
@Override
public void query(QueryContext context, String queryString, MetadataCallback callback) {
for (String name : lookupRegistry.getLookupHandlerNames()) {
Map<String, Object> m = new HashMap<String, Object>();
m.put("name", name);
callback.onPush(new Row(m));
}
}
}