From 1e2a17611c3e73ecb036261855f549e46034cd07 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Mon, 8 Oct 2012 20:10:20 +0000 Subject: [PATCH] ALF-16201 TransformationOptions Should Be More Easily Extended - protected clone() method added. - public deepCopy() method added. - ThumbnailRegistry now calls deepCopy(). git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@42450 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/thumbnail/ThumbnailRegistry.java | 2 +- .../cmr/repository/TransformationOptions.java | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/source/java/org/alfresco/repo/thumbnail/ThumbnailRegistry.java b/source/java/org/alfresco/repo/thumbnail/ThumbnailRegistry.java index 0be52ab5d8..9bd05bccad 100644 --- a/source/java/org/alfresco/repo/thumbnail/ThumbnailRegistry.java +++ b/source/java/org/alfresco/repo/thumbnail/ThumbnailRegistry.java @@ -263,7 +263,7 @@ public class ThumbnailRegistry implements ApplicationContextAware, ApplicationLi public boolean isThumbnailDefinitionAvailable(String sourceUrl, String sourceMimetype, long sourceSize, NodeRef sourceNodeRef, ThumbnailDefinition thumbnailDefinition) { // Copy the thumbnail's TransformationOptions and set the sourceNodeRef, for use by transformers and debug. - TransformationOptions options = new TransformationOptions(thumbnailDefinition.getTransformationOptions()); + TransformationOptions options = thumbnailDefinition.getTransformationOptions().deepCopy(); options.setSourceNodeRef(sourceNodeRef); // Log the following getTransform() as trace so we can see the wood for the trees diff --git a/source/java/org/alfresco/service/cmr/repository/TransformationOptions.java b/source/java/org/alfresco/service/cmr/repository/TransformationOptions.java index 5d06f96f13..a422c9f1ee 100644 --- a/source/java/org/alfresco/service/cmr/repository/TransformationOptions.java +++ b/source/java/org/alfresco/service/cmr/repository/TransformationOptions.java @@ -35,7 +35,7 @@ import org.alfresco.service.namespace.QName; * @author Roy Wetherall * @since 3.0.0 */ -public class TransformationOptions +public class TransformationOptions implements Cloneable { /** Option map names to preserve backward compatibility */ public static final String OPT_SOURCE_NODEREF = "contentReaderNodeRef"; @@ -106,6 +106,28 @@ public class TransformationOptions set(optionsMap); } + @Override + protected TransformationOptions clone() throws CloneNotSupportedException + { + TransformationOptions clone = (TransformationOptions) super.clone(); + clone.limits = new TransformationOptionLimits(); + clone.set(toMap()); + return clone; + } + + public TransformationOptions deepCopy() + { + try + { + return clone(); + } + catch (CloneNotSupportedException e) + { + // Not thrown + } + return null; + } + /** * Sets options from the supplied map. * @param optionsMap