Return-Path: Delivered-To: apmail-maven-scm-commits-archive@www.apache.org Received: (qmail 99482 invoked from network); 26 Feb 2006 15:06:30 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 26 Feb 2006 15:06:30 -0000 Received: (qmail 63454 invoked by uid 500); 26 Feb 2006 15:06:30 -0000 Delivered-To: apmail-maven-scm-commits-archive@maven.apache.org Received: (qmail 63442 invoked by uid 500); 26 Feb 2006 15:06:30 -0000 Mailing-List: contact scm-commits-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: scm-commits@maven.apache.org Delivered-To: mailing list scm-commits@maven.apache.org Received: (qmail 63428 invoked by uid 99); 26 Feb 2006 15:06:30 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 26 Feb 2006 07:06:29 -0800 X-ASF-Spam-Status: No, hits=-8.6 required=10.0 tests=ALL_TRUSTED,INFO_TLD,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Sun, 26 Feb 2006 07:06:25 -0800 Received: (qmail 99326 invoked by uid 65534); 26 Feb 2006 15:06:04 -0000 Message-ID: <20060226150604.99325.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r381101 [1/4] - in /maven/scm/trunk/sandbox/maven-scm-provider-svnjava: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/maven/ src/main/java/org/apache/maven/scm/ src/main/java/org/apac... Date: Sun, 26 Feb 2006 15:05:58 -0000 To: scm-commits@maven.apache.org From: evenisse@apache.org X-Mailer: svnmailer-1.0.7 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: evenisse Date: Sun Feb 26 07:05:52 2006 New Revision: 381101 URL: http://svn.apache.org/viewcvs?rev=381101&view=rev Log: [SCM-13] pure Java SVN interface Submitted by David Hawkins It's in sandbox until 1.0.4 of javasvn will be release, so we'll can use file protocol and test it with TCK. Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/ (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/pom.xml (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/SvnJavaScmProvider.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/add/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/add/SvnAddCommand.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/changelog/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/changelog/SvnChangeLogCommand.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkin/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkin/SvnCheckInCommand.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkout/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkout/SvnCheckOutCommand.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/diff/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/diff/SvnDiffCommand.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/remove/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/remove/SvnRemoveCommand.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/status/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/status/SvnStatusCommand.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/tag/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/tag/SvnTagCommand.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/update/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/update/SvnUpdateCommand.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/repository/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/repository/SvnJavaScmProviderRepository.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/util/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/util/ScmFileEventHandler.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/util/SvnJavaUtil.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/util/SvnStatusHandler.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/resources/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/resources/META-INF/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/resources/META-INF/plexus/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/resources/META-INF/plexus/components.xml (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/SvnJavaTestUtils.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/SvnJavaTckTestCommand.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/checkin/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/checkin/SvnCheckInCommandTckTest.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/checkout/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/checkout/SvnCheckOutCommandTckTest.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/diff/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/diff/SvnDiffCommandTckTest.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/status/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/status/SvnStatusCommandTckTest.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/tag/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/tag/SvnTagCommandTckTest.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/update/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/command/update/SvnUpdateCommandTckTest.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/repository/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/java/org/apache/maven/scm/provider/svn/svnjava/repository/SvnScmProviderRepositoryTest.java (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/resources/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/resources/checkout.dump maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/resources/svn/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/resources/svn-test.properties (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/resources/svn/changelog/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/resources/svn/changelog/svnlog.txt (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/resources/svn/changelog/svnlog2.txt (with props) maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/resources/tck/ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/test/resources/tck/tck.dump Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/ ------------------------------------------------------------------------------ --- svn:ignore (added) +++ svn:ignore Sun Feb 26 07:05:52 2006 @@ -0,0 +1,4 @@ +maven-scm-provider-svnjava.iws +target +maven-scm-provider-svnjava.iml +maven-scm-provider-svnjava.ipr Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/pom.xml URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/pom.xml?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/pom.xml (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/pom.xml Sun Feb 26 07:05:52 2006 @@ -0,0 +1,45 @@ + + + maven-scm-providers-svn + org.apache.maven.scm + 1.0-beta-3-SNAPSHOT + + 4.0.0 + maven-scm-provider-svnjava + Maven SCM Subversion Provider - Java Impl. + 1.0-beta-3-SNAPSHOT + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + **/*TckTest.java + + + + + + + + org.apache.maven.scm + maven-scm-provider-svn-commons + 1.0-beta-3-SNAPSHOT + + + org.tmate + javasvn + 1.0.3 + + + + Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/pom.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/SvnJavaScmProvider.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/SvnJavaScmProvider.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/SvnJavaScmProvider.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/SvnJavaScmProvider.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,146 @@ +package org.apache.maven.scm.provider.svn.svnjava; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.svn.AbstractSvnScmProvider; +import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.svnjava.command.add.SvnAddCommand; +import org.apache.maven.scm.provider.svn.svnjava.command.changelog.SvnChangeLogCommand; +import org.apache.maven.scm.provider.svn.svnjava.command.checkin.SvnCheckInCommand; +import org.apache.maven.scm.provider.svn.svnjava.command.checkout.SvnCheckOutCommand; +import org.apache.maven.scm.provider.svn.svnjava.command.diff.SvnDiffCommand; +import org.apache.maven.scm.provider.svn.svnjava.command.remove.SvnRemoveCommand; +import org.apache.maven.scm.provider.svn.svnjava.command.status.SvnStatusCommand; +import org.apache.maven.scm.provider.svn.svnjava.command.tag.SvnTagCommand; +import org.apache.maven.scm.provider.svn.svnjava.command.update.SvnUpdateCommand; +import org.apache.maven.scm.provider.svn.svnjava.repository.SvnJavaScmProviderRepository; +import org.apache.maven.scm.repository.ScmRepositoryException; +import org.codehaus.plexus.util.StringUtils; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; +import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; + +import java.util.Collections; + +/** + * @author David Hawkins + * @version $Id$ + */ +public class SvnJavaScmProvider + extends AbstractSvnScmProvider +{ + public static final String COMMAND_LINE = "JavaSVN Library"; + + private static boolean initialized = false; + + public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter ) + throws ScmRepositoryException + { + initialize(); + + try + { + SVNURL url = SVNURL.parseURIEncoded( scmSpecificUrl ); + + // The existing svn provider pattern is to strip the username (if any) + // from the url. + String strUrl = url.toString(); + if ( url.getUserInfo() != null ) + { + strUrl = StringUtils.replace( strUrl, url.getUserInfo() + "@", "" ); + } + + return new SvnJavaScmProviderRepository( url, strUrl ); + } + catch ( SVNException e ) + { + throw new ScmRepositoryException( "The scm url is invalid: " + e.getMessage(), + Collections.singletonList( e.getMessage() ) ); + } + } + + protected SvnCommand getAddCommand() + { + return new SvnAddCommand(); + } + + protected SvnCommand getChangeLogCommand() + { + return new SvnChangeLogCommand(); + } + + protected SvnCommand getCheckInCommand() + { + return new SvnCheckInCommand(); + } + + protected SvnCommand getCheckOutCommand() + { + return new SvnCheckOutCommand(); + } + + protected SvnCommand getDiffCommand() + { + return new SvnDiffCommand(); + } + + protected SvnCommand getRemoveCommand() + { + return new SvnRemoveCommand(); + } + + protected SvnCommand getStatusCommand() + { + return new SvnStatusCommand(); + } + + protected SvnCommand getTagCommand() + { + return new SvnTagCommand(); + } + + protected SvnCommand getUpdateCommand() + { + return new SvnUpdateCommand(); + } + + /* + * Initializes the library to work with a repository either via svn:// (and + * svn+ssh://) or via http:// (and https://) + */ + private static void initialize() + { + if ( initialized ) + { + return; + } + + /* + * for DAV (over http and https) + */ + DAVRepositoryFactory.setup(); + + /* + * for svn (over svn and svn+ssh) + */ + SVNRepositoryFactoryImpl.setup(); + + initialized = true; + } +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/SvnJavaScmProvider.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/SvnJavaScmProvider.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/add/SvnAddCommand.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/add/SvnAddCommand.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/add/SvnAddCommand.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/add/SvnAddCommand.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,109 @@ +package org.apache.maven.scm.provider.svn.svnjava.command.add; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.command.add.AbstractAddCommand; +import org.apache.maven.scm.command.add.AddScmResult; +import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.svnjava.SvnJavaScmProvider; +import org.apache.maven.scm.provider.svn.svnjava.repository.SvnJavaScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.util.SvnJavaUtil; +import org.tmatesoft.svn.core.SVNCancelException; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.wc.ISVNEventHandler; +import org.tmatesoft.svn.core.wc.SVNClientManager; +import org.tmatesoft.svn.core.wc.SVNEvent; +import org.tmatesoft.svn.core.wc.SVNEventAction; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Brett Porter + * @author David Hawkins + * @version $Id$ + */ +public class SvnAddCommand + extends AbstractAddCommand + implements SvnCommand +{ + protected ScmResult executeAddCommand( ScmProviderRepository repository, ScmFileSet fileSet, String message, + boolean binary ) + throws ScmException + { + if ( fileSet.getFiles().length == 0 ) + { + throw new ScmException( "You must provide at least one file/directory to add" ); + } + + final List filesAdded = new ArrayList(); + + SvnJavaScmProviderRepository javaRepo = (SvnJavaScmProviderRepository) repository; + + SVNClientManager clientManager = javaRepo.getClientManager(); + + try + { + clientManager.getWCClient().setEventHandler( new ISVNEventHandler() + { + + public void handleEvent( SVNEvent event, double progress ) + { + if ( event.getAction() == SVNEventAction.ADD ) + { + filesAdded.add( event.getFile() ); + } + } + + public void checkCancelled() + throws SVNCancelException + { + // null + } + } ); + + File[] files = fileSet.getFiles(); + + for ( int i = 0; i < files.length; i++ ) + { + File fileToAdd = new File( fileSet.getBasedir(), files[i].toString() ); + + getLogger().debug( "SVN adding file: " + fileToAdd.getAbsolutePath() ); + + SvnJavaUtil.add( clientManager, fileToAdd, false ); + } + } + catch ( SVNException e ) + { + return new AddScmResult( SvnJavaScmProvider.COMMAND_LINE, "The svn operation failed.", e.getMessage(), + false ); + } + finally + { + clientManager.getWCClient().setEventHandler( null ); + } + + return new AddScmResult( null, filesAdded ); + } + + +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/add/SvnAddCommand.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/add/SvnAddCommand.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/changelog/SvnChangeLogCommand.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/changelog/SvnChangeLogCommand.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/changelog/SvnChangeLogCommand.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/changelog/SvnChangeLogCommand.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,122 @@ +package org.apache.maven.scm.provider.svn.svnjava.command.changelog; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.ChangeFile; +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand; +import org.apache.maven.scm.command.changelog.ChangeLogScmResult; +import org.apache.maven.scm.command.changelog.ChangeLogSet; +import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.svn.SvnChangeSet; +import org.apache.maven.scm.provider.svn.SvnTagBranchUtils; +import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.svnjava.SvnJavaScmProvider; +import org.apache.maven.scm.provider.svn.svnjava.repository.SvnJavaScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.util.SvnJavaUtil; +import org.tmatesoft.svn.core.ISVNLogEntryHandler; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNLogEntry; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.wc.SVNRevision; + +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +/** + * @author Emmanuel Venisse + * @version $Id$ + */ +public class SvnChangeLogCommand + extends AbstractChangeLogCommand + implements SvnCommand +{ + protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repo, ScmFileSet fileSet, + Date startDate, Date endDate, String branch, + String datePattern ) + throws ScmException + { + SvnJavaScmProviderRepository javaRepo = (SvnJavaScmProviderRepository) repo; + + SVNRevision startRevision = ( startDate != null ) ? SVNRevision.create( startDate ) : SVNRevision.PREVIOUS; + SVNRevision endRevision = ( endDate != null ) ? SVNRevision.create( endDate ) : SVNRevision.HEAD; + + try + { + SVNURL url = javaRepo.getSvnUrl(); + + if ( branch != null ) + { + url = SVNURL.parseURIEncoded( SvnTagBranchUtils.resolveBranchUrl( javaRepo, url.toString() ) ); + } + + ChangeLogHandler handler = new ChangeLogHandler( startDate, endDate ); + + SvnJavaUtil.changelog( javaRepo.getClientManager(), url, startRevision, endRevision, true, // stopOnCopy + true, // reportPaths + handler ); + + return new ChangeLogScmResult( SvnJavaScmProvider.COMMAND_LINE, handler.getChangeSets() ); + } + catch ( SVNException e ) + { + return new ChangeLogScmResult( SvnJavaScmProvider.COMMAND_LINE, "SVN Changelog failed.", e.getMessage(), + false ); + } + } + + // ---------------------------------------------------------------------- + // + // ---------------------------------------------------------------------- + + protected static class ChangeLogHandler + implements ISVNLogEntryHandler + { + private ChangeLogSet changeLogSet; + + private List changeSets = new ArrayList(); + + public ChangeLogHandler( Date startDate, Date endDate ) + { + changeLogSet = new ChangeLogSet( startDate, endDate ); + } + + public void handleLogEntry( SVNLogEntry logEntry ) + throws SVNException + { + List changedFiles = new ArrayList(); + + for ( Iterator i = logEntry.getChangedPaths().keySet().iterator(); i.hasNext(); ) + { + changedFiles.add( new ChangeFile( (String) i.next() ) ); + } + + changeSets.add( + new SvnChangeSet( logEntry.getDate(), logEntry.getMessage(), logEntry.getAuthor(), changedFiles ) ); + } + + public ChangeLogSet getChangeSets() + { + changeLogSet.setChangeSets( changeSets ); + + return changeLogSet; + } + } +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/changelog/SvnChangeLogCommand.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/changelog/SvnChangeLogCommand.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkin/SvnCheckInCommand.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkin/SvnCheckInCommand.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkin/SvnCheckInCommand.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkin/SvnCheckInCommand.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,115 @@ +package org.apache.maven.scm.provider.svn.svnjava.command.checkin; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFile; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmFileStatus; +import org.apache.maven.scm.command.checkin.AbstractCheckInCommand; +import org.apache.maven.scm.command.checkin.CheckInScmResult; +import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.svnjava.SvnJavaScmProvider; +import org.apache.maven.scm.provider.svn.svnjava.repository.SvnJavaScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.util.SvnJavaUtil; +import org.codehaus.plexus.util.StringUtils; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNNodeKind; +import org.tmatesoft.svn.core.wc.SVNEvent; +import org.tmatesoft.svn.core.wc.SVNEventAction; + +import java.io.File; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * @author Trygve Laugstøl + * @version $Id$ + */ +public class SvnCheckInCommand + extends AbstractCheckInCommand + implements SvnCommand +{ + protected CheckInScmResult executeCheckInCommand( ScmProviderRepository repo, ScmFileSet fileSet, String message, + String tag ) + throws ScmException + { + if ( StringUtils.isNotEmpty( tag ) ) + { + throw new ScmException( "This provider can't handle tags." ); + } + + getLogger().info( "SVN commit directory: " + fileSet.getBasedir().getAbsolutePath() ); + + SvnJavaScmProviderRepository javaRepo = (SvnJavaScmProviderRepository) repo; + + SvnJavaUtil.GenericEventHandler handler = new SvnJavaUtil.GenericEventHandler(); + + javaRepo.getClientManager().getCommitClient().setEventHandler( handler ); + + try + { + File[] tmpPaths = fileSet.getFiles(); + File[] paths; + if ( tmpPaths == null || tmpPaths.length == 0 ) + { + paths = new File[]{fileSet.getBasedir()}; + } + else + { + paths = new File[tmpPaths.length]; + for ( int i = 0; i < tmpPaths.length; i++ ) + { + if ( tmpPaths[i].isAbsolute() ) + { + paths[i] = tmpPaths[i]; + } + else + { + paths[i] = new File( fileSet.getBasedir(), tmpPaths[i].toString() ); + } + } + } + + SvnJavaUtil.commit( javaRepo.getClientManager(), paths, false, message, true ); + + List files = new ArrayList(); + for ( Iterator iter = handler.getEvents().iterator(); iter.hasNext(); ) + { + SVNEvent event = (SVNEvent) iter.next(); + if ( event.getExpectedAction() != SVNEventAction.COMMIT_COMPLETED && + event.getExpectedAction() != SVNEventAction.COMMIT_DELTA_SENT && + event.getNodeKind() == SVNNodeKind.FILE ) + { + files.add( new ScmFile( event.getFile().toString(), ScmFileStatus.CHECKED_IN ) ); + } + } + + return new CheckInScmResult( SvnJavaScmProvider.COMMAND_LINE, files ); + } + catch ( SVNException e ) + { + return new CheckInScmResult( SvnJavaScmProvider.COMMAND_LINE, "SVN commit failed.", e.getMessage(), false ); + } + finally + { + javaRepo.getClientManager().getCommitClient().setEventHandler( null ); + } + } +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkin/SvnCheckInCommand.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkin/SvnCheckInCommand.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkout/SvnCheckOutCommand.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkout/SvnCheckOutCommand.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkout/SvnCheckOutCommand.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkout/SvnCheckOutCommand.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,81 @@ +package org.apache.maven.scm.provider.svn.svnjava.command.checkout; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.command.checkout.AbstractCheckOutCommand; +import org.apache.maven.scm.command.checkout.CheckOutScmResult; +import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.svn.SvnTagBranchUtils; +import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.SvnJavaScmProvider; +import org.apache.maven.scm.provider.svn.svnjava.repository.SvnJavaScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.util.ScmFileEventHandler; +import org.apache.maven.scm.provider.svn.svnjava.util.SvnJavaUtil; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.wc.SVNRevision; + +/** + * @author Emmanuel Venisse + * @version $Id$ + */ +public class SvnCheckOutCommand + extends AbstractCheckOutCommand + implements SvnCommand +{ + protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag ) + throws ScmException + { + getLogger().info( "SVN checkout directory: " + fileSet.getBasedir().getAbsolutePath() ); + + SvnScmProviderRepository repository = (SvnScmProviderRepository) repo; + + String url = repository.getUrl(); + if ( tag != null ) + { + url = SvnTagBranchUtils.resolveTagUrl( repository, tag ); + } + + SvnJavaScmProviderRepository javaRepo = (SvnJavaScmProviderRepository) repo; + + ScmFileEventHandler handler = new ScmFileEventHandler( getLogger() ); + + javaRepo.getClientManager().getUpdateClient().setEventHandler( handler ); + + try + { + SvnJavaUtil.checkout( javaRepo.getClientManager(), SVNURL.parseURIEncoded( url ), SVNRevision.HEAD, fileSet + .getBasedir(), true ); + + return new CheckOutScmResult( SvnJavaScmProvider.COMMAND_LINE, handler.getFiles() ); + } + catch ( SVNException e ) + { + return new CheckOutScmResult( SvnJavaScmProvider.COMMAND_LINE, "SVN checkout failed.", e.getMessage(), + false ); + } + finally + { + javaRepo.getClientManager().getUpdateClient().setEventHandler( null ); + } + } + + +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkout/SvnCheckOutCommand.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/checkout/SvnCheckOutCommand.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/diff/SvnDiffCommand.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/diff/SvnDiffCommand.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/diff/SvnDiffCommand.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/diff/SvnDiffCommand.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,97 @@ +package org.apache.maven.scm.provider.svn.svnjava.command.diff; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.command.diff.AbstractDiffCommand; +import org.apache.maven.scm.command.diff.DiffScmResult; +import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.command.diff.SvnDiffConsumer; +import org.apache.maven.scm.provider.svn.svnjava.SvnJavaScmProvider; +import org.apache.maven.scm.provider.svn.svnjava.repository.SvnJavaScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.util.ScmFileEventHandler; +import org.apache.maven.scm.provider.svn.svnjava.util.SvnJavaUtil; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.wc.SVNRevision; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; + +/** + * @author Brett Porter + * @version $Id$ + */ +public class SvnDiffCommand + extends AbstractDiffCommand + implements SvnCommand +{ + protected DiffScmResult executeDiffCommand( ScmProviderRepository repo, ScmFileSet fileSet, String startRevision, + String endRevision ) + throws ScmException + { + getLogger().info( "SVN diff directory: " + fileSet.getBasedir().getAbsolutePath() ); + + SvnJavaScmProviderRepository javaRepo = (SvnJavaScmProviderRepository) repo; + + ScmFileEventHandler handler = new ScmFileEventHandler( getLogger() ); + + try + { + javaRepo.getClientManager().getDiffClient().setEventHandler( handler ); + + SVNRevision start = ( startRevision == null ) ? SVNRevision.COMMITTED : SVNRevision.parse( startRevision ); + SVNRevision end = ( endRevision == null ) ? SVNRevision.WORKING : SVNRevision.parse( endRevision ); + + ByteArrayOutputStream out = + SvnJavaUtil.diff( javaRepo.getClientManager(), fileSet.getBasedir(), start, end ); + + SvnDiffConsumer consumer = new SvnDiffConsumer( getLogger(), fileSet.getBasedir() ); + + ByteArrayInputStream bis = new ByteArrayInputStream( out.toByteArray() ); + + BufferedReader in = new BufferedReader( new InputStreamReader( bis ) ); + + String line = in.readLine(); + while ( line != null ) + { + consumer.consumeLine( line ); + + line = in.readLine(); + } + + return new DiffScmResult( SvnJavaScmProvider.COMMAND_LINE, consumer.getChangedFiles(), + consumer.getDifferences(), consumer.getPatch() ); + } + catch ( IOException e ) + { + return new DiffScmResult( SvnJavaScmProvider.COMMAND_LINE, "SVN diff failed.", e.getMessage(), false ); + } + catch ( SVNException e ) + { + return new DiffScmResult( SvnJavaScmProvider.COMMAND_LINE, "SVN diff failed.", e.getMessage(), false ); + } + finally + { + javaRepo.getClientManager().getDiffClient().setEventHandler( null ); + } + } +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/diff/SvnDiffCommand.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/diff/SvnDiffCommand.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/remove/SvnRemoveCommand.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/remove/SvnRemoveCommand.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/remove/SvnRemoveCommand.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/remove/SvnRemoveCommand.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,71 @@ +package org.apache.maven.scm.provider.svn.svnjava.command.remove; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.command.remove.AbstractRemoveCommand; +import org.apache.maven.scm.command.remove.RemoveScmResult; +import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.svnjava.SvnJavaScmProvider; +import org.apache.maven.scm.provider.svn.svnjava.repository.SvnJavaScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.util.ScmFileEventHandler; +import org.apache.maven.scm.provider.svn.svnjava.util.SvnJavaUtil; +import org.tmatesoft.svn.core.SVNException; + +/** + * @author Brett Porter + * @version $Id$ + */ +public class SvnRemoveCommand + extends AbstractRemoveCommand + implements SvnCommand +{ + protected ScmResult executeRemoveCommand( ScmProviderRepository repo, ScmFileSet fileSet, String message ) + throws ScmException + { + if ( fileSet.getFiles().length == 0 ) + { + throw new ScmException( "You must provide at least one file/directory to remove" ); + } + + getLogger().info( "SVN remove working directory: " + fileSet.getBasedir().getAbsolutePath() ); + + SvnJavaScmProviderRepository javaRepo = (SvnJavaScmProviderRepository) repo; + + ScmFileEventHandler handler = new ScmFileEventHandler( getLogger() ); + + javaRepo.getClientManager().getWCClient().setEventHandler( handler ); + + try + { + SvnJavaUtil.delete( javaRepo.getClientManager(), fileSet.getFiles(), true ); + + return new RemoveScmResult( SvnJavaScmProvider.COMMAND_LINE, handler.getFiles() ); + } + catch ( SVNException e ) + { + return new RemoveScmResult( SvnJavaScmProvider.COMMAND_LINE, "SVN remove failed.", e.getMessage(), false ); + } + finally + { + javaRepo.getClientManager().getWCClient().setEventHandler( null ); + } + } +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/remove/SvnRemoveCommand.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/remove/SvnRemoveCommand.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/status/SvnStatusCommand.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/status/SvnStatusCommand.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/status/SvnStatusCommand.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/status/SvnStatusCommand.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,61 @@ +package org.apache.maven.scm.provider.svn.svnjava.command.status; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.command.status.AbstractStatusCommand; +import org.apache.maven.scm.command.status.StatusScmResult; +import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.svnjava.SvnJavaScmProvider; +import org.apache.maven.scm.provider.svn.svnjava.repository.SvnJavaScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.util.SvnJavaUtil; +import org.apache.maven.scm.provider.svn.svnjava.util.SvnStatusHandler; +import org.tmatesoft.svn.core.SVNException; + +/** + * @author Brett Porter + * @version $Id$ + */ +public class SvnStatusCommand + extends AbstractStatusCommand + implements SvnCommand +{ + protected StatusScmResult executeStatusCommand( ScmProviderRepository repo, ScmFileSet fileSet ) + throws ScmException + { + getLogger().info( "SVN status directory: " + fileSet.getBasedir().getAbsolutePath() ); + + SvnJavaScmProviderRepository javaRepo = (SvnJavaScmProviderRepository) repo; + + SvnStatusHandler handler = new SvnStatusHandler(); + + try + { + SvnJavaUtil.status( javaRepo.getClientManager(), fileSet.getBasedir(), true, // isRecursive + true, // isRemote + handler ); + + return new StatusScmResult( SvnJavaScmProvider.COMMAND_LINE, handler.getFiles() ); + } + catch ( SVNException e ) + { + return new StatusScmResult( SvnJavaScmProvider.COMMAND_LINE, "SVN status failed.", e.getMessage(), false ); + } + } +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/status/SvnStatusCommand.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/status/SvnStatusCommand.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/tag/SvnTagCommand.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/tag/SvnTagCommand.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/tag/SvnTagCommand.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/tag/SvnTagCommand.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,111 @@ +package org.apache.maven.scm.provider.svn.svnjava.command.tag; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFile; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmFileStatus; +import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.command.tag.AbstractTagCommand; +import org.apache.maven.scm.command.tag.TagScmResult; +import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.svn.SvnTagBranchUtils; +import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.SvnJavaScmProvider; +import org.apache.maven.scm.provider.svn.svnjava.repository.SvnJavaScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.util.SvnJavaUtil; +import org.codehaus.plexus.util.FileUtils; +import org.tmatesoft.svn.core.SVNCommitInfo; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNURL; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * @author Brett Porter + * @version $Id$ + * @todo since this is just a copy, use that instead. + */ +public class SvnTagCommand + extends AbstractTagCommand + implements SvnCommand +{ + public ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag ) + throws ScmException + { + if ( tag == null ) + { + throw new ScmException( "tag must be specified" ); + } + + if ( fileSet.getFiles().length != 0 ) + { + throw new ScmException( "This provider doesn't support tagging subsets of a directory" ); + } + + getLogger().info( "SVN checkout directory: " + fileSet.getBasedir().getAbsolutePath() ); + + SvnScmProviderRepository repository = (SvnScmProviderRepository) repo; + + SvnJavaScmProviderRepository javaRepo = (SvnJavaScmProviderRepository) repo; + + try + { + SVNURL destURL = SVNURL.parseURIEncoded( SvnTagBranchUtils.resolveTagUrl( repository, tag ) ); + + SVNCommitInfo info = SvnJavaUtil.copy( javaRepo.getClientManager(), javaRepo.getSvnUrl(), destURL, false, + "[maven-scm] copy for tag " + tag ); + + if ( info.getError() != null ) + { + return new TagScmResult( SvnJavaScmProvider.COMMAND_LINE, "SVN tag failed.", + info.getError().getMessage(), false ); + } + + // The copy command doesn't return a list of files that were tagged, + // so manually build the list from the contents of the fileSet.getBaseDir. + List fileList = new ArrayList(); + List files = null; + try + { + files = FileUtils.getFiles( fileSet.getBasedir(), "**", "**/.svn/**", false ); + } + catch ( IOException e ) + { + throw new ScmException( "Error while building list of tagged files.", e ); + } + + for ( Iterator i = files.iterator(); i.hasNext(); ) + { + File f = (File) i.next(); + fileList.add( new ScmFile( f.getPath(), ScmFileStatus.TAGGED ) ); + } + + return new TagScmResult( SvnJavaScmProvider.COMMAND_LINE, fileList ); + } + catch ( SVNException e ) + { + return new TagScmResult( SvnJavaScmProvider.COMMAND_LINE, "SVN tag failed.", e.getMessage(), false ); + } + } +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/tag/SvnTagCommand.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/tag/SvnTagCommand.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/update/SvnUpdateCommand.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/update/SvnUpdateCommand.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/update/SvnUpdateCommand.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/update/SvnUpdateCommand.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,111 @@ +package org.apache.maven.scm.provider.svn.svnjava.command.update; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.command.changelog.ChangeLogCommand; +import org.apache.maven.scm.command.update.AbstractUpdateCommand; +import org.apache.maven.scm.command.update.UpdateScmResult; +import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.svn.SvnTagBranchUtils; +import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.SvnJavaScmProvider; +import org.apache.maven.scm.provider.svn.svnjava.command.changelog.SvnChangeLogCommand; +import org.apache.maven.scm.provider.svn.svnjava.repository.SvnJavaScmProviderRepository; +import org.apache.maven.scm.provider.svn.svnjava.util.ScmFileEventHandler; +import org.apache.maven.scm.provider.svn.svnjava.util.SvnJavaUtil; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.wc.SVNRevision; + +/** + * @author Emmanuel Venisse + * @version $Id$ + */ +public class SvnUpdateCommand + extends AbstractUpdateCommand + implements SvnCommand +{ + + protected UpdateScmResult executeUpdateCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag ) + throws ScmException + { + SvnScmProviderRepository repository = (SvnScmProviderRepository) repo; + + getLogger().info( "SVN update directory: " + fileSet.getBasedir().getAbsolutePath() ); + + SvnJavaScmProviderRepository javaRepo = (SvnJavaScmProviderRepository) repo; + + try + { + ScmFileEventHandler handler = new ScmFileEventHandler( getLogger() ); + + javaRepo.getClientManager().getUpdateClient().setEventHandler( handler ); + + if ( tag == null || SvnTagBranchUtils.isRevisionSpecifier( tag ) ) + { + SvnJavaUtil.update( javaRepo.getClientManager(), fileSet.getBasedir(), getSVNRevision( tag ), true ); + } + else + { + // The tag specified does not appear to be numeric, so assume it refers + // to a branch/tag url and perform a switch operation rather than update + SvnJavaUtil.switchToURL( javaRepo.getClientManager(), fileSet.getBasedir(), + SVNURL.parseURIEncoded( SvnTagBranchUtils.resolveTagUrl( repository, tag ) ), + SVNRevision.HEAD, true ); + } + + return new UpdateScmResult( SvnJavaScmProvider.COMMAND_LINE, handler.getFiles() ); + } + catch ( SVNException e ) + { + return new UpdateScmResult( SvnJavaScmProvider.COMMAND_LINE, "SVN update failed.", e.getMessage(), false ); + } + finally + { + javaRepo.getClientManager().getUpdateClient().setEventHandler( null ); + } + } + + private static SVNRevision getSVNRevision( String revision ) + { + if ( revision == null || !SvnTagBranchUtils.isRevisionSpecifier( revision ) ) + { + return SVNRevision.HEAD; + } + else + { + return SVNRevision.parse( revision ); + } + } + + /** + * @see org.apache.maven.scm.command.update.AbstractUpdateCommand#getChangeLogCommand() + */ + protected ChangeLogCommand getChangeLogCommand() + { + SvnChangeLogCommand command = new SvnChangeLogCommand(); + + command.setLogger( getLogger() ); + + return command; + } + + +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/update/SvnUpdateCommand.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/command/update/SvnUpdateCommand.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/repository/SvnJavaScmProviderRepository.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/repository/SvnJavaScmProviderRepository.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/repository/SvnJavaScmProviderRepository.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/repository/SvnJavaScmProviderRepository.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,134 @@ +package org.apache.maven.scm.provider.svn.svnjava.repository; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.wc.ISVNOptions; +import org.tmatesoft.svn.core.wc.SVNClientManager; +import org.tmatesoft.svn.core.wc.SVNWCUtil; + +/** + * @author Emmanuel Venisse + * @version $Id$ + */ +public class SvnJavaScmProviderRepository + extends SvnScmProviderRepository +{ + private SVNURL svnUrl; + + private SVNClientManager clientManager; + + public SvnJavaScmProviderRepository( SVNURL svnUrl, String strUrl ) + { + super( strUrl, null, null ); + + setUser( svnUrl.getUserInfo() ); + + setPassword( null ); + + this.svnUrl = svnUrl; + + if ( getUser() != null ) + { + System.getProperties().setProperty( "javasvn.ssh2.username", getUser() ); + } + if ( getPassword() != null ) + { + System.getProperties().setProperty( "javasvn.ssh2.password", getPassword() ); + } + + initializeClientManager(); + } + + public SVNURL getSvnUrl() + { + return svnUrl; + } + + public SVNClientManager getClientManager() + { + return clientManager; + } + + public void setPrivateKey( String privateKey ) + { + super.setPrivateKey( privateKey ); + + if ( getPrivateKey() != null ) + { + System.getProperties().setProperty( "javasvn.ssh2.key", getPrivateKey() ); + } + + initializeClientManager(); + } + + public void setPassphrase( String passphrase ) + { + super.setPassphrase( passphrase ); + + if ( getPassphrase() != null ) + { + System.getProperties().setProperty( "javasvn.ssh2.passphrase", getPassphrase() ); + } + + initializeClientManager(); + } + + public void setUser( String user ) + { + super.setUser( user ); + + if ( getUser() != null ) + { + System.getProperties().setProperty( "javasvn.ssh2.username", getUser() ); + } + + initializeClientManager(); + } + + public void setPassword( String password ) + { + super.setPassword( password ); + + if ( getPassword() != null ) + { + System.getProperties().setProperty( "javasvn.ssh2.password", getPassword() ); + } + + initializeClientManager(); + } + + private void initializeClientManager() + { + /* + * Creates a default run-time configuration options driver. Default options + * created in this way use the Subversion run-time configuration area (for + * instance, on a Windows platform it can be found in the '%APPDATA%\Subversion' + * directory). + * + * readonly = true - not to save any configuration changes that can be done + * during the program run to a config file (config settings will only + * be read to initialize; to enable changes the readonly flag should be set + * to false). + * + */ + ISVNOptions options = SVNWCUtil.createDefaultOptions( true ); + + clientManager = SVNClientManager.newInstance( options, SVNWCUtil.createDefaultAuthenticationManager() ); + } +} Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/repository/SvnJavaScmProviderRepository.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/repository/SvnJavaScmProviderRepository.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/util/ScmFileEventHandler.java URL: http://svn.apache.org/viewcvs/maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/util/ScmFileEventHandler.java?rev=381101&view=auto ============================================================================== --- maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/util/ScmFileEventHandler.java (added) +++ maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/util/ScmFileEventHandler.java Sun Feb 26 07:05:52 2006 @@ -0,0 +1,103 @@ +package org.apache.maven.scm.provider.svn.svnjava.util; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.scm.ScmFile; +import org.apache.maven.scm.ScmFileStatus; +import org.apache.maven.scm.log.ScmLogger; +import org.codehaus.plexus.util.StringUtils; +import org.tmatesoft.svn.core.SVNCancelException; +import org.tmatesoft.svn.core.SVNNodeKind; +import org.tmatesoft.svn.core.wc.ISVNEventHandler; +import org.tmatesoft.svn.core.wc.SVNEvent; +import org.tmatesoft.svn.core.wc.SVNEventAction; + +import java.util.ArrayList; +import java.util.List; + +/** + * {@link org.tmatesoft.svn.core.wc.ISVNStatusHandler} implementation for most + * scm commands. Creates a list of {@link org.apache.maven.scm.ScmFile} objects and determines + * the {@link org.apache.maven.scm.ScmFileStatus} from the + * {@link org.tmatesoft.svn.core.wc.SVNEvent#getExpectedAction()}. + * + * @author David Hawkins + * @version $Id$ + */ +public class ScmFileEventHandler + implements ISVNEventHandler +{ + private final ScmLogger logger; + + private final List files = new ArrayList(); + + /** + * The logger is used in alerting the user to unknown file statuses. + */ + public ScmFileEventHandler( ScmLogger logger ) + { + this.logger = logger; + } + + /** + * Creates a {@link ScmFile} for each event with the exception of directories. + * Directory events are ignored. + */ + public void handleEvent( SVNEvent event, double progress ) + { + ScmFileStatus status = SvnJavaUtil.getScmFileStatus( event.getExpectedAction() ); + + // Do nothing for events without files + if ( event.getFile() == null || event.getExpectedAction() == SVNEventAction.COMMIT_DELTA_SENT || + event.getExpectedAction() == SVNEventAction.COMMIT_COMPLETED || event.getNodeKind() != SVNNodeKind.FILE ) + { + return; + } + + if ( status == null ) + { + logger.info( "Unknown SVN file status: '" + event.getExpectedAction() + "' for file: " + + event.getFile().getAbsolutePath() ); + + status = ScmFileStatus.UNKNOWN; + } + + if ( logger.isDebugEnabled() ) + { + logger.debug( StringUtils.defaultString( status, event.getContentsStatus().toString() ) + " - " + + event.getFile().getAbsolutePath() ); + } + + files.add( new ScmFile( event.getFile().toString(), status ) ); + } + + public void checkCancelled() + throws SVNCancelException + { + // null + } + + /** + * Returns the list of files collected from handling events. + * + * @return a list of {@link ScmFile} objects + */ + public List getFiles() + { + return files; + } +} \ No newline at end of file Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/util/ScmFileEventHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/sandbox/maven-scm-provider-svnjava/src/main/java/org/apache/maven/scm/provider/svn/svnjava/util/ScmFileEventHandler.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"