diff --git a/scm-core/src/main/java/sonia/scm/repository/BrowserResult.java b/scm-core/src/main/java/sonia/scm/repository/BrowserResult.java index 7230b2ab48..dbcf1cf91f 100644 --- a/scm-core/src/main/java/sonia/scm/repository/BrowserResult.java +++ b/scm-core/src/main/java/sonia/scm/repository/BrowserResult.java @@ -55,7 +55,7 @@ import javax.xml.bind.annotation.XmlRootElement; */ @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "browser-result") -public class BrowserResult implements Iterable +public class BrowserResult implements Iterable, Cloneable { /** @@ -84,6 +84,31 @@ public class BrowserResult implements Iterable //~--- methods -------------------------------------------------------------- + /** + * Create a clone of this {@link BrowserResult} object. + * + * + * @return clone of this {@link BrowserResult} + * + * @since 1.17 + */ + @Override + public BrowserResult clone() + { + BrowserResult browserResult = null; + + try + { + browserResult = (BrowserResult) super.clone(); + } + catch (CloneNotSupportedException ex) + { + throw new RuntimeException(ex); + } + + return browserResult; + } + /** * {@inheritDoc} * diff --git a/scm-core/src/main/java/sonia/scm/repository/FileObject.java b/scm-core/src/main/java/sonia/scm/repository/FileObject.java index 089ac48361..27c03d22c9 100644 --- a/scm-core/src/main/java/sonia/scm/repository/FileObject.java +++ b/scm-core/src/main/java/sonia/scm/repository/FileObject.java @@ -56,6 +56,31 @@ import javax.xml.bind.annotation.XmlRootElement; public class FileObject implements LastModifiedAware { + /** + * Create a clone of this {@link FileObject} object. + * + * + * @return clone of this {@link FileObject} + * + * @since 1.17 + */ + @Override + public FileObject clone() + { + FileObject fileObject = null; + + try + { + fileObject = (FileObject) super.clone(); + } + catch (CloneNotSupportedException ex) + { + throw new RuntimeException(ex); + } + + return fileObject; + } + /** * {@inheritDoc} * diff --git a/scm-core/src/main/java/sonia/scm/repository/Person.java b/scm-core/src/main/java/sonia/scm/repository/Person.java index 29ea5b3d5b..74f44317c9 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Person.java +++ b/scm-core/src/main/java/sonia/scm/repository/Person.java @@ -56,7 +56,7 @@ import javax.xml.bind.annotation.XmlRootElement; */ @XmlRootElement(name = "person") @XmlAccessorType(XmlAccessType.FIELD) -public class Person implements Validateable, Serializable +public class Person implements Validateable, Serializable, Cloneable { /** Field description */ @@ -130,6 +130,31 @@ public class Person implements Validateable, Serializable return person; } + /** + * Create a clone of this {@link Person} object. + * + * + * @return clone of this {@link Person} + * + * @since 1.17 + */ + @Override + public Person clone() + { + Person person = null; + + try + { + person = (Person) super.clone(); + } + catch (CloneNotSupportedException ex) + { + throw new RuntimeException(ex); + } + + return person; + } + /** * {@inheritDoc} * diff --git a/scm-core/src/main/java/sonia/scm/repository/SubRepository.java b/scm-core/src/main/java/sonia/scm/repository/SubRepository.java index a00784cae3..572a92dd05 100644 --- a/scm-core/src/main/java/sonia/scm/repository/SubRepository.java +++ b/scm-core/src/main/java/sonia/scm/repository/SubRepository.java @@ -50,7 +50,7 @@ import javax.xml.bind.annotation.XmlRootElement; */ @XmlRootElement(name = "subrepository") @XmlAccessorType(XmlAccessType.FIELD) -public class SubRepository +public class SubRepository implements Cloneable { /** @@ -100,6 +100,31 @@ public class SubRepository //~--- methods -------------------------------------------------------------- + /** + * Create a clone of this {@link SubRepository} object. + * + * + * @return clone of this {@link SubRepository} + * + * @since 1.17 + */ + @Override + public SubRepository clone() + { + SubRepository subRepository = null; + + try + { + subRepository = (SubRepository) super.clone(); + } + catch (CloneNotSupportedException ex) + { + throw new RuntimeException(ex); + } + + return subRepository; + } + /** * {@inheritDoc} * diff --git a/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java index 053ef06ac9..bb78e4a661 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java @@ -184,6 +184,7 @@ public final class BrowseCommandBuilder if (!disablePreProcessors && (result != null)) { + result = result.clone(); preProcessorUtil.prepareForReturn(repository, result); List fileObjects = result.getFiles();