blob: 6746295897cfce71c84271e411ceb35933fba6b5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Obeo.
* 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:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.emf.compare.rcp.policy;
import java.util.List;
import org.eclipse.emf.common.util.URI;
/**
* A policy that can be asked to if it is authorizing resource to be loaded on demand.
*
* @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
*/
public interface ILoadOnDemandPolicy {
/**
* Returns true if this policy is authorizing the resource with the given URI to be loaded on demand,
* false either.
*
* @param uri
* the URI to be loaded on demand.
* @return true if this policy is authorizing the resource with the given URI to be loaded on demand,
* false either.
*/
boolean isAuthorizing(URI uri);
/**
* A registry of policy. It can be asked if it contains at least one policy authorizing an URI to be
* loaded on demand.
*
* @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
*/
interface Registry {
/**
* Returns true if at least one of the contained policy is authorizing the given policy to be loaded
* on demand.
*
* @param uri
* the URI to be tested.
* @return true if at least one of the contained policy is authorizing the given policy to be loaded
* on demand.
*/
boolean hasAnyAuthorizingPolicy(URI uri);
/**
* Returns the list of registered policies.
*
* @return the list of registered policies.
*/
List<ILoadOnDemandPolicy> getPolicies();
/**
* Add the given {@code policy} to this registry.
*
* @param policy
* the policy to be added.
* @return the previous value associated with the class name of the given {@code policy}.
*/
ILoadOnDemandPolicy addPolicy(ILoadOnDemandPolicy policy);
/**
* Removes the policy registered within this registry with the given class name.
*
* @param className
* the class name of a previously registered policy.
* @return the previously registered policy or null if none was.
*/
ILoadOnDemandPolicy removePolicy(String className);
/**
* Removes all of the registered policies.
*/
void clear();
}
}