private void updateJobService(String id, Resource resource) {
log.debug("Registering job: {}", id);
try {
String filter = "(&(" + SERVICE_OWNER_KEY + "=" + getClass().getCanonicalName() + ")" + "("
+ CONFIGURATION_ID_KEY + "=" + id + "))";
ServiceReference[] serviceReferences = (ServiceReference[]) ArrayUtils.addAll(
bctx.getServiceReferences(Runnable.class.getCanonicalName(), filter),
bctx.getServiceReferences(EventHandler.class.getCanonicalName(), filter));
if (serviceReferences != null && serviceReferences.length > 0) {
ServiceReference sr = serviceReferences[0];
if (isServiceUpdated(resource, sr)) {
log.debug("Service for {} up to date, no changes necessary", id);
} else {
log.warn("Unbinding ServiceReference for {}", id);
unregisterService(id);
registerService(id, resource);
}
} else {
registerService(id, resource);
}
} catch (Exception e) {
log.error("Failed to register job " + id, e);
}
}