package org.tmatesoft.svn.core.internal.wc2.ng; import java.io.File; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.internal.wc.SVNExternal; import org.tmatesoft.svn.core.internal.wc.SVNFileUtil; import org.tmatesoft.svn.core.internal.wc17.SVNExternalsStore; import org.tmatesoft.svn.core.internal.wc17.SVNWCContext; import org.tmatesoft.svn.core.wc2.SvnCanonicalizeUrls; import org.tmatesoft.svn.core.wc2.SvnTarget; public class SvnNgCanonicalizeUrls extends SvnNgOperationRunner<Void, SvnCanonicalizeUrls> { @Override protected Void run(SVNWCContext context) throws SVNException { File lockRootPath = null; SVNExternalsStore store = getOperation().isIgnoreExternals() ? null : new SVNExternalsStore(); try { lockRootPath = context.acquireWriteLock(getFirstTarget(), false, true); context.canonicalizeURLs(getFirstTarget(), store, getOperation().isOmitDefaultPort()); } finally { if (lockRootPath != null) { context.releaseWriteLock(lockRootPath); } } if (!getOperation().isIgnoreExternals()) { for (File path : store.getNewExternals().keySet()) { String externalPropertyValue = store.getNewExternals().get(path); SVNExternal[] externals = SVNExternal.parseExternals(path, externalPropertyValue); for (int i = 0; i < externals.length; i++) { File externalPath = SVNFileUtil.createFilePath(path, externals[i].getPath()); if (externalPath.isDirectory()) { SvnCanonicalizeUrls canonicalize = getOperation().getOperationFactory().createCanonicalizeUrls(); canonicalize.setSingleTarget(SvnTarget.fromFile(externalPath)); canonicalize.setOmitDefaultPort(getOperation().isOmitDefaultPort()); canonicalize.run(); } } } } return null; } }