// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.log.LogReaderService;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
/**
* @author Vikas Panwar
*/
class ConsoleLogManager {
private final ConsoleLogListener listener = ConsoleLogListener.newInstance();
private ServiceTracker tracker;
@SuppressWarnings("unchecked")
public void install(final BundleContext osgiContext) {
if (tracker != null) {
throw new IllegalStateException("ConsoleLogManager already installed.");
}
tracker = new ServiceTracker(osgiContext, LogReaderService.class.getName(),
new ServiceTrackerCustomizer() {
@Override
public LogReaderService addingService(ServiceReference reference) {
LogReaderService service = osgiContext.getService(reference);
service.addLogListener(listener);
return service;
}
@Override
public void modifiedService(ServiceReference reference, LogReaderService service) {
}
@Override
public void removedService(ServiceReference reference, LogReaderService service) {
service.removeLogListener(listener);
}
});
tracker.open();
}
public boolean uninstall() {
if (tracker == null) {
return false;
}
tracker.close();
tracker = null;
return true;
}
}