fix abstract method error of plugins which are using a version before 1.17-SNAPSHOT

This commit is contained in:
Sebastian Sdorra
2012-06-16 17:30:47 +02:00
parent 74de3b81eb
commit c7109fe380
5 changed files with 399 additions and 106 deletions

View File

@@ -38,11 +38,12 @@ package sonia.scm.repository;
import sonia.scm.plugin.ExtensionPoint; import sonia.scm.plugin.ExtensionPoint;
/** /**
* TODO for 2.0 extends {@link PreProcessor} interface.
* *
* @author Sebastian Sdorra * @author Sebastian Sdorra
*/ */
@ExtensionPoint @ExtensionPoint
public interface ChangesetPreProcessor extends PreProcessor<Changeset> public interface ChangesetPreProcessor
{ {
/** /**
@@ -51,6 +52,5 @@ public interface ChangesetPreProcessor extends PreProcessor<Changeset>
* *
* @param changeset * @param changeset
*/ */
@Override
public void process(Changeset changeset); public void process(Changeset changeset);
} }

View File

@@ -38,13 +38,13 @@ package sonia.scm.repository;
import sonia.scm.plugin.ExtensionPoint; import sonia.scm.plugin.ExtensionPoint;
/** /**
* TODO for 2.0 extends {@link PreProcessorFactory} interface.
* *
* @author Sebastian Sdorra * @author Sebastian Sdorra
* @since 1.7 * @since 1.7
*/ */
@ExtensionPoint @ExtensionPoint
public interface ChangesetPreProcessorFactory public interface ChangesetPreProcessorFactory
extends PreProcessorFactory<Changeset>
{ {
/** /**
@@ -55,6 +55,5 @@ public interface ChangesetPreProcessorFactory
* *
* @return * @return
*/ */
@Override
public ChangesetPreProcessor createPreProcessor(Repository repository); public ChangesetPreProcessor createPreProcessor(Repository repository);
} }

View File

@@ -38,12 +38,13 @@ package sonia.scm.repository;
import sonia.scm.plugin.ExtensionPoint; import sonia.scm.plugin.ExtensionPoint;
/** /**
* TODO for 2.0 extends {@link PreProcessor} interface.
* *
* @author Sebastian Sdorra * @author Sebastian Sdorra
* @since 1.10 * @since 1.10
*/ */
@ExtensionPoint @ExtensionPoint
public interface FileObjectPreProcessor extends PreProcessor<FileObject> public interface FileObjectPreProcessor
{ {
/** /**
@@ -52,6 +53,5 @@ public interface FileObjectPreProcessor extends PreProcessor<FileObject>
* *
* @param fileObject * @param fileObject
*/ */
@Override
public void process(FileObject fileObject); public void process(FileObject fileObject);
} }

View File

@@ -38,13 +38,13 @@ package sonia.scm.repository;
import sonia.scm.plugin.ExtensionPoint; import sonia.scm.plugin.ExtensionPoint;
/** /**
* TODO for 2.0 extends {@link PreProcessorFactory} interface.
* *
* @author Sebastian Sdorra * @author Sebastian Sdorra
* @since 1.10 * @since 1.10
*/ */
@ExtensionPoint @ExtensionPoint
public interface FileObjectPreProcessorFactory public interface FileObjectPreProcessorFactory
extends PreProcessorFactory<FileObject>
{ {
/** /**
@@ -55,6 +55,5 @@ public interface FileObjectPreProcessorFactory
* *
* @return * @return
*/ */
@Override
public FileObjectPreProcessor createPreProcessor(Repository repository); public FileObjectPreProcessor createPreProcessor(Repository repository);
} }

View File

@@ -33,6 +33,8 @@ package sonia.scm.repository;
//~--- non-JDK imports -------------------------------------------------------- //~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import com.google.inject.Inject; import com.google.inject.Inject;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -42,6 +44,7 @@ import sonia.scm.util.Util;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
import java.util.Collection;
import java.util.Set; import java.util.Set;
/** /**
@@ -76,10 +79,52 @@ public class PreProcessorUtil
Set<FileObjectPreProcessor> fileObjectPreProcessorSet, Set<FileObjectPreProcessor> fileObjectPreProcessorSet,
Set<FileObjectPreProcessorFactory> fileObjectPreProcessorFactorySet) Set<FileObjectPreProcessorFactory> fileObjectPreProcessorFactorySet)
{ {
this.changesetPreProcessorSet = changesetPreProcessorSet; this.changesetPreProcessorSet =
this.changesetPreProcessorFactorySet = changesetPreProcessorFactorySet; Collections2.transform(changesetPreProcessorSet,
this.fileObjectPreProcessorSet = fileObjectPreProcessorSet; new Function<ChangesetPreProcessor,
this.fileObjectPreProcessorFactorySet = fileObjectPreProcessorFactorySet; ChangesetPreProcessorWrapper>()
{
@Override
public ChangesetPreProcessorWrapper apply(ChangesetPreProcessor input)
{
return new ChangesetPreProcessorWrapper(input);
}
});
this.changesetPreProcessorFactorySet =
Collections2.transform(changesetPreProcessorFactorySet,
new Function<ChangesetPreProcessorFactory,
ChangesetPreProcessorFactoryWrapper>()
{
@Override
public ChangesetPreProcessorFactoryWrapper apply(
ChangesetPreProcessorFactory input)
{
return new ChangesetPreProcessorFactoryWrapper(input);
}
});
this.fileObjectPreProcessorSet =
Collections2.transform(fileObjectPreProcessorSet,
new Function<FileObjectPreProcessor,
FileObjectPreProcessorWrapper>()
{
@Override
public FileObjectPreProcessorWrapper apply(FileObjectPreProcessor input)
{
return new FileObjectPreProcessorWrapper(input);
}
});
this.fileObjectPreProcessorFactorySet =
Collections2.transform(fileObjectPreProcessorFactorySet,
new Function<FileObjectPreProcessorFactory,
FileObjectPreProcessorFactoryWrapper>()
{
@Override
public FileObjectPreProcessorFactoryWrapper apply(
FileObjectPreProcessorFactory input)
{
return new FileObjectPreProcessorFactoryWrapper(input);
}
});
} }
//~--- methods -------------------------------------------------------------- //~--- methods --------------------------------------------------------------
@@ -100,9 +145,13 @@ public class PreProcessorUtil
} }
EscapeUtil.escape(changeset); EscapeUtil.escape(changeset);
callPreProcessors(changesetPreProcessorSet, changeset);
callPreProcessorFactories(changesetPreProcessorFactorySet, repository, PreProcessorHandler<Changeset> handler =
changeset); new PreProcessorHandler<Changeset>(changesetPreProcessorFactorySet,
changesetPreProcessorSet, repository);
handler.callPreProcessors(changeset);
handler.callPreProcessorFactories(changeset);
} }
/** /**
@@ -122,9 +171,13 @@ public class PreProcessorUtil
} }
EscapeUtil.escape(result); EscapeUtil.escape(result);
callPreProcessors(fileObjectPreProcessorSet, result);
callPreProcessorFactories(fileObjectPreProcessorFactorySet, repository, PreProcessorHandler<FileObject> handler =
result); new PreProcessorHandler<FileObject>(fileObjectPreProcessorFactorySet,
fileObjectPreProcessorSet, repository);
handler.callPreProcessors(result);
handler.callPreProcessorFactories(result);
} }
/** /**
@@ -144,127 +197,369 @@ public class PreProcessorUtil
} }
EscapeUtil.escape(result); EscapeUtil.escape(result);
callPreProcessors(changesetPreProcessorSet, result);
callPreProcessorFactories(changesetPreProcessorFactorySet, repository, PreProcessorHandler<Changeset> handler =
result); new PreProcessorHandler<Changeset>(changesetPreProcessorFactorySet,
changesetPreProcessorSet, repository);
handler.callPreProcessors(result);
handler.callPreProcessorFactories(result);
} }
/** //~--- inner classes --------------------------------------------------------
* Method description
*
*
*
*
* @param preProcessorFactorySet
* @param repository
* @param changesets
* @param items
* @param <T>
*/
private <T> void callPreProcessorFactories(
Set<? extends PreProcessorFactory<T>> preProcessorFactorySet,
Repository repository, Iterable<T> items)
{
if (Util.isNotEmpty(preProcessorFactorySet))
{
for (PreProcessorFactory<T> factory : preProcessorFactorySet)
{
PreProcessor<T> preProcessor = factory.createPreProcessor(repository);
if (preProcessor != null) /**
* Class description
*
*
* @version Enter version here..., 12/06/16
* @author Enter your name here...
*/
private static class ChangesetPreProcessorFactoryWrapper
implements PreProcessorFactory<Changeset>
{
/**
* Constructs ...
*
*
* @param preProcessorFactory
*/
public ChangesetPreProcessorFactoryWrapper(
ChangesetPreProcessorFactory preProcessorFactory)
{
this.preProcessorFactory = preProcessorFactory;
}
//~--- methods ------------------------------------------------------------
/**
* Method description
*
*
* @param repository
*
* @return
*/
@Override
public PreProcessor<Changeset> createPreProcessor(Repository repository)
{
PreProcessor<Changeset> 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<Changeset>
{
/**
* 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<FileObject>
{
/**
* Constructs ...
*
*
* @param preProcessorFactory
*/
public FileObjectPreProcessorFactoryWrapper(
FileObjectPreProcessorFactory preProcessorFactory)
{
this.preProcessorFactory = preProcessorFactory;
}
//~--- methods ------------------------------------------------------------
/**
* Method description
*
*
* @param repository
*
* @return
*/
@Override
public PreProcessor<FileObject> createPreProcessor(Repository repository)
{
PreProcessor<FileObject> 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<FileObject>
{
/**
* 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 <T>
*
* @version Enter version here..., 12/06/16
* @author Enter your name here...
*/
private static class PreProcessorHandler<T>
{
/**
* Constructs ...
*
*
* @param preProcessorFactorySet
* @param preProcessorSet
* @param repository
*/
public PreProcessorHandler(
Collection<? extends PreProcessorFactory<T>> preProcessorFactorySet,
Collection<? extends PreProcessor<T>> preProcessorSet,
Repository repository)
{
this.preProcessorFactorySet = preProcessorFactorySet;
this.preProcessorSet = preProcessorSet;
this.repository = repository;
}
//~--- methods ------------------------------------------------------------
/**
* Method description
*
*
*
*
* @param preProcessorFactorySet
* @param repository
* @param changesets
* @param items
* @param <T>
*/
public void callPreProcessorFactories(Iterable<T> items)
{
if (Util.isNotEmpty(preProcessorFactorySet))
{
for (PreProcessorFactory<T> factory : preProcessorFactorySet)
{ {
for (T item : items) PreProcessor<T> preProcessor = factory.createPreProcessor(repository);
if (preProcessor != null)
{ {
preProcessor.process(item); for (T item : items)
{
preProcessor.process(item);
}
} }
} }
} }
} }
}
/** /**
* Method description * Method description
* *
* *
* *
* @param preProcessorFactorySet * @param preProcessorFactorySet
* @param repository * @param repository
* @param item * @param item
* @param <T> * @param <T>
*/ */
private <T> void callPreProcessorFactories( public void callPreProcessorFactories(T item)
Set<? extends PreProcessorFactory<T>> preProcessorFactorySet,
Repository repository, T item)
{
if (Util.isNotEmpty(preProcessorFactorySet))
{ {
for (PreProcessorFactory<T> factory : preProcessorFactorySet) if (Util.isNotEmpty(preProcessorFactorySet))
{ {
PreProcessor<T> cpp = factory.createPreProcessor(repository); for (PreProcessorFactory<T> factory : preProcessorFactorySet)
if (cpp != null)
{ {
cpp.process(item); PreProcessor<T> cpp = factory.createPreProcessor(repository);
if (cpp != null)
{
cpp.process(item);
}
} }
} }
} }
}
/** /**
* Method description * Method description
* *
* *
* @param changesets * @param changesets
* *
* @param preProcessorSet * @param preProcessorSet
* @param items * @param items
* @param <T> * @param <T>
*/ */
private <T> void callPreProcessors( public void callPreProcessors(Iterable<T> items)
Set<? extends PreProcessor<T>> preProcessorSet, Iterable<T> items)
{
if (Util.isNotEmpty(preProcessorSet))
{ {
for (T item : items) if (Util.isNotEmpty(preProcessorSet))
{ {
callPreProcessors(preProcessorSet, item); for (T item : items)
{
callPreProcessors(item);
}
} }
} }
}
/** /**
* Method description * Method description
* *
* *
* @param c * @param c
* *
* @param preProcessorSet * @param preProcessorSet
* @param item * @param item
* @param <T> * @param <T>
*/ */
private <T> void callPreProcessors( public void callPreProcessors(T item)
Set<? extends PreProcessor<T>> preProcessorSet, T item)
{
if (Util.isNotEmpty(preProcessorSet))
{ {
for (PreProcessor<T> preProcessor : preProcessorSet) if (Util.isNotEmpty(preProcessorSet))
{ {
preProcessor.process(item); for (PreProcessor<T> preProcessor : preProcessorSet)
{
preProcessor.process(item);
}
} }
} }
//~--- fields -------------------------------------------------------------
/** Field description */
private Collection<? extends PreProcessorFactory<T>> preProcessorFactorySet;
/** Field description */
private Collection<? extends PreProcessor<T>> preProcessorSet;
/** Field description */
private Repository repository;
} }
//~--- fields --------------------------------------------------------------- //~--- fields ---------------------------------------------------------------
/** Field description */ /** Field description */
private Set<ChangesetPreProcessorFactory> changesetPreProcessorFactorySet; private Collection<ChangesetPreProcessorFactoryWrapper> changesetPreProcessorFactorySet;
/** Field description */ /** Field description */
private Set<ChangesetPreProcessor> changesetPreProcessorSet; private Collection<ChangesetPreProcessorWrapper> changesetPreProcessorSet;
/** Field description */ /** Field description */
private Set<FileObjectPreProcessorFactory> fileObjectPreProcessorFactorySet; private Collection<FileObjectPreProcessorFactoryWrapper> fileObjectPreProcessorFactorySet;
/** Field description */ /** Field description */
private Set<FileObjectPreProcessor> fileObjectPreProcessorSet; private Collection<FileObjectPreProcessorWrapper> fileObjectPreProcessorSet;
} }