package org.foo.httpservice.resourceapp;
import org.apache.felix.ipojo.annotations.Bind;
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.Unbind;
import org.apache.felix.ipojo.annotations.Validate;
import org.osgi.service.http.HttpService;
import org.osgi.service.http.NamespaceException;
import org.osgi.service.log.LogService;
@Component
public class ResourceBinder {
@Requires(optional=true)
private LogService s_log;
@Requires(id="http")
private HttpService s_http;
@Bind(id="http")
protected void addHttpService(HttpService service) {
register(service);
}
@Unbind(id="http")
protected void removeHttpService(HttpService service) {
unregister(service);
}
@Validate
protected void start() {
register(s_http);
}
@Invalidate
protected void stop() {
unregister(s_http);
}
private void register(HttpService service) {
try {
service.registerResources( "/", "/html", null );
service.registerResources( "/images", "/images", null );
} catch (NamespaceException e) {
s_log.log(LogService.LOG_WARNING, "Failed to register static content", e);
}
}
private void unregister(HttpService service) {
service.unregister("/");
service.unregister("/images");
}
}