blob: 441488296a0110cab11d049324a4dd83b9a956b8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 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
*
* Contributors:
* IBM Corporation - Initial API and implementation
*******************************************************************************/
package org.eclipse.wst.internet.monitor.core.internal.provisional;
import java.util.List;
import org.eclipse.wst.internet.monitor.core.internal.MonitorManager;
/**
* Main class for creating new monitors and locating existing ones. The methods on
* this class are thread safe.
* <p>
* This class provides all functionality through static members. It is not intended
* to be instantiated or subclassed.
* </p>
*/
public final class MonitorCore {
private static MonitorManager manager;
/**
* Cannot create MonitorCore - use static methods.
*/
private MonitorCore() {
// can't create
}
/**
* Returns a monitor manager instance.
*
* @return the monitor manager
*/
private static MonitorManager getManager() {
if (manager == null)
manager = MonitorManager.getInstance();
return manager;
}
/**
* Returns a list of all known monitor instances. The list will not contain any
* working copies and is persisted between workbench sessions.
* <p>
* A new array is returned on each call; clients may safely store or modify the result.
* </p>
*
* @return a possibly-empty array of monitor instances
*/
public static IMonitor[] getMonitors() {
List<IMonitor> list = getManager().getMonitors();
IMonitor[] m = new IMonitor[list.size()];
list.toArray(m);
return m;
}
/**
* Creates a new monitor working copy. After configuring parameters on
* the working copy, calling {@link IMonitorWorkingCopy#save()} brings
* the monitor into existence.
* <p>
* Note that the client is responsible for calling {@link IMonitor#delete()}
* to delete the monitor once it is no longer needed.
* </p>
* <p>
* When monitors are created, the local and remote port values default to
* <code>80</code>, but they do not have a protocol or remote host (values
* are <code>null</code>).
* </p>
*
* @return a monitor working copy
*/
public static IMonitorWorkingCopy createMonitor() {
return getManager().createMonitor();
}
/**
* Adds a monitor listener.
* Once registered, a listener starts receiving notification of
* changes to the monitors. The listener continues to receive
* notifications until it is removed.
* Has no effect if an identical listener is already registered.
*
* @param listener the monitor listener
* @see #removeMonitorListener(IMonitorListener)
*/
public static void addMonitorListener(IMonitorListener listener) {
if (listener == null)
throw new IllegalArgumentException();
getManager().addMonitorListener(listener);
}
/**
* Removes the given monitor listener. Has no
* effect if the listener is not registered.
*
* @param listener the listener
* @see #addMonitorListener(IMonitorListener)
*/
public static void removeMonitorListener(IMonitorListener listener) {
if (listener == null)
throw new IllegalArgumentException();
getManager().removeMonitorListener(listener);
}
}