/*******************************************************************************
 * Copyright (c) 2009 by SAP AG, Walldorf. 
 * 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:
 *     SAP AG - initial API and implementation
 *******************************************************************************/
package org.eclipse.jst.ws.jaxws.dom.runtime.persistence;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jst.ws.jaxws.dom.runtime.api.WsDOMLoadCanceledException;

/**
 * Implements a visitor pattern for traversing compilation unit. This interface does not define what set of compilation
 * units will be traveresed. This could be a single java project, the whole workspace or just a given package. The set of
 * traversed compilation units is left up to the implementation. Nevertheless as these compilation units are always contained
 * inside a java project, the </c>ICompilationUnitHandler.handleProject(IJavaProject)</c> has to be called exactly once to
 * notify the handler for each project being processed. The compilation unit handler will be first notified that the processing
 * of given project has began and immediately after this it will be notified for all annotations in this project discovered by
 * the given implementation. 
 * @author Hristo Sabev
 *
 */
public interface ICompilationUnitFinder
{
	/**
	 * Starts the traversal of compilation units
	 * @param monitor - the progress monitor to be used for the traversal.
	 * @param cuHandler - compilation unit handler to be notified for a given project
	 * @throws CoreException - thrown if unexpected problem occurred while traversing annotations
	 */
	public void find(IProgressMonitor monitor, ICompilationUnitHandler cuHandler) throws CoreException, WsDOMLoadCanceledException;
}
