James Moger
2015-05-22 8a28d0f3df3d4800f82250eec597150ee5dfc933
Add onFork and onRename methods to RepositoryLifeCycleListener
4 files modified
51 ■■■■■ changed files
src/main/java/com/gitblit/extensions/RepositoryLifeCycleListener.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/manager/GitblitManager.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/manager/RepositoryManager.java 12 ●●●●● patch | view | raw | blame | history
src/site/plugins_extensions.mkd 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/extensions/RepositoryLifeCycleListener.java
@@ -36,6 +36,24 @@
    public abstract void onCreation(RepositoryModel repository);
    /**
     * Called after a repository has been forked.
     *
     * @param origin
     * @param fork
     * @since 1.7.0
     */
    public abstract void onFork(RepositoryModel origin, RepositoryModel fork);
    /**
     * Called after a repository has been renamed.
     *
     * @param oldName
     * @param repository
     * @since 1.7.0
     */
    public abstract void onRename(String oldName, RepositoryModel repository);
    /**
     * Called after a repository has been deleted.
     *
     * @param repository
src/main/java/com/gitblit/manager/GitblitManager.java
@@ -54,6 +54,7 @@
import com.gitblit.Constants.Role;
import com.gitblit.GitBlitException;
import com.gitblit.IStoredSettings;
import com.gitblit.extensions.RepositoryLifeCycleListener;
import com.gitblit.models.FederationModel;
import com.gitblit.models.FederationProposal;
import com.gitblit.models.FederationSet;
@@ -276,6 +277,16 @@
        // add this clone to the cached model
        repositoryManager.addToCachedRepositoryList(cloneModel);
        if (pluginManager != null) {
            for (RepositoryLifeCycleListener listener : pluginManager.getExtensions(RepositoryLifeCycleListener.class)) {
                try {
                    listener.onFork(repository, cloneModel);
                } catch (Throwable t) {
                    logger.error(String.format("failed to call plugin onFork %s", repository.name), t);
                }
            }
        }
        return cloneModel;
    }
src/main/java/com/gitblit/manager/RepositoryManager.java
@@ -1375,6 +1375,7 @@
                repository.name = repository.name.substring(projectPath.length() + 1);
            }
        }
        boolean isRename = false;
        if (isCreate) {
            // ensure created repository name ends with .git
            if (!repository.name.toLowerCase().endsWith(org.eclipse.jgit.lib.Constants.DOT_GIT_EXT)) {
@@ -1391,7 +1392,8 @@
            r = JGitUtils.createRepository(repositoriesFolder, repository.name, shared);
        } else {
            // rename repository
            if (!repositoryName.equalsIgnoreCase(repository.name)) {
            isRename = !repositoryName.equalsIgnoreCase(repository.name);
            if (isRename) {
                if (!repository.name.toLowerCase().endsWith(
                        org.eclipse.jgit.lib.Constants.DOT_GIT_EXT)) {
                    repository.name += org.eclipse.jgit.lib.Constants.DOT_GIT_EXT;
@@ -1511,6 +1513,14 @@
                    logger.error(String.format("failed to call plugin onCreation %s", repositoryName), t);
                }
            }
        } else if (isRename && pluginManager != null) {
            for (RepositoryLifeCycleListener listener : pluginManager.getExtensions(RepositoryLifeCycleListener.class)) {
                try {
                    listener.onRename(repositoryName, repository);
                } catch (Throwable t) {
                    logger.error(String.format("failed to call plugin onRename %s", repositoryName), t);
                }
            }
        }
    }
src/site/plugins_extensions.mkd
@@ -338,6 +338,16 @@
    }
    @Override
    public void onFork(RepositoryModel origin, RepositoryModel fork) {
        log.info("{} forked to {}", origin, fork);
    }
    @Override
    public void onRename(String oldName, RepositoryModel repo) {
        log.info("{} renamed to {}", oldName, repo);
    }
    @Override
    public void onDeletion(RepositoryModel repo) {
        log.info("Gitblit deleted {}", repo);
    }