package org.tmatesoft.svn.core.internal.wc2.remote; import java.util.Collection; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.internal.wc16.SVNDiffClient16; import org.tmatesoft.svn.core.internal.wc2.SvnRemoteOperationRunner; import org.tmatesoft.svn.core.internal.wc2.SvnWcGeneration; import org.tmatesoft.svn.core.internal.wc2.ng.SvnNewDiffGenerator; import org.tmatesoft.svn.core.wc.DefaultSVNDiffGenerator; import org.tmatesoft.svn.core.wc.ISVNDiffGenerator; import org.tmatesoft.svn.core.wc2.SvnDiff; import org.tmatesoft.svn.core.wc2.SvnTarget; public class SvnRemoteDiff extends SvnRemoteOperationRunner<Void, SvnDiff> { @Override public boolean isApplicable(SvnDiff operation, SvnWcGeneration wcGeneration) throws SVNException { // final Collection<SvnTarget> targets = operation.getTargets(); // for (SvnTarget target : targets) { // if (!target.isURL()) { // return false; // } // } // return false; } @Override protected Void run() throws SVNException { assert getOperation().getTargets().size() == 1 || getOperation().getTargets().size() == 2; final SVNDiffClient16 diffClient = new SVNDiffClient16(getOperation().getRepositoryPool(), getOperation().getOptions()); diffClient.setDiffGenerator(getDiffGenerator()); diffClient.setMergeOptions(getOperation().getDiffOptions()); final Collection<SvnTarget> targets = getOperation().getTargets(); if (getOperation().getSource() != null) { diffClient.doDiff(getOperation().getSource().getURL(), getOperation().getSource().getResolvedPegRevision(), getOperation().getStartRevision(), getOperation().getEndRevision(), getOperation().getDepth(), !getOperation().isIgnoreAncestry(), getOperation().getOutput()); } else { diffClient.doDiff(getOperation().getFirstSource().getURL(), getOperation().getFirstSource().getPegRevision(), getOperation().getSecondSource().getURL(), getOperation().getSecondSource().getPegRevision(), getOperation().getDepth(), !getOperation().isIgnoreAncestry(), getOperation().getOutput()); } return null; } private ISVNDiffGenerator getDiffGenerator() { ISVNDiffGenerator generator = getOperation().getDiffGenerator() != null ? new SvnNewDiffGenerator(getOperation().getDiffGenerator()) : new DefaultSVNDiffGenerator(); generator.setDiffAdded(true); return generator; } }