001package org.apache.maven.scm.provider.svn.svnexe; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import java.io.File; 023 024import org.apache.maven.scm.CommandParameters; 025import org.apache.maven.scm.ScmException; 026import org.apache.maven.scm.ScmFileSet; 027import org.apache.maven.scm.command.info.InfoScmResult; 028import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult; 029import org.apache.maven.scm.provider.ScmProviderRepository; 030import org.apache.maven.scm.provider.svn.AbstractSvnScmProvider; 031import org.apache.maven.scm.provider.svn.command.SvnCommand; 032import org.apache.maven.scm.provider.svn.svnexe.command.add.SvnAddCommand; 033import org.apache.maven.scm.provider.svn.svnexe.command.blame.SvnBlameCommand; 034import org.apache.maven.scm.provider.svn.svnexe.command.branch.SvnBranchCommand; 035import org.apache.maven.scm.provider.svn.svnexe.command.changelog.SvnChangeLogCommand; 036import org.apache.maven.scm.provider.svn.svnexe.command.checkin.SvnCheckInCommand; 037import org.apache.maven.scm.provider.svn.svnexe.command.checkout.SvnCheckOutCommand; 038import org.apache.maven.scm.provider.svn.svnexe.command.diff.SvnDiffCommand; 039import org.apache.maven.scm.provider.svn.svnexe.command.export.SvnExeExportCommand; 040import org.apache.maven.scm.provider.svn.svnexe.command.info.SvnInfoCommand; 041import org.apache.maven.scm.provider.svn.svnexe.command.list.SvnListCommand; 042import org.apache.maven.scm.provider.svn.svnexe.command.mkdir.SvnMkdirCommand; 043import org.apache.maven.scm.provider.svn.svnexe.command.remoteinfo.SvnRemoteInfoCommand; 044import org.apache.maven.scm.provider.svn.svnexe.command.remove.SvnRemoveCommand; 045import org.apache.maven.scm.provider.svn.svnexe.command.status.SvnStatusCommand; 046import org.apache.maven.scm.provider.svn.svnexe.command.tag.SvnTagCommand; 047import org.apache.maven.scm.provider.svn.svnexe.command.untag.SvnUntagCommand; 048import org.apache.maven.scm.provider.svn.svnexe.command.update.SvnUpdateCommand; 049import org.apache.maven.scm.repository.ScmRepositoryException; 050 051/** 052 * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a> 053 * 054 * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="svn" 055 */ 056public class SvnExeScmProvider 057 extends AbstractSvnScmProvider 058{ 059 /** 060 * {@inheritDoc} 061 */ 062 protected SvnCommand getAddCommand() 063 { 064 return new SvnAddCommand(); 065 } 066 067 /** 068 * {@inheritDoc} 069 */ 070 protected SvnCommand getBranchCommand() 071 { 072 return new SvnBranchCommand(); 073 } 074 075 /** 076 * {@inheritDoc} 077 */ 078 protected SvnCommand getChangeLogCommand() 079 { 080 return new SvnChangeLogCommand(); 081 } 082 083 /** 084 * {@inheritDoc} 085 */ 086 protected SvnCommand getCheckInCommand() 087 { 088 return new SvnCheckInCommand(); 089 } 090 091 /** 092 * {@inheritDoc} 093 */ 094 protected SvnCommand getCheckOutCommand() 095 { 096 return new SvnCheckOutCommand(); 097 } 098 099 /** 100 * {@inheritDoc} 101 */ 102 protected SvnCommand getDiffCommand() 103 { 104 return new SvnDiffCommand(); 105 } 106 107 /** 108 * {@inheritDoc} 109 */ 110 protected SvnCommand getExportCommand() 111 { 112 return new SvnExeExportCommand(); 113 } 114 115 /** 116 * {@inheritDoc} 117 */ 118 protected SvnCommand getRemoveCommand() 119 { 120 return new SvnRemoveCommand(); 121 } 122 123 /** 124 * {@inheritDoc} 125 */ 126 protected SvnCommand getStatusCommand() 127 { 128 return new SvnStatusCommand(); 129 } 130 131 /** 132 * {@inheritDoc} 133 */ 134 protected SvnCommand getTagCommand() 135 { 136 return new SvnTagCommand(); 137 } 138 139 /** 140 * {@inheritDoc} 141 */ 142 protected SvnCommand getUntagCommand() 143 { 144 return new SvnUntagCommand(); 145 } 146 147 /** 148 * {@inheritDoc} 149 */ 150 protected SvnCommand getUpdateCommand() 151 { 152 return new SvnUpdateCommand(); 153 } 154 155 /** 156 * {@inheritDoc} 157 */ 158 protected SvnCommand getListCommand() 159 { 160 return new SvnListCommand(); 161 } 162 163 public SvnCommand getInfoCommand() 164 { 165 return new SvnInfoCommand(); 166 } 167 168 /** 169 * {@inheritDoc} 170 */ 171 protected SvnCommand getBlameCommand() 172 { 173 return new SvnBlameCommand(); 174 } 175 176 /** 177 * {@inheritDoc} 178 */ 179 protected SvnCommand getMkdirCommand() 180 { 181 return new SvnMkdirCommand(); 182 } 183 184 /** 185 * {@inheritDoc} 186 */ 187 protected String getRepositoryURL( File path ) 188 throws ScmException 189 { 190 // Note: I need to supply just 1 absolute path, but ScmFileSet won't let me without 191 // a basedir (which isn't used here anyway), so use a dummy file. 192 SvnInfoCommand infoCmd = (SvnInfoCommand) getInfoCommand(); 193 infoCmd.setLogger( this.getLogger() ); 194 InfoScmResult result = 195 infoCmd.executeInfoCommand( null, new ScmFileSet( new File( "" ), path ), null, false, null ); 196 197 if ( result.getInfoItems().size() != 1 ) 198 { 199 throw new ScmRepositoryException( 200 "Cannot find URL: " + ( result.getInfoItems().size() == 0 ? "no" : "multiple" ) 201 + " items returned by the info command" ); 202 } 203 204 return result.getInfoItems().get( 0 ).getURL(); 205 } 206 207 @Override 208 public RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet, 209 CommandParameters parameters ) 210 throws ScmException 211 { 212 SvnRemoteInfoCommand svnRemoteInfoCommand = new SvnRemoteInfoCommand(); 213 return svnRemoteInfoCommand.executeRemoteInfoCommand( repository, fileSet, parameters ); 214 } 215 216 @Override 217 public boolean remoteUrlExist( ScmProviderRepository repository, CommandParameters parameters ) 218 throws ScmException 219 { 220 SvnRemoteInfoCommand svnRemoteInfoCommand = new SvnRemoteInfoCommand(); 221 return svnRemoteInfoCommand.remoteUrlExist( repository, parameters ); 222 } 223}