From c7109fe3803e24058fbb5e7afc39da6a5b5d1a7e Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sat, 16 Jun 2012 17:30:47 +0200 Subject: [PATCH] fix abstract method error of plugins which are using a version before 1.17-SNAPSHOT --- .../scm/repository/ChangesetPreProcessor.java | 6 +- .../ChangesetPreProcessorFactory.java | 3 +- .../repository/FileObjectPreProcessor.java | 6 +- .../FileObjectPreProcessorFactory.java | 3 +- .../scm/repository/PreProcessorUtil.java | 487 ++++++++++++++---- 5 files changed, 399 insertions(+), 106 deletions(-) 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 43cddee19e..26930abcc3 100644 --- a/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessor.java +++ b/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessor.java @@ -38,11 +38,12 @@ package sonia.scm.repository; import sonia.scm.plugin.ExtensionPoint; /** - * + * TODO for 2.0 extends {@link PreProcessor} interface. + * * @author Sebastian Sdorra */ @ExtensionPoint -public interface ChangesetPreProcessor extends PreProcessor +public interface ChangesetPreProcessor { /** @@ -51,6 +52,5 @@ public interface ChangesetPreProcessor extends PreProcessor * * @param changeset */ - @Override public void process(Changeset changeset); } diff --git a/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessorFactory.java b/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessorFactory.java index d9c209a4ab..7805be8854 100644 --- a/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessorFactory.java +++ b/scm-core/src/main/java/sonia/scm/repository/ChangesetPreProcessorFactory.java @@ -38,13 +38,13 @@ package sonia.scm.repository; import sonia.scm.plugin.ExtensionPoint; /** + * TODO for 2.0 extends {@link PreProcessorFactory} interface. * * @author Sebastian Sdorra * @since 1.7 */ @ExtensionPoint public interface ChangesetPreProcessorFactory - extends PreProcessorFactory { /** @@ -55,6 +55,5 @@ public interface ChangesetPreProcessorFactory * * @return */ - @Override public ChangesetPreProcessor createPreProcessor(Repository repository); } diff --git a/scm-core/src/main/java/sonia/scm/repository/FileObjectPreProcessor.java b/scm-core/src/main/java/sonia/scm/repository/FileObjectPreProcessor.java index 3170672ee9..175020bf6c 100644 --- a/scm-core/src/main/java/sonia/scm/repository/FileObjectPreProcessor.java +++ b/scm-core/src/main/java/sonia/scm/repository/FileObjectPreProcessor.java @@ -38,12 +38,13 @@ package sonia.scm.repository; import sonia.scm.plugin.ExtensionPoint; /** - * + * TODO for 2.0 extends {@link PreProcessor} interface. + * * @author Sebastian Sdorra * @since 1.10 */ @ExtensionPoint -public interface FileObjectPreProcessor extends PreProcessor +public interface FileObjectPreProcessor { /** @@ -52,6 +53,5 @@ public interface FileObjectPreProcessor extends PreProcessor * * @param fileObject */ - @Override public void process(FileObject fileObject); } diff --git a/scm-core/src/main/java/sonia/scm/repository/FileObjectPreProcessorFactory.java b/scm-core/src/main/java/sonia/scm/repository/FileObjectPreProcessorFactory.java index 5584593d7a..0875a092c6 100644 --- a/scm-core/src/main/java/sonia/scm/repository/FileObjectPreProcessorFactory.java +++ b/scm-core/src/main/java/sonia/scm/repository/FileObjectPreProcessorFactory.java @@ -38,13 +38,13 @@ package sonia.scm.repository; import sonia.scm.plugin.ExtensionPoint; /** + * TODO for 2.0 extends {@link PreProcessorFactory} interface. * * @author Sebastian Sdorra * @since 1.10 */ @ExtensionPoint public interface FileObjectPreProcessorFactory - extends PreProcessorFactory { /** @@ -55,6 +55,5 @@ public interface FileObjectPreProcessorFactory * * @return */ - @Override public FileObjectPreProcessor createPreProcessor(Repository repository); } diff --git a/scm-core/src/main/java/sonia/scm/repository/PreProcessorUtil.java b/scm-core/src/main/java/sonia/scm/repository/PreProcessorUtil.java index 44b13b2294..f9251e8f38 100644 --- a/scm-core/src/main/java/sonia/scm/repository/PreProcessorUtil.java +++ b/scm-core/src/main/java/sonia/scm/repository/PreProcessorUtil.java @@ -33,6 +33,8 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import com.google.common.base.Function; +import com.google.common.collect.Collections2; import com.google.inject.Inject; import org.slf4j.Logger; @@ -42,6 +44,7 @@ import sonia.scm.util.Util; //~--- JDK imports ------------------------------------------------------------ +import java.util.Collection; import java.util.Set; /** @@ -76,10 +79,52 @@ public class PreProcessorUtil Set fileObjectPreProcessorSet, Set fileObjectPreProcessorFactorySet) { - this.changesetPreProcessorSet = changesetPreProcessorSet; - this.changesetPreProcessorFactorySet = changesetPreProcessorFactorySet; - this.fileObjectPreProcessorSet = fileObjectPreProcessorSet; - this.fileObjectPreProcessorFactorySet = fileObjectPreProcessorFactorySet; + this.changesetPreProcessorSet = + Collections2.transform(changesetPreProcessorSet, + new Function() + { + @Override + public ChangesetPreProcessorWrapper apply(ChangesetPreProcessor input) + { + return new ChangesetPreProcessorWrapper(input); + } + }); + this.changesetPreProcessorFactorySet = + Collections2.transform(changesetPreProcessorFactorySet, + new Function() + { + @Override + public ChangesetPreProcessorFactoryWrapper apply( + ChangesetPreProcessorFactory input) + { + return new ChangesetPreProcessorFactoryWrapper(input); + } + }); + this.fileObjectPreProcessorSet = + Collections2.transform(fileObjectPreProcessorSet, + new Function() + { + @Override + public FileObjectPreProcessorWrapper apply(FileObjectPreProcessor input) + { + return new FileObjectPreProcessorWrapper(input); + } + }); + this.fileObjectPreProcessorFactorySet = + Collections2.transform(fileObjectPreProcessorFactorySet, + new Function() + { + @Override + public FileObjectPreProcessorFactoryWrapper apply( + FileObjectPreProcessorFactory input) + { + return new FileObjectPreProcessorFactoryWrapper(input); + } + }); } //~--- methods -------------------------------------------------------------- @@ -100,9 +145,13 @@ public class PreProcessorUtil } EscapeUtil.escape(changeset); - callPreProcessors(changesetPreProcessorSet, changeset); - callPreProcessorFactories(changesetPreProcessorFactorySet, repository, - changeset); + + PreProcessorHandler handler = + new PreProcessorHandler(changesetPreProcessorFactorySet, + changesetPreProcessorSet, repository); + + handler.callPreProcessors(changeset); + handler.callPreProcessorFactories(changeset); } /** @@ -122,9 +171,13 @@ public class PreProcessorUtil } EscapeUtil.escape(result); - callPreProcessors(fileObjectPreProcessorSet, result); - callPreProcessorFactories(fileObjectPreProcessorFactorySet, repository, - result); + + PreProcessorHandler handler = + new PreProcessorHandler(fileObjectPreProcessorFactorySet, + fileObjectPreProcessorSet, repository); + + handler.callPreProcessors(result); + handler.callPreProcessorFactories(result); } /** @@ -144,127 +197,369 @@ public class PreProcessorUtil } EscapeUtil.escape(result); - callPreProcessors(changesetPreProcessorSet, result); - callPreProcessorFactories(changesetPreProcessorFactorySet, repository, - result); + + PreProcessorHandler handler = + new PreProcessorHandler(changesetPreProcessorFactorySet, + changesetPreProcessorSet, repository); + + handler.callPreProcessors(result); + handler.callPreProcessorFactories(result); } - /** - * Method description - * - * - * - * - * @param preProcessorFactorySet - * @param repository - * @param changesets - * @param items - * @param - */ - private void callPreProcessorFactories( - Set> preProcessorFactorySet, - Repository repository, Iterable items) - { - if (Util.isNotEmpty(preProcessorFactorySet)) - { - for (PreProcessorFactory factory : preProcessorFactorySet) - { - PreProcessor preProcessor = factory.createPreProcessor(repository); + //~--- inner classes -------------------------------------------------------- - if (preProcessor != null) + /** + * Class description + * + * + * @version Enter version here..., 12/06/16 + * @author Enter your name here... + */ + private static class ChangesetPreProcessorFactoryWrapper + implements PreProcessorFactory + { + + /** + * Constructs ... + * + * + * @param preProcessorFactory + */ + public ChangesetPreProcessorFactoryWrapper( + ChangesetPreProcessorFactory preProcessorFactory) + { + this.preProcessorFactory = preProcessorFactory; + } + + //~--- methods ------------------------------------------------------------ + + /** + * Method description + * + * + * @param repository + * + * @return + */ + @Override + public PreProcessor createPreProcessor(Repository repository) + { + PreProcessor preProcessor = null; + ChangesetPreProcessor changesetPreProcessor = + preProcessorFactory.createPreProcessor(repository); + + if (changesetPreProcessor != null) + { + preProcessor = new ChangesetPreProcessorWrapper(changesetPreProcessor); + } + + return preProcessor; + } + + //~--- fields ------------------------------------------------------------- + + /** Field description */ + private ChangesetPreProcessorFactory preProcessorFactory; + } + + + /** + * Class description + * + * + * @version Enter version here..., 12/06/16 + * @author Enter your name here... + */ + private static class ChangesetPreProcessorWrapper + implements PreProcessor + { + + /** + * Constructs ... + * + * + * @param preProcessor + */ + public ChangesetPreProcessorWrapper(ChangesetPreProcessor preProcessor) + { + this.preProcessor = preProcessor; + } + + //~--- methods ------------------------------------------------------------ + + /** + * Method description + * + * + * @param item + */ + @Override + public void process(Changeset item) + { + preProcessor.process(item); + } + + //~--- fields ------------------------------------------------------------- + + /** Field description */ + private ChangesetPreProcessor preProcessor; + } + + + /** + * Class description + * + * + * @version Enter version here..., 12/06/16 + * @author Enter your name here... + */ + private static class FileObjectPreProcessorFactoryWrapper + implements PreProcessorFactory + { + + /** + * Constructs ... + * + * + * @param preProcessorFactory + */ + public FileObjectPreProcessorFactoryWrapper( + FileObjectPreProcessorFactory preProcessorFactory) + { + this.preProcessorFactory = preProcessorFactory; + } + + //~--- methods ------------------------------------------------------------ + + /** + * Method description + * + * + * @param repository + * + * @return + */ + @Override + public PreProcessor createPreProcessor(Repository repository) + { + PreProcessor preProcessor = null; + FileObjectPreProcessor fileObjectPreProcessor = + preProcessorFactory.createPreProcessor(repository); + + if (fileObjectPreProcessor != null) + { + preProcessor = + new FileObjectPreProcessorWrapper(fileObjectPreProcessor); + } + + return preProcessor; + } + + //~--- fields ------------------------------------------------------------- + + /** Field description */ + private FileObjectPreProcessorFactory preProcessorFactory; + } + + + /** + * Class description + * + * + * @version Enter version here..., 12/06/16 + * @author Enter your name here... + */ + private static class FileObjectPreProcessorWrapper + implements PreProcessor + { + + /** + * Constructs ... + * + * + * @param preProcessor + */ + public FileObjectPreProcessorWrapper(FileObjectPreProcessor preProcessor) + { + this.preProcessor = preProcessor; + } + + //~--- methods ------------------------------------------------------------ + + /** + * Method description + * + * + * @param item + */ + @Override + public void process(FileObject item) + { + preProcessor.process(item); + } + + //~--- fields ------------------------------------------------------------- + + /** Field description */ + private FileObjectPreProcessor preProcessor; + } + + + /** + * Class description + * + * + * @param + * + * @version Enter version here..., 12/06/16 + * @author Enter your name here... + */ + private static class PreProcessorHandler + { + + /** + * Constructs ... + * + * + * @param preProcessorFactorySet + * @param preProcessorSet + * @param repository + */ + public PreProcessorHandler( + Collection> preProcessorFactorySet, + Collection> preProcessorSet, + Repository repository) + { + this.preProcessorFactorySet = preProcessorFactorySet; + this.preProcessorSet = preProcessorSet; + this.repository = repository; + } + + //~--- methods ------------------------------------------------------------ + + /** + * Method description + * + * + * + * + * @param preProcessorFactorySet + * @param repository + * @param changesets + * @param items + * @param + */ + public void callPreProcessorFactories(Iterable items) + { + if (Util.isNotEmpty(preProcessorFactorySet)) + { + for (PreProcessorFactory factory : preProcessorFactorySet) { - for (T item : items) + PreProcessor preProcessor = factory.createPreProcessor(repository); + + if (preProcessor != null) { - preProcessor.process(item); + for (T item : items) + { + preProcessor.process(item); + } } } } } - } - /** - * Method description - * - * - * - * @param preProcessorFactorySet - * @param repository - * @param item - * @param - */ - private void callPreProcessorFactories( - Set> preProcessorFactorySet, - Repository repository, T item) - { - if (Util.isNotEmpty(preProcessorFactorySet)) + /** + * Method description + * + * + * + * @param preProcessorFactorySet + * @param repository + * @param item + * @param + */ + public void callPreProcessorFactories(T item) { - for (PreProcessorFactory factory : preProcessorFactorySet) + if (Util.isNotEmpty(preProcessorFactorySet)) { - PreProcessor cpp = factory.createPreProcessor(repository); - - if (cpp != null) + for (PreProcessorFactory factory : preProcessorFactorySet) { - cpp.process(item); + PreProcessor cpp = factory.createPreProcessor(repository); + + if (cpp != null) + { + cpp.process(item); + } } } } - } - /** - * Method description - * - * - * @param changesets - * - * @param preProcessorSet - * @param items - * @param - */ - private void callPreProcessors( - Set> preProcessorSet, Iterable items) - { - if (Util.isNotEmpty(preProcessorSet)) + /** + * Method description + * + * + * @param changesets + * + * @param preProcessorSet + * @param items + * @param + */ + public void callPreProcessors(Iterable items) { - for (T item : items) + if (Util.isNotEmpty(preProcessorSet)) { - callPreProcessors(preProcessorSet, item); + for (T item : items) + { + callPreProcessors(item); + } } } - } - /** - * Method description - * - * - * @param c - * - * @param preProcessorSet - * @param item - * @param - */ - private void callPreProcessors( - Set> preProcessorSet, T item) - { - if (Util.isNotEmpty(preProcessorSet)) + /** + * Method description + * + * + * @param c + * + * @param preProcessorSet + * @param item + * @param + */ + public void callPreProcessors(T item) { - for (PreProcessor preProcessor : preProcessorSet) + if (Util.isNotEmpty(preProcessorSet)) { - preProcessor.process(item); + for (PreProcessor preProcessor : preProcessorSet) + { + preProcessor.process(item); + } } } + + //~--- fields ------------------------------------------------------------- + + /** Field description */ + private Collection> preProcessorFactorySet; + + /** Field description */ + private Collection> preProcessorSet; + + /** Field description */ + private Repository repository; } + //~--- fields --------------------------------------------------------------- /** Field description */ - private Set changesetPreProcessorFactorySet; + private Collection changesetPreProcessorFactorySet; /** Field description */ - private Set changesetPreProcessorSet; + private Collection changesetPreProcessorSet; /** Field description */ - private Set fileObjectPreProcessorFactorySet; + private Collection fileObjectPreProcessorFactorySet; /** Field description */ - private Set fileObjectPreProcessorSet; + private Collection fileObjectPreProcessorSet; }