From 12299bacae581a6bf60893fb92dd48dc4e2bcee1 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Mon, 15 Aug 2011 15:07:35 +0200 Subject: [PATCH] improve changeset preprocessor api --- .../scm/repository/ChangesetPreProcessor.java | 2 -- ...java => ChangesetPreProcessorFactory.java} | 29 ++++++------------- .../sonia/scm/BindingExtensionProcessor.java | 12 ++++---- .../rest/resources/RepositoryResource.java | 29 ++++++++++--------- 4 files changed, 31 insertions(+), 41 deletions(-) rename scm-core/src/main/java/sonia/scm/repository/{ExtendedChangesetPreProcessor.java => ChangesetPreProcessorFactory.java} (85%) diff --git a/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessor.java b/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessor.java index 5c3b064c85..3e6db77967 100644 --- a/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessor.java +++ b/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessor.java @@ -40,9 +40,7 @@ import sonia.scm.plugin.ExtensionPoint; /** * * @author Sebastian Sdorra - * @deprecated use {@link ExtendedChangesetPreProcessor} instead. */ -@Deprecated @ExtensionPoint public interface ChangesetPreProcessor { diff --git a/scm-core/src/main/java/sonia/scm/repository/ExtendedChangesetPreProcessor.java b/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessorFactory.java similarity index 85% rename from scm-core/src/main/java/sonia/scm/repository/ExtendedChangesetPreProcessor.java rename to scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessorFactory.java index 7c8db8be59..d519aa1dcc 100644 --- a/scm-core/src/main/java/sonia/scm/repository/ExtendedChangesetPreProcessor.java +++ b/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessorFactory.java @@ -1,10 +1,10 @@ /** * 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, @@ -13,7 +13,7 @@ * 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 @@ -24,17 +24,12 @@ * 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 sonia.scm.plugin.ExtensionPoint; /** @@ -43,15 +38,9 @@ import sonia.scm.plugin.ExtensionPoint; * @since 1.7 */ @ExtensionPoint -public interface ExtendedChangesetPreProcessor +public interface ChangesetPreProcessorFactory { - - /** - * Method description - * - * - * @param repository - * @param changeset - */ - public void process(Repository repository, Changeset changeset); + + public ChangesetPreProcessor createPreProcessor(Repository repository); + } diff --git a/scm-webapp/src/main/java/sonia/scm/BindingExtensionProcessor.java b/scm-webapp/src/main/java/sonia/scm/BindingExtensionProcessor.java index 741da9961d..4aec99346c 100644 --- a/scm-webapp/src/main/java/sonia/scm/BindingExtensionProcessor.java +++ b/scm-webapp/src/main/java/sonia/scm/BindingExtensionProcessor.java @@ -47,7 +47,7 @@ import sonia.scm.io.FileSystem; import sonia.scm.plugin.ext.Extension; import sonia.scm.plugin.ext.ExtensionProcessor; import sonia.scm.repository.ChangesetPreProcessor; -import sonia.scm.repository.ExtendedChangesetPreProcessor; +import sonia.scm.repository.ChangesetPreProcessorFactory; import sonia.scm.repository.RepositoryHandler; import sonia.scm.repository.RepositoryHook; import sonia.scm.repository.RepositoryListener; @@ -106,8 +106,8 @@ public class BindingExtensionProcessor implements ExtensionProcessor Multibinder.newSetBinder(binder, ResourceHandler.class); Multibinder changesetPreProcessorBinder = Multibinder.newSetBinder(binder, ChangesetPreProcessor.class); - Multibinder extChangesetPreProcessorBinder = - Multibinder.newSetBinder(binder, ExtendedChangesetPreProcessor.class); + Multibinder changesetPreProcessorFactoryBinder = + Multibinder.newSetBinder(binder, ChangesetPreProcessorFactory.class); authenticators.addBinding().to(XmlAuthenticationHandler.class); @@ -215,16 +215,16 @@ public class BindingExtensionProcessor implements ExtensionProcessor changesetPreProcessorBinder.addBinding().to(extensionClass); } - else if (ExtendedChangesetPreProcessor.class.isAssignableFrom( + else if (ChangesetPreProcessorFactory.class.isAssignableFrom( extensionClass)) { if (logger.isInfoEnabled()) { - logger.info("bind ExtendedChangesetPreProcessor {}", + logger.info("bind ChangesetPreProcessorFactory {}", extensionClass.getName()); } - extChangesetPreProcessorBinder.addBinding().to(extensionClass); + changesetPreProcessorFactoryBinder.addBinding().to(extensionClass); } else if (RepositoryHook.class.isAssignableFrom(extensionClass)) { diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java index 1d346d4f87..5766224784 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java @@ -48,8 +48,8 @@ import sonia.scm.repository.BrowserResult; import sonia.scm.repository.Changeset; import sonia.scm.repository.ChangesetPagingResult; import sonia.scm.repository.ChangesetPreProcessor; +import sonia.scm.repository.ChangesetPreProcessorFactory; import sonia.scm.repository.ChangesetViewerUtil; -import sonia.scm.repository.ExtendedChangesetPreProcessor; import sonia.scm.repository.PathNotFoundException; import sonia.scm.repository.Permission; import sonia.scm.repository.PermissionType; @@ -114,7 +114,7 @@ public class RepositoryResource * @param repositoryManager * @param securityContextProvider * @param changesetPreProcessorSet - * @param extChangesetPreProcessorSet + * @param changesetPreProcessorFactorySet * @param changesetViewerUtil * @param repositoryBrowserUtil */ @@ -123,7 +123,7 @@ public class RepositoryResource ScmConfiguration configuration, RepositoryManager repositoryManager, Provider securityContextProvider, Set changesetPreProcessorSet, - Set extChangesetPreProcessorSet, + Set changesetPreProcessorFactorySet, ChangesetViewerUtil changesetViewerUtil, RepositoryBrowserUtil repositoryBrowserUtil) { @@ -132,7 +132,7 @@ public class RepositoryResource this.repositoryManager = repositoryManager; this.securityContextProvider = securityContextProvider; this.changesetPreProcessorSet = changesetPreProcessorSet; - this.extChangesetPreProcessorSet = extChangesetPreProcessorSet; + this.changesetPreProcessorFactorySet = changesetPreProcessorFactorySet; this.changesetViewerUtil = changesetViewerUtil; this.repositoryBrowserUtil = repositoryBrowserUtil; setDisableCache(false); @@ -220,7 +220,7 @@ public class RepositoryResource if (Util.isNotEmpty(changesets.getChangesets())) { callPreProcessors(changesets); - callExtendedPreProcessors(id, changesets); + callPreProcessorFactories(id, changesets); } response = Response.ok(changesets).build(); @@ -401,20 +401,23 @@ public class RepositoryResource * @param id * @param changesets */ - private void callExtendedPreProcessors(String id, + private void callPreProcessorFactories(String id, ChangesetPagingResult changesets) { - if (Util.isNotEmpty(extChangesetPreProcessorSet)) + if (Util.isNotEmpty(changesetPreProcessorFactorySet)) { Repository repository = repositoryManager.get(id); if (repository != null) { - for (Changeset c : changesets.getChangesets()) + for (ChangesetPreProcessorFactory factory : + changesetPreProcessorFactorySet) { - for (ExtendedChangesetPreProcessor ecpp : extChangesetPreProcessorSet) + ChangesetPreProcessor cpp = factory.createPreProcessor(repository); + + for (Changeset c : changesets.getChangesets()) { - ecpp.process(repository, c); + cpp.process(c); } } } @@ -571,6 +574,9 @@ public class RepositoryResource //~--- fields --------------------------------------------------------------- + /** Field description */ + private Set changesetPreProcessorFactorySet; + /** Field description */ private Set changesetPreProcessorSet; @@ -580,9 +586,6 @@ public class RepositoryResource /** Field description */ private ScmConfiguration configuration; - /** Field description */ - private Set extChangesetPreProcessorSet; - /** Field description */ private RepositoryBrowserUtil repositoryBrowserUtil;