diff --git a/source/java/org/alfresco/repo/content/transform/AbstractContentTransformerLimits.java b/source/java/org/alfresco/repo/content/transform/AbstractContentTransformerLimits.java index cf1ea57d16..fa6ddef6a8 100644 --- a/source/java/org/alfresco/repo/content/transform/AbstractContentTransformerLimits.java +++ b/source/java/org/alfresco/repo/content/transform/AbstractContentTransformerLimits.java @@ -298,7 +298,7 @@ public abstract class AbstractContentTransformerLimits extends ContentTransforme { String targetExt = getExtensionOrAny(target.getKey()); TransformationOptionLimits limits = target.getValue(); - String mimetypeSuffix = TransformerConfig.EXTENSIONS_SEPARATOR.substring(1)+sourceExt+'.'+targetExt; + String mimetypeSuffix = TransformerConfig.EXTENSIONS.substring(1)+sourceExt+'.'+targetExt; deprecatedLimitsSetter(mimetypeSuffix, limits); } diff --git a/source/java/org/alfresco/repo/content/transform/ContentTransformerHelper.java b/source/java/org/alfresco/repo/content/transform/ContentTransformerHelper.java index 5c0895cc08..44233e76c1 100644 --- a/source/java/org/alfresco/repo/content/transform/ContentTransformerHelper.java +++ b/source/java/org/alfresco/repo/content/transform/ContentTransformerHelper.java @@ -237,7 +237,7 @@ public class ContentTransformerHelper implements BeanNameAware String targetMimetype = transformation.getTargetMimetype(); String sourceExt = getExtensionOrAny(sourceMimetype); String targetExt = getExtensionOrAny(targetMimetype); - deprecatedSetter(TransformerConfig.EXTENSIONS_SEPARATOR.substring(1)+sourceExt+'.'+targetExt+ + deprecatedSetter(TransformerConfig.EXTENSIONS.substring(1)+sourceExt+'.'+targetExt+ (value == null // same as: transformation instanceof ExplictTransformationDetails ? TransformerConfig.PRIORITY+"="+TransformerConfig.PRIORITY_EXPLICIT : TransformerConfig.SUPPORTED+"="+value)); diff --git a/source/java/org/alfresco/repo/content/transform/TransformerConfig.java b/source/java/org/alfresco/repo/content/transform/TransformerConfig.java index 4967a89a82..77fc836a12 100644 --- a/source/java/org/alfresco/repo/content/transform/TransformerConfig.java +++ b/source/java/org/alfresco/repo/content/transform/TransformerConfig.java @@ -68,13 +68,13 @@ public interface TransformerConfig /** * The separator between the transformer name and two mimetype extensions in a property name. */ - static final String EXTENSIONS_SEPARATOR = ".extensions."; + static final String EXTENSIONS = ".extensions."; /** * The separator between the transformer name and wildcarded mimetypes rather than extensions in a property name. - * Effectively equivalent to multiple properties using the {@link #EXTENSIONS_SEPARATOR}. + * Effectively equivalent to multiple properties using the {@link #EXTENSIONS}. */ - static final String MIMETYPES_SEPARATOR = ".mimetypes."; + static final String MIMETYPES = ".mimetypes."; /** * The suffix to property names for supported and unsupported combinations. diff --git a/source/java/org/alfresco/repo/content/transform/TransformerConfigLimits.java b/source/java/org/alfresco/repo/content/transform/TransformerConfigLimits.java index 91a2eb3026..0c252c0a45 100644 --- a/source/java/org/alfresco/repo/content/transform/TransformerConfigLimits.java +++ b/source/java/org/alfresco/repo/content/transform/TransformerConfigLimits.java @@ -19,20 +19,16 @@ package org.alfresco.repo.content.transform; import static org.alfresco.repo.content.transform.TransformerConfig.ANY; -import static org.alfresco.repo.content.transform.TransformerConfig.CONTENT; import static org.alfresco.repo.content.transform.TransformerConfig.DEFAULT_TRANSFORMER; import static org.alfresco.repo.content.transform.TransformerConfig.LIMIT_SUFFIXES; -import static org.alfresco.repo.content.transform.TransformerConfig.EXTENSIONS_SEPARATOR; import java.util.Collection; import java.util.HashMap; import java.util.Map; -import java.util.Set; import org.alfresco.repo.management.subsystems.ChildApplicationContextFactory; import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.TransformationOptionLimits; -import org.alfresco.util.Triple; /** * Provides access to transformer limits defined via properties. diff --git a/source/java/org/alfresco/repo/content/transform/TransformerPropertyNameExtractor.java b/source/java/org/alfresco/repo/content/transform/TransformerPropertyNameExtractor.java index 72d3668c58..eec0dc9b91 100644 --- a/source/java/org/alfresco/repo/content/transform/TransformerPropertyNameExtractor.java +++ b/source/java/org/alfresco/repo/content/transform/TransformerPropertyNameExtractor.java @@ -41,11 +41,9 @@ import org.alfresco.util.Triple; */ public abstract class TransformerPropertyNameExtractor { - private static String[] SEPARATORS = new String[] {TransformerConfig.EXTENSIONS_SEPARATOR , TransformerConfig.MIMETYPES_SEPARATOR}; - private static Pattern EXTENSIONS_SEPARATOR = Pattern.compile("[^].]\\."); + private static String[] SEPARATORS = new String[] {TransformerConfig.EXTENSIONS , TransformerConfig.MIMETYPES}; + private static Pattern EXTENSIONS_SEPARATOR = Pattern.compile("[^]\\\\]\\."); private static String[] NO_EXT_MATCH = new String[0]; - private static final String IS_MIMETYPE_SUBTYPE_WILDCARD_REGEX = - "(application|audio|image|message|model|multipart|text|video)/.*\\" + ANY + ".*"; /** * Returns a set of transformer name, source extension, target extension and value @@ -89,21 +87,21 @@ public abstract class TransformerPropertyNameExtractor if (ext.length == 2) { name = name.substring(0, i); - if (separator == TransformerConfig.EXTENSIONS_SEPARATOR) + if (separator == TransformerConfig.EXTENSIONS) { addTransformerSourceTargetValue(TransformerSourceTargetValues, false, name, ext[0], ext[1], value, suffix, mimetypeService); } - else // if (separator == TransformerConfig.MIMETYPES_SEPARATOR) + else if (separator == TransformerConfig.MIMETYPES) { - List sourceMimetypes = getMatchingMimetypes(ext[0], mimetypeService); - List targetMimetypes = getMatchingMimetypes(ext[1], mimetypeService); - for (String sourceMimetype : sourceMimetypes) + List sourceExtensions = getMatchingExtensions(ext[0], mimetypeService); + List targetExtensions = getMatchingExtensions(ext[1], mimetypeService); + for (String sourceExt : sourceExtensions) { - for (String targetMimetype : targetMimetypes) + for (String targetExt : targetExtensions) { addTransformerSourceTargetValue(TransformerSourceTargetValues, - true, name, sourceMimetype, targetMimetype, value, + true, name, sourceExt, targetExt, value, suffix, mimetypeService); } } @@ -162,8 +160,8 @@ public abstract class TransformerPropertyNameExtractor { int i = matcher.start(); ext = new String[2]; - ext[0] = extensions.substring(0, i); - ext[1] = extensions.substring(0, i); + ext[0] = extensions.substring(0, i+1).replaceAll("\\\\\\.", "."); + ext[1] = extensions.substring(i+2).replaceAll("\\\\\\.", "."); } return ext; } @@ -178,49 +176,24 @@ public abstract class TransformerPropertyNameExtractor * If the given mimetype string has no wildcards a list with only the given * mimetype's extension is returned. * - * @param configMimetype + * @param mimetypeWildcardRegex * @param mimetypeService * @return the list of extensions of mimetypes which match */ - private List getMatchingMimetypes( - String configMimetype, MimetypeService mimetypeService) + private List getMatchingExtensions( + String mimetypeWildcardRegex, MimetypeService mimetypeService) { - if (configMimetype == null) - { - return null; - } List matchingMimetypes = new ArrayList(1); - if (isMimetypeSubtypeWildcard(configMimetype)) + for (String mimetype : mimetypeService.getMimetypes()) { - String mimetypeWildcardRegex = configMimetype.replaceAll("\\" + ANY, ".*"); - for (String mimetype : mimetypeService.getMimetypes()) + if (mimetype.matches(mimetypeWildcardRegex)) { - if (mimetype.matches(mimetypeWildcardRegex)) - { - String ext = mimetypeService.getExtension(mimetype); - matchingMimetypes.add(ext); - } + String ext = mimetypeService.getExtension(mimetype); + matchingMimetypes.add(ext); } } - else - { - String ext = mimetypeService.getExtension(configMimetype); - matchingMimetypes.add(ext); - } return matchingMimetypes; } - - /** - * Determines if the given string is a mime type expression containing a wildcard - * in the subtype. - * - * @param mimetype - * @return whether or not the mime type contains a wildcard subtype - */ - private boolean isMimetypeSubtypeWildcard(String mimetype) - { - return (mimetype != null && mimetype.matches(IS_MIMETYPE_SUBTYPE_WILDCARD_REGEX)); - } } class TransformerSourceTargetValue