This commit was manufactured by cvs2svn to create tag 'R3_4_1'.

Sprout from master 2008-06-12 17:32:31 UTC Michael Valenta <mvalenta> 'Bug 236844 Make compare performance tests grey'
Cherrypick from R3_4_maintenance 2008-09-02 15:19:14 UTC Tomasz Zarna <tzarna> 'bug 245575: Contents of org.eclipse.cvs changed but version did not between 3.4 GM and 3.4.1 20080827':
    bundles/org.eclipse.team.core/META-INF/MANIFEST.MF
    bundles/org.eclipse.team.core/buildnotes_team.html
    bundles/org.eclipse.team.core/schema/projectSets.exsd
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/CachedResourceVariant.java
    bundles/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF
    bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFile.java
    bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRepositoryLocation.java
    bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
    bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java
    bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelCompareEditorInput.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompressedFoldersModelProvider.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/HierarchicalModelProvider.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SaveableCompareEditorInput.java
    features/org.eclipse.cvs-feature/feature.xml
diff --git a/bundles/org.eclipse.team.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.team.core/META-INF/MANIFEST.MF
index 9b2b690..6821f35 100644
--- a/bundles/org.eclipse.team.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.team.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.team.core; singleton:=true
-Bundle-Version: 3.4.0.qualifier
+Bundle-Version: 3.4.1.qualifier
 Bundle-Activator: org.eclipse.team.internal.core.TeamPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.team.core/buildnotes_team.html b/bundles/org.eclipse.team.core/buildnotes_team.html
index 23e1d93..a925b50 100644
--- a/bundles/org.eclipse.team.core/buildnotes_team.html
+++ b/bundles/org.eclipse.team.core/buildnotes_team.html
@@ -12,6 +12,26 @@
 <h1>Eclipse Platform Build Notes (3.3)<br>
 Team, Compare and CVS</h1>
 
+<p>Integration Build (August 27, 2008, 6:20 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=230853">Bug 230853</a>. Sometime resources are disappeared from Synchronize View (FIXED)<br>
+  </p>
+
+<p>Integration Build (August 08, 2008, 9:52 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=218288">Bug 218288</a>. [Wizards] NPE while sharing a project that already exists in the repository (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=232982">Bug 232982</a>. "Save password" checkbox behaves weird (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=242879">Bug 242879</a>. org.eclipse.team.core.projectSets extension point deprecated - forward ref invalid (FIXED)<br>
+  </p>
+
+<p>Integration Build (July 23, 2008, 11:56 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=236472">Bug 236472</a>. Multiple problems caused by Compare Editor (FIXED)<br>
+  </p>
+
 <p>Integration Build (June 05, 2008, 8:03 p.m.)</p>
   <p>Problem reports updated</p>
   <p>
diff --git a/bundles/org.eclipse.team.core/schema/projectSets.exsd b/bundles/org.eclipse.team.core/schema/projectSets.exsd
index a620788..4ac4424 100644
--- a/bundles/org.eclipse.team.core/schema/projectSets.exsd
+++ b/bundles/org.eclipse.team.core/schema/projectSets.exsd
@@ -1,25 +1,25 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.team.core">
+<schema targetNamespace="org.eclipse.team.core" xmlns="http://www.w3.org/2001/XMLSchema">
 <annotation>
-      <appInfo>
+      <appinfo>
          <meta.schema plugin="org.eclipse.team.core" id="projectSets" name="Project Sets"/>
-      </appInfo>
+      </appinfo>
       <documentation>
          This extension point is used to register a handler for creating and reading project sets.
 Project sets are lightweight, portable method of sharing a particular lineup of team-shared projects in a workspace.
 A project set file may be used to provide team memebers with a simple way of creating a workspace with a particular lineup of projects form one or more team providers. Providers may provide an extension for this extension point.
 &lt;p&gt;
-&lt;i&gt;deprecated: see RepositoryProvider#getProjectSetCapability.&lt;/i&gt;
+&lt;i&gt;deprecated: see org.eclipse.team.core.RepositoryProviderType#getProjectSetCapability&lt;/i&gt;
 &lt;/p&gt;
       </documentation>
    </annotation>
 
    <element name="extension">
       <annotation>
-         <appInfo>
-            <meta.element deprecated="true"/>
-         </appInfo>
+         <appinfo>
+            <meta.element deprecated="true" />
+         </appinfo>
       </annotation>
       <complexType>
          <sequence>
@@ -56,18 +56,18 @@
                <documentation>
                   the fully qualified name of a class implementing &lt;samp&gt;org.eclipse.team.core.IProjectSerializer&lt;/samp&gt;.
                </documentation>
-               <appInfo>
+               <appinfo>
                   <meta.attribute kind="java" basedOn="org.eclipse.team.core.IProjectSetSerializer"/>
-               </appInfo>
+               </appinfo>
             </annotation>
          </attribute>
       </complexType>
    </element>
 
    <annotation>
-      <appInfo>
+      <appinfo>
          <meta.section type="examples"/>
-      </appInfo>
+      </appinfo>
       <documentation>
          Following is an example of a projectSets extension:
 
@@ -84,39 +84,23 @@
       </documentation>
    </annotation>
 
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
 
    <annotation>
-      <appInfo>
+      <appinfo>
          <meta.section type="since"/>
-      </appInfo>
+      </appinfo>
       <documentation>
          2.0
       </documentation>
    </annotation>
 
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
 
    <annotation>
-      <appInfo>
+      <appinfo>
          <meta.section type="copyright"/>
-      </appInfo>
+      </appinfo>
       <documentation>
-         Copyright (c) 2004 IBM Corporation and others.
+         Copyright (c) 2004, 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 &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
       </documentation>
    </annotation>
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/CachedResourceVariant.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/CachedResourceVariant.java
index 78b645a..a451da8 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/CachedResourceVariant.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/CachedResourceVariant.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * 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
@@ -181,9 +181,9 @@
 	 * cached contents can be retrieved from any handle to a resource variant whose
 	 * cache path (as returned by <code>getCachePath()</code>) match but other
 	 * state information may only be accessible from the cached copy.
-	 * <p>
-	 * This method is not intended to be overridden by clients.
+	 * 
 	 * @return whether the variant is cached
+	 * @nooverride This method is not intended to be overridden by clients. 
 	 */
 	protected boolean isHandleCached() {
 		return (getCache().hasEntry(getCachePath()));
@@ -241,9 +241,9 @@
 	 * one. If there isn't one, then <code>null</code> is returned.
 	 * If there is no cached handle and one is desired, then <code>cacheHandle()</code>
 	 * should be called.
-	 * <p>
-	 * This method is not intended to be overridden by clients.
+	 * 
 	 * @return a cached copy of this resource variant or <code>null</code>
+	 * @nooverride This method is not intended to be overridden by clients. 
 	 */
 	protected CachedResourceVariant getCachedHandle() {
 		ResourceVariantCacheEntry entry = getCacheEntry();
@@ -260,8 +260,8 @@
 	 * resource version (or revision). The ability to replace the handle itself
 	 * is provided so that additional state may be cached before or after the contents
 	 * are fetched.
-	 * <p>
-	 * This method is not intended to be overridden by clients.
+	 * 
+	 * @nooverride This method is not intended to be overridden by clients.
 	 */
 	protected void cacheHandle() {
 		getCache().add(getCachePath(), this);
diff --git a/bundles/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF
index 924d421..04c4414 100644
--- a/bundles/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.team.cvs.core; singleton:=true
-Bundle-Version: 3.3.100.qualifier
+Bundle-Version: 3.3.101.qualifier
 Bundle-Activator: org.eclipse.team.internal.ccvs.core.CVSProviderPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFile.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFile.java
index 0a9dc85..b4a1d84 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFile.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFile.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * 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
@@ -96,7 +96,7 @@
 	boolean isReadOnly() throws CVSException;
 	
 	/**
-	 * Sets the file to be executable (<code>ture</code>) or not executable 
+	 * Sets the file to be executable (<code>true</code>) or not executable 
 	 * (<code>false</code>) if the platform supports it.
 	 */
 	public void setExecutable(boolean executable) throws CVSException;
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRepositoryLocation.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRepositoryLocation.java
index b86c1a2..8ba6a07 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRepositoryLocation.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRepositoryLocation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * 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
@@ -19,10 +19,10 @@
  * the repository location string for use by connection methods
  * and the user authenticator.
  * 
- * It is not intended to implemented by clients.
- * 
  * @see IUserAuthenticator
  * @see IConnectionMethod
+ * 
+ * @noimplement It is not intended to implemented by clients.
  */
 public interface ICVSRepositoryLocation  extends IAdaptable {
 
@@ -103,7 +103,7 @@
 	public IUserInfo getUserInfo(boolean allowModificationOfUsername);	
 	
 	/**
-	 * Flush any cahced user information related to the repository location
+	 * Flush any cached user information related to the repository location
 	 */
 	public void flushUserInfo();
 	
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
index b059048..ec007f7 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
@@ -141,7 +141,7 @@
 	private boolean previousAuthenticationFailed = false;
 	
 	/**
-	 * Return the preferences node whose child nodes are teh know repositories
+	 * Return the preferences node whose child nodes are the know repositories
 	 * @return a preferences node
 	 */
 	public static Preferences getParentPreferences() {
@@ -149,7 +149,7 @@
 	}
 	
 	/**
-	 * Return a preferences node that contains suitabel defaults for a
+	 * Return a preferences node that contains suitable defaults for a
 	 * repository location.
 	 * @return  a preferences node
 	 */
@@ -548,11 +548,11 @@
 	
 	/*
 	 * Dispose of the receiver by clearing any cached authorization information.
-	 * This method shold only be invoked when the corresponding adapter is shut
+	 * This method should only be invoked when the corresponding adapter is shut
 	 * down or a connection is being validated.
 	 */
 	public void dispose() {
-		flushCache();
+		removeNode();
 		try {
 			if (hasPreferences()) {
 				internalGetPreferences().removeNode();
@@ -564,14 +564,17 @@
 	}
 	
 	/*
-	 * Flush the keyring entry associated with the receiver
+	 * Clear and flush the keyring entry associated with the receiver
 	 */
-	private void flushCache() {
+	private void removeNode() {
 		ISecurePreferences node = getCVSNode();
 		if (node == null)
 			return;
 		try {
-			node.flush();
+			node.clear();
+			node.flush(); // save immediately
+		} catch (IllegalStateException e) {
+			CVSProviderPlugin.log(IStatus.ERROR, e.getMessage(), e);
 		} catch (IOException e) {
 			CVSProviderPlugin.log(IStatus.ERROR, e.getMessage(), e);
 		}
@@ -889,8 +892,8 @@
     }
 
     /*
-     * The connection was sucessfully made. Update the cached
-     * repository location if it is a differnet instance than
+     * The connection was successfully made. Update the cached
+     * repository location if it is a different instance than
      * this location.
      */
     private void updateCachedLocation() {
@@ -963,6 +966,9 @@
 		// We set the password here but it will be cleared 
 		// if the user info is cached using updateCache()
 		this.password = password;
+		// The password has been changed, reset the flag, so we won't 
+		// prompt before attempting to connect
+		previousAuthenticationFailed = false;
 	}
 	
 	/*
@@ -980,10 +986,13 @@
 	
 	public void setAllowCaching(boolean value) {
 		allowCaching = value;
-        if (allowCaching)
+        if (allowCaching) {
             updateCache();
-        else
-            flushCache();
+        } else {
+        	if (password == null)
+        		password = retrievePassword();
+            removeNode();
+        }
 	}
 	
 	public void updateCache() {
@@ -1082,7 +1091,7 @@
 	 * @see ICVSRepositoryLocation#flushUserInfo()
 	 */
 	public void flushUserInfo() {
-		flushCache();
+		removeNode();
 	}
 	
 	/*
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java
index f4aef83..ab4712a 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * 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
@@ -656,6 +656,9 @@
 	public void setExecutable(boolean executable) throws CVSException {
 		// store executable bit;
 		this.executable = executable;
+		if (!isHandleCached()) {
+			cacheHandle();
+		}
 		RemoteFile file = (RemoteFile)getCachedHandle();
 		if (file != this) {
 			file.setExecutable(executable);
diff --git a/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF
index 7406697..244274b 100644
--- a/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.team.ui; singleton:=true
-Bundle-Version: 3.4.0.qualifier
+Bundle-Version: 3.4.1.qualifier
 Bundle-Activator: org.eclipse.team.internal.ui.TeamUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelCompareEditorInput.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelCompareEditorInput.java
index f1f1875..7271290 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelCompareEditorInput.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelCompareEditorInput.java
@@ -40,7 +40,7 @@
 	
 	private final ModelSynchronizeParticipant participant;
 	private final ICompareInput input;
-	private ICacheListener contextListener;
+	private final ICacheListener contextListener;
 	private final ISynchronizePageConfiguration synchronizeConfiguration;
 
 	public ModelCompareEditorInput(ModelSynchronizeParticipant participant, ICompareInput input, IWorkbenchPage page, ISynchronizePageConfiguration synchronizeConfiguration) {
@@ -82,7 +82,6 @@
 	protected void handleDispose() {
 		super.handleDispose();
 		participant.getContext().getCache().removeCacheListener(contextListener);
-		contextListener = null;
 		getCompareConfiguration().removePropertyChangeListener(this);
     	ICompareNavigator navigator = (ICompareNavigator)synchronizeConfiguration.getProperty(SynchronizePageConfiguration.P_INPUT_NAVIGATOR);
     	if (navigator != null && navigator == super.getNavigator()) {
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompressedFoldersModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompressedFoldersModelProvider.java
index 4adcb9e..bf61ec5 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompressedFoldersModelProvider.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompressedFoldersModelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * 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
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Alexander Gurov - bug 230853
  *******************************************************************************/
 package org.eclipse.team.internal.ui.synchronize;
 
@@ -285,9 +286,7 @@
 					// A folder has been removed (i.e. is in-sync)
 					// but may still contain children
 				    resourcesToRemove.add(resource);
-					if (hasFileMembers((IContainer)resource)) {
-					    resourcesToAdd.addAll(Arrays.asList(getSyncInfosForFileMembers((IContainer)resource)));
-					}
+				    resourcesToAdd.addAll(Arrays.asList(getSyncInfosForFileMembers((IContainer)resource)));
 				}
 			}
 		}
@@ -335,10 +334,13 @@
 	    List result = new ArrayList();
 		IResource[] members = getSyncInfoTree().members(parent);
 		for (int i = 0; i < members.length; i++) {
-			IResource member = members[i];
-			if (member.getType() == IResource.FILE) {
-			    result.add(getSyncInfoTree().getSyncInfo(member));
+			SyncInfo info = getSyncInfoTree().getSyncInfo(members[i]);
+			if (info != null) {
+			    result.add(info);
 			}
+		    if (members[i] instanceof IContainer) {
+		    	result.addAll(Arrays.asList(this.getSyncInfosForFileMembers((IContainer)members[i])));
+		    }
 		}
 		return (SyncInfo[]) result.toArray(new SyncInfo[result.size()]);
 	}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/HierarchicalModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/HierarchicalModelProvider.java
index 56fc5b8..7ab3cd7 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/HierarchicalModelProvider.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/HierarchicalModelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * 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
@@ -7,9 +7,13 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Alexander Gurov - bug 230853
  *******************************************************************************/
 package org.eclipse.team.internal.ui.synchronize;
 
+import java.util.HashSet;
+import java.util.Iterator;
+
 import org.eclipse.compare.structuremergeviewer.IDiffElement;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -22,18 +26,18 @@
 import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
 
 /**
- * The
- * job of this input is to create the logical model of the contents of the
+ * The job of this input is to create the logical model of the contents of the
  * sync set for displaying to the user. The created logical model must diff
  * nodes.
- * <p>
- * 1. First, prepareInput is called to initialize the model with the given sync
- * set. Building the model occurs in the ui thread.
- * 2. The input must react to changes in the sync set and adjust its diff node
+ * <ol>
+ * <li>First, prepareInput is called to initialize the model with the given sync
+ * set. Building the model occurs in the UI thread.</li>
+ * <li>The input must react to changes in the sync set and adjust its diff node
  * model then update the viewer. In effect mediating between the sync set
  * changes and the model shown to the user. This happens in the ui thread.
- * </p>
+ * </ol>
  * NOT ON DEMAND - model is created then maintained!
+ * 
  * @since 3.0
  */
 public class HierarchicalModelProvider extends SynchronizeModelProvider {
@@ -53,10 +57,15 @@
 	private static final HierarchicalModelProviderDescriptor hierarchicalDescriptor = new HierarchicalModelProviderDescriptor();
 	
 	/**
-	 * Create an input based on the provide sync set. The input is not initialized
-	 * until <code>prepareInput</code> is called. 
+	 * Create an input based on the provide sync set. The input is not
+	 * initialized until <code>prepareInput</code> is called.
 	 * 
-	 * @param set the sync set used as the basis for the model created by this input.
+	 * @param configuration
+	 *            the synchronize page configuration
+	 * 
+	 * @param set
+	 *            the sync set used as the basis for the model created by this
+	 *            input.
 	 */
 	public HierarchicalModelProvider(ISynchronizePageConfiguration configuration, SyncInfoSet set) {
 		super(configuration, set);
@@ -176,8 +185,15 @@
 	 * @see org.eclipse.team.ui.synchronize.viewers.SynchronizeModelProvider#handleResourceAdditions(org.eclipse.team.core.synchronize.ISyncInfoTreeChangeEvent)
 	 */
 	protected void handleResourceAdditions(ISyncInfoTreeChangeEvent event) {
-		IResource[] added = event.getAddedSubtreeRoots();
-		addResources(added);
+		SyncInfo[] infos = event.getAddedResources();
+		HashSet set = new HashSet();
+		for (int i = 0; i < infos.length; i++) {
+			SyncInfo info = infos[i];
+			set.add(info.getLocal().getProject());
+		}
+		for (Iterator it = set.iterator(); it.hasNext(); ) {
+			addResource((IResource)it.next());
+		}
 	}
 
 	/* (non-Javadoc)
@@ -196,7 +212,6 @@
 				ISynchronizeModelElement node = getModelObject(resource);
 				if (node != null) {
 					removeFromViewer(resource);
-					addResources(new IResource[] {resource});
 				}
 			}
 		}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SaveableCompareEditorInput.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SaveableCompareEditorInput.java
index 02cbb75..2d3b9c2 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SaveableCompareEditorInput.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SaveableCompareEditorInput.java
@@ -221,7 +221,6 @@
 			LocalResourceSaveableComparison rsc = (LocalResourceSaveableComparison) saveable;
 			rsc.dispose();
 		}
-		saveable = null;
 		if (getCompareResult() instanceof IDisposable) {
 			((IDisposable) getCompareResult()).dispose();
 		}
diff --git a/features/org.eclipse.cvs-feature/feature.xml b/features/org.eclipse.cvs-feature/feature.xml
index 4cb3117..85b2e58 100644
--- a/features/org.eclipse.cvs-feature/feature.xml
+++ b/features/org.eclipse.cvs-feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.cvs"
       label="%featureName"
-      version="1.1.0.qualifier"
+      version="1.1.1.qualifier"
       provider-name="%providerName">
 
    <description>