org.eclipse.osgi.internal.log.ExtendedLogReaderServiceImpl Maven / Gradle / Ivy
The newest version!
/*******************************************************************************
* Copyright (c) 2006, 2016 Cognos Incorporated, IBM Corporation and others
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
******************************************************************************/
package org.eclipse.osgi.internal.log;
import java.util.*;
import org.eclipse.equinox.log.ExtendedLogReaderService;
import org.eclipse.equinox.log.LogFilter;
import org.osgi.service.log.LogEntry;
import org.osgi.service.log.LogListener;
public class ExtendedLogReaderServiceImpl implements ExtendedLogReaderService {
private final ExtendedLogReaderServiceFactory factory;
private Set listeners = new HashSet<>();
ExtendedLogReaderServiceImpl(ExtendedLogReaderServiceFactory factory) {
this.factory = factory;
}
public synchronized void addLogListener(LogListener listener, LogFilter filter) {
checkShutdown();
if (listener == null)
throw new IllegalArgumentException("LogListener must not be null"); //$NON-NLS-1$
if (filter == null)
throw new IllegalArgumentException("LogFilter must not be null"); //$NON-NLS-1$
listeners.add(listener);
factory.addLogListener(listener, filter);
}
public void addLogListener(LogListener listener) {
addLogListener(listener, ExtendedLogReaderServiceFactory.NULL_LOGGER_FILTER);
}
public Enumeration getLog() {
checkShutdown();
return factory.getLog();
}
public synchronized void removeLogListener(LogListener listener) {
checkShutdown();
if (listener == null)
throw new IllegalArgumentException("LogListener must not be null"); //$NON-NLS-1$
factory.removeLogListener(listener);
listeners.remove(listener);
}
private synchronized void checkShutdown() {
if (listeners == null)
throw new IllegalStateException("LogReaderService is shutdown."); //$NON-NLS-1$
}
synchronized void shutdown() {
for (LogListener listener : listeners) {
factory.removeLogListener(listener);
}
listeners = null;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy