org.eclipse.team.core/src/org/eclipse/team/core/mapping/ISynchronizationContext.java
Parent Directory
|
Revision Log
Revision 1.22 -
(download)
(annotate)
Thu Jul 10 11:37:53 2008 UTC (16 months, 2 weeks ago) by tzarna
Branch: MAIN
CVS Tags: I20090323-1100, I20081202, I20090306-1030, I20090311-0800, I20080819, I20091006-0800, I20090427-0800, I20091013-0800, I20090407-0800, I20090721-0750, I20090803-1300, I20090630-2000, I20090224-0800, I20091028-0800, I20090331-0800, I20090929-0800, I20080803, I20090303-0800, I20080804, I20090825-0800, I20081014, I20090514-0808, I20090126-0800, R3_5, I20080715, I20090714-0800, I20090521-1750, I20090522-1010, I20081021, I20090922-0800, I20090113, I20080820, I20080722, I20080826, I20090309-1300, I20090421, I20090916-0800, I20090428, I20090211, I20090106, I20080923, R3_5_1, I20090429-0800, I20091124-0800, I20090210-0800, I20081029, I20090309-1800, I20081125, I20090527-0620, I20091020-0800, I20080930, I20090217-0800, I20091117-0800, I20081216, I20081210, I20081118, I20090508-2000, I20090120, r35x_20090930-0800, I20090511-2000, I20090128-0800, I20080909, I20091026-1300, v20090210-0615, I20090430-0408, I20080915, I20080917, I20090317-1800, HEAD
Branch point for: R3_5_maintenance
Changes since 1.21: +1 -1 lines
Thu Jul 10 11:37:53 2008 UTC (16 months, 2 weeks ago) by tzarna
Branch: MAIN
CVS Tags: I20090323-1100, I20081202, I20090306-1030, I20090311-0800, I20080819, I20091006-0800, I20090427-0800, I20091013-0800, I20090407-0800, I20090721-0750, I20090803-1300, I20090630-2000, I20090224-0800, I20091028-0800, I20090331-0800, I20090929-0800, I20080803, I20090303-0800, I20080804, I20090825-0800, I20081014, I20090514-0808, I20090126-0800, R3_5, I20080715, I20090714-0800, I20090521-1750, I20090522-1010, I20081021, I20090922-0800, I20090113, I20080820, I20080722, I20080826, I20090309-1300, I20090421, I20090916-0800, I20090428, I20090211, I20090106, I20080923, R3_5_1, I20090429-0800, I20091124-0800, I20090210-0800, I20081029, I20090309-1800, I20081125, I20090527-0620, I20091020-0800, I20080930, I20090217-0800, I20091117-0800, I20081216, I20081210, I20081118, I20090508-2000, I20090120, r35x_20090930-0800, I20090511-2000, I20090128-0800, I20080909, I20091026-1300, v20090210-0615, I20090430-0408, I20080915, I20080917, I20090317-1800, HEAD
Branch point for: R3_5_maintenance
Changes since 1.21: +1 -1 lines
bug 237262: Fix copyrights in team.core and team.cvs.core
/******************************************************************************* * Copyright (c) 2000, 2008 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.team.core.mapping; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.mapping.ResourceMapping; import org.eclipse.core.resources.mapping.ResourceTraversal; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.jobs.IJobManager; import org.eclipse.team.core.ICache; import org.eclipse.team.core.diff.*; import org.eclipse.team.core.mapping.provider.MergeContext; import org.eclipse.team.core.mapping.provider.SynchronizationContext; /** * Allows a model provider to build a view of their model that includes * synchronization information with a remote location (usually a repository). * <p> * The scope of the context is defined when the context is created. The creator * of the scope may affect changes on the scope which will result in property * change events from the scope and may result in change events from the diff * tree. Clients should note that it is possible that a change in the scope will * result in new resources with differences being covered by the scope but not * result in a change event from the diff tree. This can occur because the set * may already have contained a diff for the resource with the understanding * that the client would have ignored it. Consequently, clients should listen to * both sources in order to guarantee that they update any dependent state * appropriately. * <p> * <a name="async">The diff tree associated with this context may be updated * asynchronously in response to calls to any method of this context (e.g. * refresh methods) that may result in changes in the synchronization state of * resources. It may also get updated as a result of changes triggered from * other sources. Hence, the callback from the diff tree to report changes may * occur in the same thread as the method call or asynchronously in a separate * thread, regardless of who triggered the refresh. Clients of this method (and * any other asynchronous method on this context) may determine if all changes * have been collected using {@link IJobManager#find(Object)} using this context * as the <code>family</code> argument in order to determine if there are any * jobs running that are populating the diff tree. Clients may also call * {@link IJobManager#join(Object, IProgressMonitor)} if they wish to wait until * all background handlers related to this context are finished. * </p> * * @see SynchronizationContext * @see MergeContext * * @since 3.2 * @noimplement This interface is not intended to be implemented by clients. * They should subclass {@link SynchronizationContext} or one of * its subclasses instead. */ public interface ISynchronizationContext { /** * Synchronization type constant that indicates that * context is a two-way synchronization. */ public final static int TWO_WAY = 2; /** * Synchronization type constant that indicates that * context is a three-way synchronization. */ public final static int THREE_WAY = 3; /** * Return the input that defined the scope of this synchronization context. * The input determines the set of resources to which the context applies. * Changes in the input may result in changes to the sync-info available in * the tree of this context. * * @return the input that defined the scope of this synchronization context. */ ISynchronizationScope getScope(); /** * Return a tree that contains {@link IDiff} entries for resources that * are out-of-sync. The tree will contain entries for any out-of-sync * resources that are within the scope of this context. The tree may include * entries for additional resources, which should be ignored by the client. * Clients can test for inclusion using the method * {@link ISynchronizationScope#contains(IResource)}. * <p> * The returned {@link IResourceDiffTree} will be homogeneous and contain either * {@link IResourceDiff} or {@link IThreeWayDiff} instances. Any * {@link IThreeWayDiff} contained in the returned tree will contain * {@link IResourceDiff} instances as the local and remote changes. This * interface also has several helper methods for handling entries contained in * the returned diff tree. * * @return a tree that contains an entry for any * resources that are out-of-sync. * @see IResourceDiffTree#getDiffs(ResourceTraversal[]) * @see IResourceDiffTree#getResource(IDiff) */ public IResourceDiffTree getDiffTree(); /** * Return the synchronization type. A type of <code>TWO_WAY</code> * indicates that the synchronization information associated with the * context will also be two-way {@link IDiff} instances (i.e. there is * only a remote but no base involved in the comparison used to determine * the synchronization state of resources. A type of <code>THREE_WAY</code> * indicates that the synchronization information will be three-way * {@link IThreeWayDiff} instances. * * @return the type of synchronization information available in the context * * @see IDiff * @see IThreeWayDiff */ public int getType(); /** * Return the cache associated with this synchronization context. * The cache is maintained for the lifetime of this context and is * disposed when the the context is disposed. It can be used by * clients to cache model state related to the context so that it can * be maintained for the life of the operation to which the context * applies. * @return the cache associated with this synchronization context */ public ICache getCache(); /** * Dispose of the synchronization context and the cache of the context. This * method should be invoked by clients when the context is no longer needed. */ public void dispose(); /** * Refresh the context in order to update the diff tree returned by * {@link #getDiffTree()} to include the latest synchronization state for * the resources. Any changes will be reported through the change listeners * registered with the diff tree of this context. * <p> * Changes to the diff tree may be triggered by a call to this method or by a * refresh triggered by some other source. Hence, the callback from the diff tree * to report changes may occur in the same thread as the refresh or * <a href="#async">asynchronously</a> in a separate thread, regardless of who triggered * the refresh. * * @see #getDiffTree() * @see IDiffTree#addDiffChangeListener(IDiffChangeListener) * * @param traversals * the resource traversals which indicate which resources are to * be refreshed * @param flags * additional refresh behavior. For instance, if * <code>RemoteResourceMappingContext.FILE_CONTENTS_REQUIRED</code> * is one of the flags, this indicates that the client will be * accessing the contents of the files covered by the traversals. * <code>NONE</code> should be used when no additional behavior * is required * @param monitor * a progress monitor, or <code>null</code> if progress * reporting is not desired * @throws CoreException * if the refresh fails. Reasons include: * <ul> * <li>The server could not be contacted for some reason (e.g. * the context in which the operation is being called must be * short running). The status code will be * SERVER_CONTACT_PROHIBITED. </li> * </ul> */ public void refresh(ResourceTraversal[] traversals, int flags, IProgressMonitor monitor) throws CoreException; /** * Refresh the portion of the context related to the given resource * mappings. The provided mappings must be within the scope of this context. * Refreshing mappings may result in additional resources being added to the * scope of this context. If new resources are included in the scope, a * property change event will be fired from the scope. If the * synchronization state of any of the resources covered by the mapping * change, a change event will be fired from the diff tree of this context. * <p> * Changes to the diff tree may be triggered by a call to this method or by * a refresh triggered by some other source. Hence, the callback from the * diff tree to report changes may occur in the same thread as the refresh * or <a href="#async">asynchronously</a> in a separate thread, regardless * of who triggered the refresh. * * @param mappings * the mappings to be refreshed * @param monitor * a progress monitor * @throws CoreException * if errors occur */ public void refresh(ResourceMapping[] mappings, IProgressMonitor monitor) throws CoreException; }
| help@eclipse.org | ViewVC Help |
| Powered by ViewVC 1.0.3 |
