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 3e64faed7b..0c87c3980f 100644 --- a/scm-core/src/main/java/sonia/scm/repository/PreProcessorUtil.java +++ b/scm-core/src/main/java/sonia/scm/repository/PreProcessorUtil.java @@ -211,6 +211,22 @@ public class PreProcessorUtil * @param changeset */ public void prepareForReturn(Repository repository, Changeset changeset) + { + prepareForReturn(repository, changeset, true); + } + + /** + * Method description + * + * + * @param repository + * @param changeset + * @param escape + * + * @since 1.35 + */ + public void prepareForReturn(Repository repository, Changeset changeset, + boolean escape) { if (logger.isTraceEnabled()) { @@ -218,7 +234,10 @@ public class PreProcessorUtil changeset.getId(), repository.getName()); } - EscapeUtil.escape(changeset); + if (escape) + { + EscapeUtil.escape(changeset); + } PreProcessorHandler handler = new PreProcessorHandler(changesetPreProcessorFactorySet, diff --git a/scm-core/src/main/java/sonia/scm/repository/api/HookChangesetBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/HookChangesetBuilder.java index 2a6c9ac533..c06e227d5f 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/HookChangesetBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/HookChangesetBuilder.java @@ -95,9 +95,9 @@ public final class HookChangesetBuilder /** * Returns a immutable {@link List} of added {@link Changeset}'s. - * Note: Use this method only if you need a {@link List}, if - * you just want to iterate over the {@link Changeset}'s use - * {@link #getChangesets()} instead. The {@link #getChangesets()} needs less + * Note: Use this method only if you need a {@link List}, if + * you just want to iterate over the {@link Changeset}'s use + * {@link #getChangesets()} instead. The {@link #getChangesets()} needs less * memory and should be much more faster then this method. * * @return immutable {@link List} of added {@link Changeset}'s @@ -108,7 +108,7 @@ public final class HookChangesetBuilder } /** - * Returns an {@link Iterable} which is able to return all {@link Changeset}s + * Returns an {@link Iterable} which is able to return all {@link Changeset}s * which are added to the repository. * * @return {@link Iterable} for added {@link Changeset}s @@ -132,7 +132,8 @@ public final class HookChangesetBuilder try { copy = DeepCopy.copy(c); - preProcessorUtil.prepareForReturn(repository, copy); + preProcessorUtil.prepareForReturn(repository, copy, + !disableEscaping); } catch (IOException ex) { @@ -155,6 +156,24 @@ public final class HookChangesetBuilder //~--- set methods ---------------------------------------------------------- + /** + * 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 HookChangesetBuilder setDisableEscaping(boolean disableEscaping) + { + this.disableEscaping = disableEscaping; + + return this; + } + /** * Disable the execution of pre processors. * @@ -173,6 +192,9 @@ public final class HookChangesetBuilder //~--- fields --------------------------------------------------------------- + /** disable escaping */ + private boolean disableEscaping = false; + /** disable pre processors marker */ private boolean disablePreProcessors = false;