diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHookEvent.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHookEvent.java deleted file mode 100644 index ebcc4fefad..0000000000 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHookEvent.java +++ /dev/null @@ -1,115 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - - -package sonia.scm.repository; - -//~--- non-JDK imports -------------------------------------------------------- - -import org.eclipse.jgit.transport.ReceiveCommand; -import org.eclipse.jgit.transport.ReceivePack; - -//~--- JDK imports ------------------------------------------------------------ - -import java.util.List; - -/** - * - * @author Sebastian Sdorra - */ -public class GitRepositoryHookEvent extends AbstractRepositoryHookEvent -{ - - /** - * Constructs ... - * - * - * @param rpack - * @param receiveCommands - * @param type - */ - public GitRepositoryHookEvent(ReceivePack rpack, - List receiveCommands, RepositoryHookType type) - { - this.rpack = rpack; - this.receiveCommands = receiveCommands; - this.type = type; - } - - //~--- get methods ---------------------------------------------------------- - - /** - * Method description - * - * - * @return - */ - @Override - public List getChangesets() - { - if (changesets == null) - { - GitHookChangesetCollector collector = - new GitHookChangesetCollector(rpack, receiveCommands); - - changesets = collector.collectChangesets(); - } - - return changesets; - } - - /** - * Method description - * - * - * @return - */ - @Override - public RepositoryHookType getType() - { - return type; - } - - //~--- fields --------------------------------------------------------------- - - /** Field description */ - private List changesets; - - /** Field description */ - private List receiveCommands; - - /** Field description */ - private ReceivePack rpack; - - /** Field description */ - private RepositoryHookType type; -} diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHookEvent.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHookEvent.java deleted file mode 100644 index 60e8d9a34f..0000000000 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHookEvent.java +++ /dev/null @@ -1,182 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - - -package sonia.scm.repository; - -//~--- non-JDK imports -------------------------------------------------------- - -import com.google.common.io.Closeables; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import sonia.scm.repository.spi.HgCommandContext; -import sonia.scm.repository.spi.javahg.HgLogChangesetCommand; - -//~--- JDK imports ------------------------------------------------------------ - -import java.io.File; - -import java.util.Collection; -import java.util.List; - -/** - * - * @author Sebastian Sdorra - */ -public class HgRepositoryHookEvent extends AbstractRepositoryHookEvent -{ - - /** Field description */ - public static final String REV_TIP = "tip"; - - /** - * the logger for HgRepositoryHookEvent - */ - private static final Logger logger = - LoggerFactory.getLogger(HgRepositoryHookEvent.class); - - //~--- constructors --------------------------------------------------------- - - /** - * Constructs ... - * - * - * @param handler - * @param hookManager - * @param repositoryName - * @param startRev - * @param type - */ - public HgRepositoryHookEvent(HgRepositoryHandler handler, - HgHookManager hookManager, String repositoryName, String startRev, - RepositoryHookType type) - { - this.handler = handler; - this.hookManager = hookManager; - this.repositoryName = repositoryName; - this.startRev = startRev; - this.type = type; - } - - //~--- get methods ---------------------------------------------------------- - - /** - * Method description - * - * - * @return - */ - @Override - public Collection getChangesets() - { - if (changesets == null) - { - HgCommandContext context = null; - - try - { - context = createCommandContext(); - - HgLogChangesetCommand cmd = HgLogChangesetCommand.on(context.open(), - handler.getConfig()); - - changesets = cmd.rev(startRev.concat(":").concat(REV_TIP)).execute(); - } - catch (Exception ex) - { - logger.error("could not retrieve changesets", ex); - } - finally - { - Closeables.closeQuietly(context); - } - } - - return changesets; - } - - /** - * Method description - * - * - * @return - */ - @Override - public RepositoryHookType getType() - { - return type; - } - - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @return - */ - private HgCommandContext createCommandContext() - { - File directory = handler.getConfig().getRepositoryDirectory(); - File repositoryDirectory = new File(directory, repositoryName); - - // use HG_PENDING only for pre receive hooks - boolean pending = type == RepositoryHookType.PRE_RECEIVE; - - Repository repository = getRepository(); - - return new HgCommandContext(hookManager, handler, repository, - repositoryDirectory, pending); - } - - //~--- fields --------------------------------------------------------------- - - /** Field description */ - private List changesets; - - /** Field description */ - private HgRepositoryHandler handler; - - /** Field description */ - private HgHookManager hookManager; - - /** Field description */ - private String repositoryName; - - /** Field description */ - private String startRev; - - /** Field description */ - private RepositoryHookType type; -} diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgHookChangesetProvider.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgHookChangesetProvider.java index d9023c6123..04cc3ef016 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgHookChangesetProvider.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgHookChangesetProvider.java @@ -44,8 +44,6 @@ import sonia.scm.repository.RepositoryHookType; import sonia.scm.repository.spi.javahg.HgLogChangesetCommand; import sonia.scm.web.HgUtil; -import static sonia.scm.repository.HgRepositoryHookEvent.REV_TIP; - //~--- JDK imports ------------------------------------------------------------ import java.io.File; @@ -111,7 +109,7 @@ public class HgHookChangesetProvider implements HookChangesetProvider handler.getConfig()); response = new HookChangesetResponse( - cmd.rev(startRev.concat(":").concat(REV_TIP)).execute()); + cmd.rev(startRev.concat(":").concat(HgUtil.REVISION_TIP)).execute()); } catch (Exception ex) { diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnPostReceiveHookEvent.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnPostReceiveHookEvent.java deleted file mode 100644 index 03f9fd65d2..0000000000 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnPostReceiveHookEvent.java +++ /dev/null @@ -1,167 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - - -package sonia.scm.repository; - -//~--- non-JDK imports -------------------------------------------------------- - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.SVNLogEntry; -import org.tmatesoft.svn.core.SVNURL; -import org.tmatesoft.svn.core.io.SVNRepository; -import org.tmatesoft.svn.core.io.SVNRepositoryFactory; - -import sonia.scm.util.Util; - -//~--- JDK imports ------------------------------------------------------------ - -import java.io.File; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** - * - * @author Sebastian Sdorra - */ -public class SvnPostReceiveHookEvent extends AbstractRepositoryHookEvent -{ - - /** the logger for SvnPostReceiveHookEvent */ - private static final Logger logger = - LoggerFactory.getLogger(SvnPostReceiveHookEvent.class); - - //~--- constructors --------------------------------------------------------- - - /** - * Constructs ... - * - * - * @param repositoryDirectory - * @param revision - */ - public SvnPostReceiveHookEvent(File repositoryDirectory, long revision) - { - this.repositoryDirectory = repositoryDirectory; - this.revision = revision; - } - - //~--- get methods ---------------------------------------------------------- - - /** - * Method description - * - * - * @return - */ - @Override - public Collection getChangesets() - { - if (changesets == null) - { - changesets = fetchChangesets(); - } - - return changesets; - } - - /** - * Method description - * - * - * @return - */ - @Override - public RepositoryHookType getType() - { - return RepositoryHookType.POST_RECEIVE; - } - - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @return - */ - private List fetchChangesets() - { - List result = new ArrayList(1); - SVNRepository repository = null; - - try - { - repository = - SVNRepositoryFactory.create(SVNURL.fromFile(repositoryDirectory)); - - Collection enties = repository.log(new String[] { "" }, - null, revision, revision, true, true); - - if (Util.isNotEmpty(enties)) - { - SVNLogEntry entry = enties.iterator().next(); - - if (entry != null) - { - result.add(SvnUtil.createChangeset(entry)); - } - } - } - catch (SVNException ex) - { - logger.error("could not open repository", ex); - } - finally - { - SvnUtil.closeSession(repository); - } - - return result; - } - - //~--- fields --------------------------------------------------------------- - - /** Field description */ - private List changesets; - - /** Field description */ - private File repositoryDirectory; - - /** Field description */ - private long revision; -} diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnPreReceiveHookEvent.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnPreReceiveHookEvent.java deleted file mode 100644 index 2000029c67..0000000000 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnPreReceiveHookEvent.java +++ /dev/null @@ -1,173 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - - -package sonia.scm.repository; - -//~--- non-JDK imports -------------------------------------------------------- - -import com.google.common.collect.Lists; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.tmatesoft.svn.core.SVNLogEntry; -import org.tmatesoft.svn.core.wc.ISVNOptions; -import org.tmatesoft.svn.core.wc.SVNClientManager; -import org.tmatesoft.svn.core.wc.SVNWCUtil; -import org.tmatesoft.svn.core.wc.admin.SVNLookClient; - -//~--- JDK imports ------------------------------------------------------------ - -import java.io.File; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** - * - * @author Sebastian Sdorra - */ -public class SvnPreReceiveHookEvent extends AbstractRepositoryHookEvent -{ - - /** the logger for SvnPreReceiveHookEvent */ - private static final Logger logger = - LoggerFactory.getLogger(SvnPreReceiveHookEvent.class); - - //~--- constructors --------------------------------------------------------- - - /** - * Constructs ... - * - * - * @param repositoryDirectory - * @param transaction - */ - public SvnPreReceiveHookEvent(File repositoryDirectory, String transaction) - { - this.repositoryDirectory = repositoryDirectory; - this.transaction = transaction; - } - - //~--- get methods ---------------------------------------------------------- - - /** - * Method description - * - * - * @return - */ - @Override - public Collection getChangesets() - { - if (changesets == null) - { - changesets = fetchChangesets(); - } - - return changesets; - } - - /** - * Method description - * - * - * @return - */ - @Override - public RepositoryHookType getType() - { - return RepositoryHookType.PRE_RECEIVE; - } - - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @return - */ - private Collection fetchChangesets() - { - List csets = new ArrayList(1); - SVNClientManager cm = null; - - try - { - ISVNOptions options = SVNWCUtil.createDefaultOptions(true); - - cm = SVNClientManager.newInstance(options); - - SVNLookClient clientManager = cm.getLookClient(); - SVNLogEntry entry = clientManager.doGetInfo(repositoryDirectory, - transaction); - - if (entry != null) - { - Changeset c = SvnUtil.createChangeset(entry); - - clientManager.doGetChanged(repositoryDirectory, transaction, - new SvnModificationHandler(c), true); - csets.add(c); - } - else if (logger.isWarnEnabled()) - { - logger.warn("could not find log entry for pre receive hook"); - } - } - catch (Exception ex) - { - logger.error( - "could not fetch changesets for transaction ".concat(transaction), - ex); - } - finally - { - SvnUtil.dispose(cm); - } - - return csets; - } - - //~--- fields --------------------------------------------------------------- - - /** Field description */ - private Collection changesets; - - /** Field description */ - private File repositoryDirectory; - - /** Field description */ - private String transaction; -}