package com.activecq.samples.contentfinder.querybuilder;
import com.activecq.samples.contentfinder.ContentFinderHitBuilder;
import com.day.cq.search.Query;
import com.day.cq.search.result.Hit;
import com.day.cq.search.writer.ResultHitWriter;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.io.JSONWriter;
import org.osgi.framework.Constants;
import org.osgi.service.component.ComponentContext;
import javax.jcr.RepositoryException;
import java.util.Map;
/**
* User: david
*/
@Component(
label = "Samples - ContentFinder Result Hit Writer",
description = "",
factory = "com.day.cq.search.result.ResultHitWriter/cf",
immediate = false,
metatype = false
)
@Properties({
@Property(
label = "Vendor",
name = Constants.SERVICE_VENDOR,
value = "ActiveCQ",
propertyPrivate = true
)
})
public class ContentFinderResultHitWriter implements ResultHitWriter {
/**
* Result hit writer integration
*
* @param hit
* @param jsonWriter
* @param query
* @throws RepositoryException
* @throws JSONException
*/
@Override
public void write(Hit hit, JSONWriter jsonWriter, Query query) throws RepositoryException, JSONException {
Map<String, Object> map = ContentFinderHitBuilder.buildGenericResult(hit);
jsonWriter.object();
for (final String key : map.keySet()) {
jsonWriter.key(key).value(map.get(key));
}
jsonWriter.endObject();
}
/**
* OSGi Component Methods *
*/
@Activate
protected void activate(final ComponentContext componentContext) throws Exception {
}
@Deactivate
protected void deactivate(ComponentContext componentContext) {
}
}