if (roots.length > 1) roots = reduceRoots(roots);
    protected void execute(IProgressMonitor monitor) throws SVNException, InterruptedException {        try {        	svnClient = SVNProviderPlugin.getPlugin().getSVNClientManager().createSVNClient();        	if (resourcesToAdd.length > 0) {			    Map table = getProviderMapping(resourcesToAdd);				if (table.get(null) != null) {					throw new SVNException(Policy.bind("RepositoryManager.addErrorNotAssociated"));  //$NON-NLS-1$				}				Set keySet = table.keySet();				Iterator iterator = keySet.iterator();				while (iterator.hasNext()) {					SVNTeamProvider provider = (SVNTeamProvider)iterator.next();					List list = (List)table.get(provider);					IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);					provider.add(providerResources, IResource.DEPTH_ZERO, null);				}									}        	if (resourcesToDelete.length > 0) {				ISVNClientAdapter svnDeleteClient = null; // use an adapter that will log to console			    Map table = getProviderMapping(resourcesToDelete);				if (table.get(null) != null) {					throw new SVNException(Policy.bind("RepositoryManager.addErrorNotAssociated"));  //$NON-NLS-1$				}				Set keySet = table.keySet();				Iterator iterator = keySet.iterator();				while (iterator.hasNext()) {					SVNTeamProvider provider = (SVNTeamProvider)iterator.next();					List list = (List)table.get(provider);					IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);					File[] files = new File[providerResources.length];					for (int i = 0; i < providerResources.length; i++) {						ISVNLocalResource svnResource = SVNWorkspaceRoot.getSVNResourceFor(providerResources[i]);						if (svnDeleteClient == null)						    svnDeleteClient = svnResource.getRepository().getSVNClient();						files[i] = svnResource.getFile();					}					try {						svnDeleteClient.remove(files, true);					} catch (SVNClientException e) {						throw new TeamException(e.getMessage());					}				}									}			Map table = getProviderMapping(resourcesToCommit);			Set keySet = table.keySet();			Iterator iterator = keySet.iterator();	        monitor.beginTask(null, 100 * keySet.size());			while (iterator.hasNext()) {				SVNTeamProvider provider = (SVNTeamProvider)iterator.next();				List list = (List)table.get(provider);				IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);				provider.checkin(providerResources, commitComment, keepLocks, getDepth(providerResources), Policy.subMonitorFor(monitor, 100));			}			//			for (int i = 0; i < selectedResources.length; i++) {//				IResource projectHandle = selectedResources[i].getProject();//				projectHandle.refreshLocal(IResource.DEPTH_INFINITE, monitor);//			}		        } catch (TeamException e) {			throw SVNException.wrapException(e);//		} catch (CoreException e) {//			throw SVNException.wrapException(e);		} finally {			monitor.done();			// refresh the Synch view			if (configuration != null) {				SVNSynchronizeParticipant sync = (SVNSynchronizeParticipant) configuration.getParticipant();				IResource[] roots = sync.getResources();				// TODO: reduce this array to just the roots that were affected by this commit				sync.refresh(roots, monitor);			}		}    }