added property to disable escaping property for blame, browse and log command

This commit is contained in:
Sebastian Sdorra
2013-12-27 15:36:44 +01:00
parent 5f782811a2
commit 8274697426
4 changed files with 172 additions and 54 deletions

View File

@@ -30,6 +30,7 @@
*/
package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
@@ -76,18 +77,16 @@ public class PreProcessorUtil
* @param blameLinePreProcessorFactorySet
*/
@Inject
public PreProcessorUtil(
Set<ChangesetPreProcessor> changesetPreProcessorSet,
Set<ChangesetPreProcessorFactory> changesetPreProcessorFactorySet,
Set<FileObjectPreProcessor> fileObjectPreProcessorSet,
Set<FileObjectPreProcessorFactory> fileObjectPreProcessorFactorySet,
Set<BlameLinePreProcessor> blameLinePreProcessorSet,
Set<BlameLinePreProcessorFactory> blameLinePreProcessorFactorySet)
public PreProcessorUtil(Set<ChangesetPreProcessor> changesetPreProcessorSet,
Set<ChangesetPreProcessorFactory> changesetPreProcessorFactorySet,
Set<FileObjectPreProcessor> fileObjectPreProcessorSet,
Set<FileObjectPreProcessorFactory> fileObjectPreProcessorFactorySet,
Set<BlameLinePreProcessor> blameLinePreProcessorSet,
Set<BlameLinePreProcessorFactory> blameLinePreProcessorFactorySet)
{
this.changesetPreProcessorSet =
Collections2.transform(changesetPreProcessorSet,
new Function<ChangesetPreProcessor,
ChangesetPreProcessorWrapper>()
new Function<ChangesetPreProcessor, ChangesetPreProcessorWrapper>()
{
@Override
public ChangesetPreProcessorWrapper apply(ChangesetPreProcessor input)
@@ -97,20 +96,19 @@ public class PreProcessorUtil
});
this.changesetPreProcessorFactorySet =
Collections2.transform(changesetPreProcessorFactorySet,
new Function<ChangesetPreProcessorFactory,
ChangesetPreProcessorFactoryWrapper>()
new Function<ChangesetPreProcessorFactory,
ChangesetPreProcessorFactoryWrapper>()
{
@Override
public ChangesetPreProcessorFactoryWrapper apply(
ChangesetPreProcessorFactory input)
ChangesetPreProcessorFactory input)
{
return new ChangesetPreProcessorFactoryWrapper(input);
}
});
this.fileObjectPreProcessorSet =
Collections2.transform(fileObjectPreProcessorSet,
new Function<FileObjectPreProcessor,
FileObjectPreProcessorWrapper>()
new Function<FileObjectPreProcessor, FileObjectPreProcessorWrapper>()
{
@Override
public FileObjectPreProcessorWrapper apply(FileObjectPreProcessor input)
@@ -120,12 +118,12 @@ public class PreProcessorUtil
});
this.fileObjectPreProcessorFactorySet =
Collections2.transform(fileObjectPreProcessorFactorySet,
new Function<FileObjectPreProcessorFactory,
FileObjectPreProcessorFactoryWrapper>()
new Function<FileObjectPreProcessorFactory,
FileObjectPreProcessorFactoryWrapper>()
{
@Override
public FileObjectPreProcessorFactoryWrapper apply(
FileObjectPreProcessorFactory input)
FileObjectPreProcessorFactory input)
{
return new FileObjectPreProcessorFactoryWrapper(input);
}
@@ -148,14 +146,14 @@ public class PreProcessorUtil
if (logger.isTraceEnabled())
{
logger.trace("prepare blame line {} of repository {} for return",
blameLine.getLineNumber(), repository.getName());
blameLine.getLineNumber(), repository.getName());
}
EscapeUtil.escape(blameLine);
PreProcessorHandler<BlameLine> handler =
new PreProcessorHandler<BlameLine>(blameLinePreProcessorFactorySet,
blameLinePreProcessorSet, repository);
blameLinePreProcessorSet, repository);
handler.callPreProcessors(blameLine);
handler.callPreProcessorFactories(blameLine);
@@ -169,18 +167,37 @@ public class PreProcessorUtil
* @param blameResult
*/
public void prepareForReturn(Repository repository, BlameResult blameResult)
{
prepareForReturn(repository, blameResult, true);
}
/**
* Method description
*
*
* @param repository
* @param blameResult
* @param escape
*
* @since 1.35
*/
public void prepareForReturn(Repository repository, BlameResult blameResult,
boolean escape)
{
if (logger.isTraceEnabled())
{
logger.trace("prepare blame result of repository {} for return",
repository.getName());
repository.getName());
}
EscapeUtil.escape(blameResult);
if (escape)
{
EscapeUtil.escape(blameResult);
}
PreProcessorHandler<BlameLine> handler =
new PreProcessorHandler<BlameLine>(blameLinePreProcessorFactorySet,
blameLinePreProcessorSet, repository);
blameLinePreProcessorSet, repository);
handler.callPreProcessors(blameResult.getBlameLines());
handler.callPreProcessorFactories(blameResult.getBlameLines());
@@ -198,14 +215,14 @@ public class PreProcessorUtil
if (logger.isTraceEnabled())
{
logger.trace("prepare changeset {} of repository {} for return",
changeset.getId(), repository.getName());
changeset.getId(), repository.getName());
}
EscapeUtil.escape(changeset);
PreProcessorHandler<Changeset> handler =
new PreProcessorHandler<Changeset>(changesetPreProcessorFactorySet,
changesetPreProcessorSet, repository);
changesetPreProcessorSet, repository);
handler.callPreProcessors(changeset);
handler.callPreProcessorFactories(changeset);
@@ -219,18 +236,69 @@ public class PreProcessorUtil
* @param result
*/
public void prepareForReturn(Repository repository, BrowserResult result)
{
prepareForReturn(repository, result, true);
}
/**
* Method description
*
*
* @param repository
* @param result
* @param escape
*
* @since 1.35
*/
public void prepareForReturn(Repository repository, BrowserResult result,
boolean escape)
{
if (logger.isTraceEnabled())
{
logger.trace("prepare browser result of repository {} for return",
repository.getName());
repository.getName());
}
EscapeUtil.escape(result);
if (escape)
{
EscapeUtil.escape(result);
}
PreProcessorHandler<FileObject> handler =
new PreProcessorHandler<FileObject>(fileObjectPreProcessorFactorySet,
fileObjectPreProcessorSet, repository);
fileObjectPreProcessorSet, repository);
handler.callPreProcessors(result);
handler.callPreProcessorFactories(result);
}
/**
* Method description
*
*
* @param repository
* @param result
* @param escape
*
* @since 1.35
*/
public void prepareForReturn(Repository repository,
ChangesetPagingResult result, boolean escape)
{
if (logger.isTraceEnabled())
{
logger.trace("prepare changesets of repository {} for return",
repository.getName());
}
if (escape)
{
EscapeUtil.escape(result);
}
PreProcessorHandler<Changeset> handler =
new PreProcessorHandler<Changeset>(changesetPreProcessorFactorySet,
changesetPreProcessorSet, repository);
handler.callPreProcessors(result);
handler.callPreProcessorFactories(result);
@@ -244,22 +312,9 @@ public class PreProcessorUtil
* @param result
*/
public void prepareForReturn(Repository repository,
ChangesetPagingResult result)
ChangesetPagingResult result)
{
if (logger.isTraceEnabled())
{
logger.trace("prepare changesets of repository {} for return",
repository.getName());
}
EscapeUtil.escape(result);
PreProcessorHandler<Changeset> handler =
new PreProcessorHandler<Changeset>(changesetPreProcessorFactorySet,
changesetPreProcessorSet, repository);
handler.callPreProcessors(result);
handler.callPreProcessorFactories(result);
prepareForReturn(repository, result, true);
}
//~--- inner classes --------------------------------------------------------
@@ -272,7 +327,7 @@ public class PreProcessorUtil
* @author Enter your name here...
*/
private static class ChangesetPreProcessorFactoryWrapper
implements PreProcessorFactory<Changeset>
implements PreProcessorFactory<Changeset>
{
/**
@@ -282,7 +337,7 @@ public class PreProcessorUtil
* @param preProcessorFactory
*/
public ChangesetPreProcessorFactoryWrapper(
ChangesetPreProcessorFactory preProcessorFactory)
ChangesetPreProcessorFactory preProcessorFactory)
{
this.preProcessorFactory = preProcessorFactory;
}
@@ -327,7 +382,7 @@ public class PreProcessorUtil
* @author Enter your name here...
*/
private static class ChangesetPreProcessorWrapper
implements PreProcessor<Changeset>
implements PreProcessor<Changeset>
{
/**
@@ -370,7 +425,7 @@ public class PreProcessorUtil
* @author Enter your name here...
*/
private static class FileObjectPreProcessorFactoryWrapper
implements PreProcessorFactory<FileObject>
implements PreProcessorFactory<FileObject>
{
/**
@@ -380,7 +435,7 @@ public class PreProcessorUtil
* @param preProcessorFactory
*/
public FileObjectPreProcessorFactoryWrapper(
FileObjectPreProcessorFactory preProcessorFactory)
FileObjectPreProcessorFactory preProcessorFactory)
{
this.preProcessorFactory = preProcessorFactory;
}
@@ -426,7 +481,7 @@ public class PreProcessorUtil
* @author Enter your name here...
*/
private static class FileObjectPreProcessorWrapper
implements PreProcessor<FileObject>
implements PreProcessor<FileObject>
{
/**
@@ -482,9 +537,9 @@ public class PreProcessorUtil
* @param repository
*/
public PreProcessorHandler(
Collection<? extends PreProcessorFactory<T>> preProcessorFactorySet,
Collection<? extends PreProcessor<T>> preProcessorSet,
Repository repository)
Collection<? extends PreProcessorFactory<T>> preProcessorFactorySet,
Collection<? extends PreProcessor<T>> preProcessorSet,
Repository repository)
{
this.preProcessorFactorySet = preProcessorFactorySet;
this.preProcessorSet = preProcessorSet;

View File

@@ -190,7 +190,7 @@ public final class BlameCommandBuilder
if (!disablePreProcessors && (result != null))
{
preProcessorUtil.prepareForReturn(repository, result);
preProcessorUtil.prepareForReturn(repository, result, !disableEscaping);
}
return result;
@@ -214,6 +214,24 @@ public final class BlameCommandBuilder
return this;
}
/**
* Disable html escaping for the returned blame lines. By default all
* blame lines are html escaped.
*
*
* @param disableEscaping true to disable the html escaping
*
* @return {@code this}
*
* @since 1.35
*/
public BlameCommandBuilder setDisableEscaping(boolean disableEscaping)
{
this.disableEscaping = disableEscaping;
return this;
}
/**
* Disable the execution of pre processors.
@@ -349,6 +367,9 @@ public final class BlameCommandBuilder
/** the cache */
private Cache<CacheKey, BlameResult> cache;
/** disable escaping */
private boolean disableEscaping = false;
/** disable change */
private boolean disableCache = false;

View File

@@ -186,7 +186,7 @@ public final class BrowseCommandBuilder
if (!disablePreProcessors && (result != null))
{
preProcessorUtil.prepareForReturn(repository, result);
preProcessorUtil.prepareForReturn(repository, result, !disableEscaping);
List<FileObject> fileObjects = result.getFiles();
@@ -218,6 +218,24 @@ public final class BrowseCommandBuilder
return this;
}
/**
* Disable html escaping for the returned file objects. By default all
* file objects are html escaped.
*
*
* @param disableEscaping true to disable the html escaping
*
* @return {@code this}
*
* @since 1.35
*/
public BrowseCommandBuilder setDisableEscaping(boolean disableEscaping)
{
this.disableEscaping = disableEscaping;
return this;
}
/**
* Disabling the last commit means that every call to
@@ -422,6 +440,9 @@ public final class BrowseCommandBuilder
/** cache */
private Cache<CacheKey, BrowserResult> cache;
/** disable escaping */
private boolean disableEscaping = false;
/** disables the cache */
private boolean disableCache = false;

View File

@@ -273,7 +273,7 @@ public final class LogCommandBuilder
if (!disablePreProcessors && (cpr != null))
{
preProcessorUtil.prepareForReturn(repository, cpr);
preProcessorUtil.prepareForReturn(repository, cpr, !disableEscaping);
}
return cpr;
@@ -315,6 +315,24 @@ public final class LogCommandBuilder
return this;
}
/**
* Disable html escaping for the returned changesets. By default all
* changesets are html escaped.
*
*
* @param disableEscaping true to disable the html escaping
*
* @return {@code this}
*
* @since 1.35
*/
public LogCommandBuilder setDisableEscaping(boolean disableEscaping)
{
this.disableEscaping = disableEscaping;
return this;
}
/**
* Disable the execution of pre processors.
*
@@ -525,6 +543,9 @@ public final class LogCommandBuilder
/** cache for changesets */
private Cache<CacheKey, ChangesetPagingResult> cache;
/** disable escaping */
private boolean disableEscaping = false;
/** disable cache */
private boolean disableCache = false;