Reversed registration order of ContentTransfomers. Self-registration means that config extensions are much simpler

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2221 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2006-01-26 16:54:16 +00:00
parent 05a1f2b65f
commit a4a4830b04
12 changed files with 271 additions and 225 deletions

View File

@@ -198,7 +198,7 @@
<ref bean="copyService" />
</property>
<property name="mimetypeService">
<ref bean="mimetypeMap" />
<ref bean="mimetypeService" />
</property>
</bean>
@@ -292,7 +292,7 @@
<ref bean="ExporterService"/>
</property>
<property name="mimetypeService">
<ref bean="mimetypeMap"/>
<ref bean="mimetypeService"/>
</property>
<property name="nodeService">
<ref bean="nodeService"></ref>

View File

@@ -6,132 +6,6 @@
<!--
<import resource="classpath:alfresco/replicating-content-services-context.xml" />
-->
<bean id="mimetypeMap" class="org.alfresco.repo.content.MimetypeMap" init-method="init" >
<constructor-arg>
<ref bean="repoConfigService" />
</constructor-arg>
</bean>
<!-- Content Transformations -->
<bean id="transformer.StringExtracter" class="org.alfresco.repo.content.transform.StringExtractingContentTransformer" />
<bean id="transformer.BinaryPassThrough" class="org.alfresco.repo.content.transform.BinaryPassThroughContentTransformer" />
<bean id="transformer.PdfBox" class="org.alfresco.repo.content.transform.PdfBoxContentTransformer" />
<bean id="transformer.Poi" class="org.alfresco.repo.content.transform.PoiHssfContentTransformer" />
<bean id="transformer.TextMining" class="org.alfresco.repo.content.transform.TextMiningContentTransformer" />
<bean id="transformer.HtmlParser" class="org.alfresco.repo.content.transform.HtmlParserContentTransformer" />
<bean id="transformer.OpenOffice" class="org.alfresco.repo.content.transform.UnoContentTransformer" init-method="init">
<property name="mimetypeService">
<ref bean="mimetypeMap" />
</property>
</bean>
<bean id="transformer.complex.OpenOffice.PdfBox" class="org.alfresco.repo.content.transform.ComplexContentTransformer">
<property name="mimetypeService">
<ref bean="mimetypeMap" />
</property>
<property name="transformers">
<list>
<ref bean="transformer.OpenOffice" />
<ref bean="transformer.PdfBox" />
</list>
</property>
<property name="intermediateMimetypes">
<list>
<value>application/pdf</value>
</list>
</property>
</bean>
<!--
<bean id="transformer.JMagick" class="org.alfresco.repo.content.transform.magick.JMagickContentTransformer" init-method="init">
<property name="mimetypeMap">
<ref bean="mimetypeMap" />
</property>
</bean>
-->
<bean id="transformer.ImageMagick" class="org.alfresco.repo.content.transform.magick.ImageMagickContentTransformer" init-method="init">
<property name="mimetypeMap">
<ref bean="mimetypeMap" />
</property>
<property name="executer">
<bean name="transformer.ImageMagick.Command" class="org.alfresco.util.exec.RuntimeExec">
<property name="commandMap">
<map>
<entry key="Linux">
<value>imconvert ${source} ${options} ${target}</value>
</entry>
<entry key="*">
<value>imconvert "${source}" ${options} "${target}"</value>
</entry>
</map>
</property>
<property name="defaultProperties">
<props>
<prop key="options"></prop>
</props>
</property>
</bean>
</property>
</bean>
<!-- Content Transformation Regisitry -->
<bean id="contentTransformerRegistry" class="org.alfresco.repo.content.transform.ContentTransformerRegistry" >
<constructor-arg>
<ref bean="mimetypeMap" />
</constructor-arg>
<!-- explicit transformations to use -->
<property name="explicitTransformations">
<list>
<list>
<value>application/msword</value> <!-- from mimetype -->
<value>text/plain</value> <!-- to mimetype -->
<ref bean="transformer.TextMining" />
</list>
<list>
<value>application/pdf</value>
<value>text/plain</value>
<ref bean="transformer.PdfBox" />
</list>
</list>
</property>
<!-- transformers to fall back on in the event that an explicit transformation isn't defined -->
<property name="transformers">
<list>
<ref bean="transformer.StringExtracter" />
<ref bean="transformer.BinaryPassThrough" />
<ref bean="transformer.PdfBox" />
<ref bean="transformer.Poi" />
<ref bean="transformer.TextMining" />
<ref bean="transformer.HtmlParser" />
<ref bean="transformer.OpenOffice" />
<!-- <ref bean="transformer.JMagick" /> -->
<ref bean="transformer.ImageMagick" />
<ref bean="transformer.complex.OpenOffice.PdfBox" />
</list>
</property>
</bean>
<bean id="metadataExtracterRegistry" class="org.alfresco.repo.content.metadata.MetadataExtracterRegistry" >
<constructor-arg>
<ref bean="mimetypeMap" />
</constructor-arg>
<!-- metadata extracters -->
<property name="extracters">
<list>
<bean class="org.alfresco.repo.content.metadata.PdfBoxMetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.OfficeMetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.HtmlMetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.StringMetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.MP3MetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.OpenDocumentMetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.UnoMetadataExtracter" >
<constructor-arg>
<ref bean="mimetypeMap" />
</constructor-arg>
</bean>
</list>
</property>
</bean>
<bean id="fileContentStore" class="org.alfresco.repo.content.filestore.FileContentStore">
<constructor-arg>
@@ -159,5 +33,149 @@
<ref bean="policyComponent" />
</property>
</bean>
<bean id="mimetypeService" class="org.alfresco.repo.content.MimetypeMap" init-method="init" >
<constructor-arg>
<ref bean="repoConfigService" />
</constructor-arg>
</bean>
<bean id="metadataExtracterRegistry" class="org.alfresco.repo.content.metadata.MetadataExtracterRegistry" >
<constructor-arg>
<ref bean="mimetypeService" />
</constructor-arg>
<!-- metadata extracters -->
<property name="extracters">
<list>
<bean class="org.alfresco.repo.content.metadata.PdfBoxMetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.OfficeMetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.HtmlMetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.StringMetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.MP3MetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.OpenDocumentMetadataExtracter" />
<bean class="org.alfresco.repo.content.metadata.UnoMetadataExtracter" >
<constructor-arg>
<ref bean="mimetypeService" />
</constructor-arg>
</bean>
</list>
</property>
</bean>
<!-- Content Transformation Regisitry -->
<bean id="contentTransformerRegistry" class="org.alfresco.repo.content.transform.ContentTransformerRegistry" >
<constructor-arg>
<ref bean="mimetypeService" />
</constructor-arg>
</bean>
<!--
Abstract bean definition defining base definition for all transformers
-->
<bean id="baseContentTransformer"
class="org.alfresco.repo.content.transform.AbstractContentTransformer"
abstract="true"
init-method="register">
<property name="mimetypeService">
<ref bean="mimetypeService" />
</property>
<property name="registry">
<ref bean="contentTransformerRegistry" />
</property>
</bean>
<!-- Content Transformations -->
<bean id="transformer.StringExtracter"
class="org.alfresco.repo.content.transform.StringExtractingContentTransformer"
parent="baseContentTransformer" />
<bean id="transformer.BinaryPassThrough"
class="org.alfresco.repo.content.transform.BinaryPassThroughContentTransformer"
parent="baseContentTransformer" />
<bean id="transformer.PdfBox"
class="org.alfresco.repo.content.transform.PdfBoxContentTransformer"
parent="baseContentTransformer" >
<property name="explicitTransformations">
<list>
<bean class="org.alfresco.repo.content.transform.ContentTransformerRegistry$TransformationKey" >
<constructor-arg><value>application/pdf</value></constructor-arg>
<constructor-arg><value>text/plain</value></constructor-arg>
</bean>
</list>
</property>
</bean>
<bean id="transformer.Poi"
class="org.alfresco.repo.content.transform.PoiHssfContentTransformer"
parent="baseContentTransformer" />
<bean id="transformer.TextMining"
class="org.alfresco.repo.content.transform.TextMiningContentTransformer"
parent="baseContentTransformer" >
<property name="explicitTransformations">
<list>
<bean class="org.alfresco.repo.content.transform.ContentTransformerRegistry$TransformationKey" >
<constructor-arg><value>application/msword</value></constructor-arg>
<constructor-arg><value>text/plain</value></constructor-arg>
</bean>
</list>
</property>
</bean>
<bean id="transformer.HtmlParser"
class="org.alfresco.repo.content.transform.HtmlParserContentTransformer"
parent="baseContentTransformer" />
<bean id="transformer.OpenOffice"
class="org.alfresco.repo.content.transform.UnoContentTransformer"
parent="baseContentTransformer"
init-method="init" />
<bean id="transformer.complex.OpenOffice.PdfBox"
class="org.alfresco.repo.content.transform.ComplexContentTransformer"
parent="baseContentTransformer" >
<property name="transformers">
<list>
<ref bean="transformer.OpenOffice" />
<ref bean="transformer.PdfBox" />
</list>
</property>
<property name="intermediateMimetypes">
<list>
<value>application/pdf</value>
</list>
</property>
</bean>
<!--
<bean id="transformer.JMagick" class="org.alfresco.repo.content.transform.magick.JMagickContentTransformer" init-method="init" />
</bean>
-->
<bean id="transformer.ImageMagick"
class="org.alfresco.repo.content.transform.magick.ImageMagickContentTransformer"
parent="baseContentTransformer"
init-method="init">
<property name="executer">
<bean name="transformer.ImageMagick.Command" class="org.alfresco.util.exec.RuntimeExec">
<property name="commandMap">
<map>
<entry key="Linux">
<value>imconvert ${source} ${options} ${target}</value>
</entry>
<entry key="*">
<value>imconvert "${source}" ${options} "${target}"</value>
</entry>
</map>
</property>
<property name="defaultProperties">
<props>
<prop key="options"></prop>
</props>
</property>
</bean>
</property>
</bean>
</beans>

View File

@@ -11,7 +11,7 @@
<!-- NOTE: using Big SearchService until AR-279 is completed -->
<property name="searchService"><ref bean="SearchService" /></property>
<property name="contentService"><ref bean="ContentService" /></property>
<property name="mimetypeService"><ref bean="mimetypeMap" /></property>
<property name="mimetypeService"><ref bean="MimetypeService" /></property>
<property name="systemPaths">
<list>

View File

@@ -67,7 +67,7 @@
<property name="dictionaryService"><ref bean="dictionaryService" /></property>
<property name="nodeService"><ref bean="NodeService" /></property>
<property name="fileFolderService"><ref bean="FileFolderService" /></property>
<property name="mimetypeService"><ref bean="mimetypeMap" /></property>
<property name="mimetypeService"><ref bean="mimetypeService" /></property>
<property name="permissionService"><ref bean="permissionService"/></property>
</bean>

View File

@@ -234,10 +234,9 @@
<property name="proxyInterfaces">
<value>org.alfresco.service.cmr.repository.MimetypeService</value>
</property>
<property name="target"><ref bean="mimetypeMap"/></property>
<property name="target"><ref bean="mimetypeService"/></property>
<property name="interceptorNames">
<list>
<idref local="MimetypeService_transaction" />
<idref local="exceptionTranslator" />
<idref bean="MimetypeService_security" />
<idref local="MimetypeService_descriptor" />
@@ -245,17 +244,6 @@
</property>
</bean>
<bean id="MimetypeService_transaction" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">${server.transaction.mode.default}</prop>
</props>
</property>
</bean>
<bean id="MimetypeService_descriptor" parent="AlfrescoServiceDescriptor">
<property name="interface">
<value>org.alfresco.service.cmr.repository.MimetypeService</value>

View File

@@ -17,6 +17,7 @@
package org.alfresco.repo.content.transform;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.alfresco.error.AlfrescoRuntimeException;
@@ -42,6 +43,8 @@ public abstract class AbstractContentTransformer implements ContentTransformer
private static final Log logger = LogFactory.getLog(AbstractContentTransformer.class);
private MimetypeService mimetypeService;
private ContentTransformerRegistry registry;
private List<ContentTransformerRegistry.TransformationKey> explicitTransformations;
private double averageTime = 0.0;
private long count = 0L;
@@ -52,7 +55,17 @@ public abstract class AbstractContentTransformer implements ContentTransformer
{
averageTime = 0.0;
}
/**
* The registry to auto-register with
*
* @param registry the transformer registry
*/
public void setRegistry(ContentTransformerRegistry registry)
{
this.registry = registry;
}
/**
* Helper setter of the mimetype service. This is not always required.
*
@@ -71,6 +84,17 @@ public abstract class AbstractContentTransformer implements ContentTransformer
return mimetypeService;
}
/**
* Set the transformations that this transformer can do regardless of what it returns
* via the {@link ContentTransformer#getReliability(String, String) reliability check}.
*
* @param explicitTransformations explicit key mappings
*/
public void setExplicitTransformations(List<ContentTransformerRegistry.TransformationKey> explicitTransformations)
{
this.explicitTransformations = explicitTransformations;
}
@Override
public String toString()
{
@@ -81,6 +105,32 @@ public abstract class AbstractContentTransformer implements ContentTransformer
return sb.toString();
}
/**
* Registers this instance with the {@link #setRegistry(ContentTransformerRegistry) registry}
* if it is present.
*/
public void register()
{
if (registry == null)
{
if (logger.isDebugEnabled())
{
logger.debug("No registry assigned. Ignoring auto-registration.");
}
return;
}
// first register any explicit transformations
if (explicitTransformations != null)
{
for (ContentTransformerRegistry.TransformationKey key : explicitTransformations)
{
registry.addExplicitTransformer(key, this);
}
}
// register this instance for the fallback case
registry.addTransformer(this);
}
/**
* Convenience to fetch and check the mimetype for the given content
*

View File

@@ -64,7 +64,7 @@ public class ContentTransformerRegistry
Assert.notNull(mimetypeMap, "The MimetypeMap is mandatory");
this.mimetypeMap = mimetypeMap;
this.transformers = Collections.emptyList(); // just in case it isn't set
this.transformers = new ArrayList<ContentTransformer>(10);
transformationCache = new HashMap<TransformationKey, List<ContentTransformer>>(17);
accessCount = 0;
@@ -75,50 +75,38 @@ public class ContentTransformerRegistry
}
/**
* Provides a list of explicit transformers to use.
* Register an individual transformer against a specific transformation. This transformation
* will take precedence over any of the generally-registered transformers.
*
* @param transformations list of ( list of ( (from-mimetype)(to-mimetype)(transformer) ) )
* @param key the mapping from one mimetype to the next
* @param transformer the content transformer
*/
public void setExplicitTransformations(List<List<Object>> transformations)
public void addExplicitTransformer(TransformationKey key, ContentTransformer transformer)
{
for (List<Object> list : transformations)
transformationCache.put(key, Collections.singletonList(transformer));
// done
if (logger.isDebugEnabled())
{
if (list.size() != 3)
{
throw new AlfrescoRuntimeException(
"Explicit transformation is 'from-mimetype', 'to-mimetype' and 'transformer': \n" +
" list: " + list);
}
try
{
String sourceMimetype = (String) list.get(0);
String targetMimetype = (String) list.get(1);
ContentTransformer transformer = (ContentTransformer) list.get(2);
// create the transformation
TransformationKey key = new TransformationKey(sourceMimetype, targetMimetype);
// bypass all discovery and plug this directly into the cache
transformationCache.put(key, Collections.singletonList(transformer));
}
catch (ClassCastException e)
{
throw new AlfrescoRuntimeException(
"Explicit transformation is 'from-mimetype', 'to-mimetype' and 'transformer': \n" +
" list: " + list);
}
logger.debug("Registered explicit transformation: \n" +
" key: " + key + "\n" +
" transformer: " + transformer);
}
}
/**
* Provides a list of self-discovering transformers that the registry will fall
* back on if a transformation is not available from the explicitly set
* transformations.
*
* @param transformers all the available transformers that the registry can
* work with
* Registers an individual transformer that can be queried to check for applicability.
*
* @param transformer a content transformer
*/
public void setTransformers(List<ContentTransformer> transformers)
public void addTransformer(ContentTransformer transformer)
{
this.transformers = transformers;
transformers.add(transformer);
// done
if (logger.isDebugEnabled())
{
logger.debug("Registered general transformer: \n" +
" transformer: " + transformer);
}
}
/**

View File

@@ -16,9 +16,7 @@
*/
package org.alfresco.repo.content.transform;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.alfresco.repo.content.MimetypeMap;
@@ -26,6 +24,7 @@ import org.alfresco.repo.content.filestore.FileContentReader;
import org.alfresco.repo.content.filestore.FileContentWriter;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.util.TempFileProvider;
/**
@@ -69,22 +68,20 @@ public class ContentTransformerRegistryTest extends AbstractContentTransformerTe
{
bytes[i] = (byte)i;
}
List<ContentTransformer> transformers = new ArrayList<ContentTransformer>(5);
// create some dummy transformers for reliability tests
transformers.add(new DummyTransformer(A, B, 0.3, 10L));
transformers.add(new DummyTransformer(A, B, 0.6, 10L));
transformers.add(new DummyTransformer(A, C, 0.5, 10L));
transformers.add(new DummyTransformer(A, C, 1.0, 10L));
transformers.add(new DummyTransformer(B, C, 0.2, 10L));
// create some dummy transformers for speed tests
transformers.add(new DummyTransformer(A, D, 1.0, 20L));
transformers.add(new DummyTransformer(A, D, 1.0, 20L));
transformers.add(new DummyTransformer(A, D, 1.0, 10L)); // the fast one
transformers.add(new DummyTransformer(A, D, 1.0, 20L));
transformers.add(new DummyTransformer(A, D, 1.0, 20L));
// create the dummyRegistry
dummyRegistry = new ContentTransformerRegistry(mimetypeMap);
dummyRegistry.setTransformers(transformers);
// create some dummy transformers for reliability tests
new DummyTransformer(mimetypeMap, dummyRegistry, A, B, 0.3, 10L);
new DummyTransformer(mimetypeMap, dummyRegistry, A, B, 0.6, 10L);
new DummyTransformer(mimetypeMap, dummyRegistry, A, C, 0.5, 10L);
new DummyTransformer(mimetypeMap, dummyRegistry, A, C, 1.0, 10L);
new DummyTransformer(mimetypeMap, dummyRegistry, B, C, 0.2, 10L);
// create some dummy transformers for speed tests
new DummyTransformer(mimetypeMap, dummyRegistry, A, D, 1.0, 20L);
new DummyTransformer(mimetypeMap, dummyRegistry, A, D, 1.0, 20L);
new DummyTransformer(mimetypeMap, dummyRegistry, A, D, 1.0, 10L); // the fast one
new DummyTransformer(mimetypeMap, dummyRegistry, A, D, 1.0, 20L);
new DummyTransformer(mimetypeMap, dummyRegistry, A, D, 1.0, 20L);
}
/**
@@ -161,17 +158,18 @@ public class ContentTransformerRegistryTest extends AbstractContentTransformerTe
*/
public void testExplicitTransformation()
{
ContentTransformer dummyTransformer = new DummyTransformer(
MimetypeMap.MIMETYPE_FLASH, MimetypeMap.MIMETYPE_EXCEL, 1.0, 12345);
List<Object> transform = new ArrayList<Object>(3);
transform.add(MimetypeMap.MIMETYPE_FLASH);
transform.add(MimetypeMap.MIMETYPE_EXCEL);
transform.add(dummyTransformer);
List<List<Object>> explicitTransformers = Collections.singletonList(transform);
// add it to the registry
dummyRegistry.setExplicitTransformations(explicitTransformers);
AbstractContentTransformer dummyTransformer = new DummyTransformer(
mimetypeMap,
dummyRegistry,
MimetypeMap.MIMETYPE_FLASH, MimetypeMap.MIMETYPE_EXCEL,
1.0, 12345);
// set an explicit transformation
ContentTransformerRegistry.TransformationKey key =
new ContentTransformerRegistry.TransformationKey(
MimetypeMap.MIMETYPE_FLASH, MimetypeMap.MIMETYPE_EXCEL);
dummyTransformer.setExplicitTransformations(Collections.singletonList(key));
// register again
dummyTransformer.register();
// get the appropriate transformer for the bizarre mapping
ContentTransformer checkTransformer = dummyRegistry.getTransformer(
@@ -192,13 +190,20 @@ public class ContentTransformerRegistryTest extends AbstractContentTransformerTe
private double reliability;
private long transformationTime;
public DummyTransformer(String sourceMimetype, String targetMimetype,
public DummyTransformer(
MimetypeService mimetypeService,
ContentTransformerRegistry registry,
String sourceMimetype, String targetMimetype,
double reliability, long transformationTime)
{
super.setMimetypeService(mimetypeService);
super.setRegistry(registry);
this.sourceMimetype = sourceMimetype;
this.targetMimetype = targetMimetype;
this.reliability = reliability;
this.transformationTime = transformationTime;
// register
register();
}
public double getReliability(String sourceMimetype, String targetMimetype)

View File

@@ -137,7 +137,8 @@ public class UnoContentTransformer extends AbstractContentTransformer
}
/**
* Perform bean initialization
* Connects to the OpenOffice server. If successful, then
* {@link AbstractContentTransformer#register() auto-registers}.
*/
public synchronized void init()
{
@@ -147,6 +148,8 @@ public class UnoContentTransformer extends AbstractContentTransformer
{
connection.connect();
isConnected = true;
// register
super.register();
}
catch (ConnectException e)
{

View File

@@ -44,7 +44,6 @@ public abstract class AbstractImageMagickContentTransformer extends AbstractCont
private static final Log logger = LogFactory.getLog(AbstractImageMagickContentTransformer.class);
private MimetypeMap mimetypeMap;
private boolean available;
public AbstractImageMagickContentTransformer()
@@ -52,16 +51,6 @@ public abstract class AbstractImageMagickContentTransformer extends AbstractCont
this.available = false;
}
/**
* Set the mimetype map to resolve mimetypes to file extensions.
*
* @param mimetypeMap
*/
public void setMimetypeMap(MimetypeMap mimetypeMap)
{
this.mimetypeMap = mimetypeMap;
}
/**
* @return Returns true if the transformer is functioning otherwise false
*/
@@ -82,11 +71,13 @@ public abstract class AbstractImageMagickContentTransformer extends AbstractCont
/**
* Checks for the JMagick and ImageMagick dependencies, using the common
* {@link #transformInternal(File, File) transformation method} to check
* that the sample image can be converted.
* that the sample image can be converted.
* <p>
* If initialization is successful, then autoregistration takes place.
*/
public void init()
{
if (mimetypeMap == null)
if (getMimetypeService() == null)
{
throw new AlfrescoRuntimeException("MimetypeMap not present");
}
@@ -124,6 +115,9 @@ public abstract class AbstractImageMagickContentTransformer extends AbstractCont
}
// we can be sure that it works
setAvailable(true);
// register
super.register();
}
catch (Throwable e)
{
@@ -192,8 +186,8 @@ public abstract class AbstractImageMagickContentTransformer extends AbstractCont
String targetMimetype = getMimetype(writer);
// get the extensions to use
String sourceExtension = mimetypeMap.getExtension(sourceMimetype);
String targetExtension = mimetypeMap.getExtension(targetMimetype);
String sourceExtension = getMimetypeService().getExtension(sourceMimetype);
String targetExtension = getMimetypeService().getExtension(targetMimetype);
if (sourceExtension == null || targetExtension == null)
{
throw new AlfrescoRuntimeException("Unknown extensions for mimetypes: \n" +

View File

@@ -39,7 +39,7 @@ public class ImageMagickContentTransformerTest extends AbstractContentTransforme
executer.setDefaultProperties(Collections.singletonMap("options", ""));
transformer = new ImageMagickContentTransformer();
transformer.setMimetypeMap(mimetypeMap);
transformer.setMimetypeService(mimetypeMap);
transformer.setExecuter(executer);
transformer.init();
}

View File

@@ -36,7 +36,7 @@ public class JMagickContentTransformerTest extends AbstractContentTransformerTes
public void onSetUpInTransaction() throws Exception
{
transformer = new JMagickContentTransformer();
transformer.setMimetypeMap(mimetypeMap);
transformer.setMimetypeService(mimetypeMap);
transformer.init();
}