/*******************************************************************************
 * Copyright (c) 2000, 2011 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.jdt.debug.core;

import org.eclipse.core.runtime.CoreException;

/**
 * A line breakpoint installed in types associated with a specific source file
 * (based on source file name debug attribute) and whose fully qualified name
 * matches a specified pattern per target. The {target, type name pattern} pairs
 * are not persisted with this breakpoint, as targets are transient. Clients
 * that use this type of breakpoint are intended to be breakpoint listeners that
 * set a pattern per target as each breakpoint is added to a target.
 *
 * @see org.eclipse.jdt.debug.core.IJavaBreakpointListener
 * @since 2.0
 * @noimplement This interface is not intended to be implemented by clients.
 * @noextend This interface is not intended to be extended by clients.
 */
public interface IJavaTargetPatternBreakpoint extends IJavaLineBreakpoint {

	/**
	 * Returns the type name pattern this breakpoint uses to identify types in
	 * which to install itself in the given target
	 *
	 * @param target
	 *            debug target
	 * @return the type name pattern this breakpoint uses to identify types in
	 *         which to install itself in the given target
	 */
	public String getPattern(IJavaDebugTarget target);

	/**
	 * Sets the type name pattern this breakpoint uses to identify types in
	 * which to install itself in the given target
	 *
	 * @param target
	 *            debug target
	 * @param pattern
	 *            type name pattern
	 * @exception CoreException
	 *                if changing the pattern for this breakpoint fails
	 */
	public void setPattern(IJavaDebugTarget target, String pattern)
			throws CoreException;

	/**
	 * Returns the source file name in which this breakpoint is set. When this
	 * breakpoint specifies a source file name, this breakpoint is only
	 * installed in types whose source file name debug attribute match this
	 * value.
	 *
	 * @return the source file name in which this breakpoint is set
	 * @exception CoreException
	 *                if unable to access the property from this breakpoint's
	 *                underlying marker
	 */
	public String getSourceName() throws CoreException;
}
