From 19f437d65b76d755c0d764171fa315ed53f4721d Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sun, 24 Jun 2012 19:19:45 +0200 Subject: [PATCH] return a clone of blame result to fix pre processor behavior --- .../java/sonia/scm/repository/BlameLine.java | 27 ++++++++++++++++- .../sonia/scm/repository/BlameResult.java | 29 +++++++++++++++++-- .../repository/api/BlameCommandBuilder.java | 2 ++ 3 files changed, 55 insertions(+), 3 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/BlameLine.java b/scm-core/src/main/java/sonia/scm/repository/BlameLine.java index 7d60e6e9f6..9988287b87 100644 --- a/scm-core/src/main/java/sonia/scm/repository/BlameLine.java +++ b/scm-core/src/main/java/sonia/scm/repository/BlameLine.java @@ -43,7 +43,7 @@ import com.google.common.base.Objects; * @author Sebastian Sdorra * @since 1.8 */ -public class BlameLine +public class BlameLine implements Cloneable { /** @@ -77,6 +77,31 @@ public class BlameLine //~--- methods -------------------------------------------------------------- + /** + * Create a clone of this {@link BlameLine} object. + * + * + * @return clone of this {@link BlameLine} + * + * @since 1.17 + */ + @Override + public BlameLine clone() + { + BlameLine blameLine = null; + + try + { + blameLine = (BlameLine) super.clone(); + } + catch (CloneNotSupportedException ex) + { + throw new RuntimeException(ex); + } + + return blameLine; + } + /** * {@inheritDoc} * diff --git a/scm-core/src/main/java/sonia/scm/repository/BlameResult.java b/scm-core/src/main/java/sonia/scm/repository/BlameResult.java index 08b6664ac3..8f3280e5c4 100644 --- a/scm-core/src/main/java/sonia/scm/repository/BlameResult.java +++ b/scm-core/src/main/java/sonia/scm/repository/BlameResult.java @@ -49,7 +49,7 @@ import javax.xml.bind.annotation.XmlRootElement; /** * Changeset information by line for a given file. - * + * * TODO for 2.0 implement {@link Iterable} * * @author Sebastian Sdorra @@ -57,7 +57,7 @@ import javax.xml.bind.annotation.XmlRootElement; */ @XmlRootElement(name = "blame-result") @XmlAccessorType(XmlAccessType.FIELD) -public class BlameResult +public class BlameResult implements Cloneable { /** @@ -93,6 +93,31 @@ public class BlameResult //~--- methods -------------------------------------------------------------- + /** + * Create a clone of this {@link blameResult} object. + * + * + * @return clone of this {@link blameResult} + * + * @since 1.17 + */ + @Override + public BlameResult clone() + { + BlameResult blameResult = null; + + try + { + blameResult = (BlameResult) super.clone(); + } + catch (CloneNotSupportedException ex) + { + throw new RuntimeException(ex); + } + + return blameResult; + } + /** * {@inheritDoc} * diff --git a/scm-core/src/main/java/sonia/scm/repository/api/BlameCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/BlameCommandBuilder.java index aadff564a2..7863613963 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/BlameCommandBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/BlameCommandBuilder.java @@ -188,6 +188,8 @@ public final class BlameCommandBuilder if (!disablePreProcessors && (result != null)) { + // clone result to fix pre processor behavior + result = result.clone(); preProcessorUtil.prepareForReturn(repository, result); }