Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)

80349: MNT-11779 Cannot create dynamic transformer transformer.complex.JodConverter... ERRORs in log
      - Allow Enterprise or AMP specific transformers to be ignored.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@82735 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Will Abson
2014-09-03 15:26:04 +00:00
parent d588638ae9
commit 10ff05205d
6 changed files with 190 additions and 33 deletions

View File

@@ -25,6 +25,12 @@
<property name="globalProperties"> <property name="globalProperties">
<ref bean="global-properties" /> <ref bean="global-properties" />
</property> </property>
<property name="moduleService">
<ref bean="ModuleService" />
</property>
<property name="descriptorService">
<ref bean="descriptorComponent" />
</property>
</bean> </bean>
<!-- Selects the transformer to be used --> <!-- Selects the transformer to be used -->

View File

@@ -165,6 +165,7 @@ content.transformer.complex.PDF.Image.extensions.pdf.gif.priority=50
# JodConverter (OpenOffice should be the same) # JodConverter (OpenOffice should be the same)
# -------------------------------------------- # --------------------------------------------
content.transformer.JodConverter.edition=Enterprise
content.transformer.JodConverter.priority=110 content.transformer.JodConverter.priority=110
content.transformer.JodConverter.extensions.*.xlsm.supported=false content.transformer.JodConverter.extensions.*.xlsm.supported=false
content.transformer.JodConverter.extensions.*.pptm.supported=false content.transformer.JodConverter.extensions.*.pptm.supported=false
@@ -212,6 +213,7 @@ content.transformer.JodConverter.extensions.doc.pdf.maxSourceSizeKBytes=10240
content.transformer.JodConverter.extensions.vsd.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.vsd.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.extensions.ppsx.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.ppsx.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.Html2Pdf.edition=Enterprise
content.transformer.JodConverter.Html2Pdf.pipeline=JodConverter|odt|JodConverter content.transformer.JodConverter.Html2Pdf.pipeline=JodConverter|odt|JodConverter
content.transformer.JodConverter.Html2Pdf.extensions.html.pdf.supported=true content.transformer.JodConverter.Html2Pdf.extensions.html.pdf.supported=true
content.transformer.JodConverter.Html2Pdf.extensions.html.pdf.priority=50 content.transformer.JodConverter.Html2Pdf.extensions.html.pdf.priority=50
@@ -219,14 +221,17 @@ content.transformer.JodConverter.Html2Pdf.extensions.html.pdf.priority=50
# This transformer exists because OpenOffice and LibreOffice have a problem # This transformer exists because OpenOffice and LibreOffice have a problem
# going directly from HTML to PDF. Going via ODT appears a much better option. # going directly from HTML to PDF. Going via ODT appears a much better option.
# For example <sub> tags hang the soffice process. ALF-14035 # For example <sub> tags hang the soffice process. ALF-14035
content.transformer.JodConverter.2Pdf.edition=Enterprise
content.transformer.JodConverter.2Pdf.available=false content.transformer.JodConverter.2Pdf.available=false
content.transformer.JodConverter.2Pdf.failover=JodConverter|JodConverter.Html2Pdf content.transformer.JodConverter.2Pdf.failover=JodConverter|JodConverter.Html2Pdf
content.transformer.JodConverter.2Pdf.priority=150 content.transformer.JodConverter.2Pdf.priority=150
content.transformer.JodConverter.2Pdf.extensions.*.pdf.supported=true content.transformer.JodConverter.2Pdf.extensions.*.pdf.supported=true
content.transformer.complex.JodConverter.Image.edition=Enterprise
content.transformer.complex.JodConverter.Image.pipeline=JodConverter.2Pdf|pdf|complex.PDF.Image content.transformer.complex.JodConverter.Image.pipeline=JodConverter.2Pdf|pdf|complex.PDF.Image
content.transformer.complex.JodConverter.Image.priority=250 content.transformer.complex.JodConverter.Image.priority=250
content.transformer.complex.JodConverter.PdfBox.edition=Enterprise
content.transformer.complex.JodConverter.PdfBox.pipeline=JodConverter.2Pdf|pdf|PdfBox content.transformer.complex.JodConverter.PdfBox.pipeline=JodConverter.2Pdf|pdf|PdfBox
content.transformer.complex.JodConverter.PdfBox.priority=150 content.transformer.complex.JodConverter.PdfBox.priority=150
content.transformer.complex.JodConverter.PdfBox.extensions.xlsm.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.xlsm.txt.supported=false
@@ -253,6 +258,7 @@ content.transformer.complex.JodConverter.PdfBox.extensions.ppsx.txt.supported=fa
content.transformer.complex.JodConverter.PdfBox.extensions.xlsb.txt.maxSourceSizeKBytes=1024 content.transformer.complex.JodConverter.PdfBox.extensions.xlsb.txt.maxSourceSizeKBytes=1024
content.transformer.complex.JodConverter.PdfBox.extensions.potm.txt.maxSourceSizeKBytes=1024 content.transformer.complex.JodConverter.PdfBox.extensions.potm.txt.maxSourceSizeKBytes=1024
content.transformer.complex.JodConverter.Pdf2swf.edition=Enterprise
content.transformer.complex.JodConverter.Pdf2swf.pipeline=JodConverter.2Pdf|pdf|Pdf2swf content.transformer.complex.JodConverter.Pdf2swf.pipeline=JodConverter.2Pdf|pdf|Pdf2swf
content.transformer.complex.JodConverter.Pdf2swf.priority=150 content.transformer.complex.JodConverter.Pdf2swf.priority=150
content.transformer.complex.JodConverter.Pdf2swf.extensions.xlsm.swf.maxSourceSizeKBytes=1024 content.transformer.complex.JodConverter.Pdf2swf.extensions.xlsm.swf.maxSourceSizeKBytes=1024

View File

@@ -121,6 +121,21 @@ public interface TransformerConfig
*/ */
static final String PRIORITY = ".priority"; static final String PRIORITY = ".priority";
/**
* The suffix to property names to indicate which Alfresco version the transformer is
* available with. If not specified it is not restricted. So if set to "Enterprise" it
* is not available to Community.
* @see AMP
*/
static final String EDITION = ".edition";
/**
* The suffix to property names to indicate which Alfresco AMPs the transformer is
* available with. The value should be the AMP's ID. If not specified it is not restricted.
* @see #EDITION
*/
static final String AMP = ".amp";
/** /**
* The suffix to property names for the threshold count. * The suffix to property names for the threshold count.
*/ */

View File

@@ -18,7 +18,9 @@
*/ */
package org.alfresco.repo.content.transform; package org.alfresco.repo.content.transform;
import static org.alfresco.repo.content.transform.TransformerConfig.AMP;
import static org.alfresco.repo.content.transform.TransformerConfig.AVAILABLE; import static org.alfresco.repo.content.transform.TransformerConfig.AVAILABLE;
import static org.alfresco.repo.content.transform.TransformerConfig.EDITION;
import static org.alfresco.repo.content.transform.TransformerConfig.FAILOVER; import static org.alfresco.repo.content.transform.TransformerConfig.FAILOVER;
import static org.alfresco.repo.content.transform.TransformerConfig.PIPE; import static org.alfresco.repo.content.transform.TransformerConfig.PIPE;
import static org.alfresco.repo.content.transform.TransformerConfig.PIPELINE; import static org.alfresco.repo.content.transform.TransformerConfig.PIPELINE;
@@ -31,8 +33,10 @@ import java.util.Map;
import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.service.cmr.module.ModuleService;
import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.descriptor.DescriptorService;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@@ -49,19 +53,22 @@ public class TransformerConfigDynamicTransformers extends TransformerPropertyNam
public TransformerConfigDynamicTransformers(TransformerConfig transformerConfig, TransformerProperties transformerProperties, public TransformerConfigDynamicTransformers(TransformerConfig transformerConfig, TransformerProperties transformerProperties,
MimetypeService mimetypeService, ContentService contentService, ContentTransformerRegistry transformerRegistry, MimetypeService mimetypeService, ContentService contentService, ContentTransformerRegistry transformerRegistry,
TransformerDebug transformerDebug) TransformerDebug transformerDebug, ModuleService moduleService, DescriptorService descriptorService)
{ {
createDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, transformerRegistry, transformerDebug); createDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug, moduleService, descriptorService);
} }
private void createDynamicTransformers(TransformerConfig transformerConfig, TransformerProperties transformerProperties, private void createDynamicTransformers(TransformerConfig transformerConfig, TransformerProperties transformerProperties,
MimetypeService mimetypeService, ContentService contentService, ContentTransformerRegistry transformerRegistry, MimetypeService mimetypeService, ContentService contentService, ContentTransformerRegistry transformerRegistry,
TransformerDebug transformerDebug) TransformerDebug transformerDebug, ModuleService moduleService, DescriptorService descriptorService)
{ {
Collection<String> SUFFIXES = Arrays.asList(new String [] { Collection<String> SUFFIXES = Arrays.asList(new String [] {
FAILOVER, FAILOVER,
PIPELINE, PIPELINE,
AVAILABLE AVAILABLE,
EDITION,
AMP
}); });
Map<TransformerSourceTargetSuffixKey, TransformerSourceTargetSuffixValue> Map<TransformerSourceTargetSuffixKey, TransformerSourceTargetSuffixValue>
@@ -82,18 +89,36 @@ public class TransformerConfigDynamicTransformers extends TransformerPropertyNam
{ {
try try
{ {
String availableStr = getProperty(property.transformerName, null, null, AVAILABLE, null, transformerSourceTargetSuffixValues); String edition = getProperty(property.transformerName, null, null, EDITION,
boolean available = availableStr == null || "true".equalsIgnoreCase(availableStr); null, transformerSourceTargetSuffixValues);
String moduleId = getProperty(property.transformerName, null, null, AMP,
null, transformerSourceTargetSuffixValues);
if (!supportedEdition(descriptorService, edition))
{
processed.add(property);
logger.debug(property.transformerName+" ignored. As it is an "+edition+" only transformer.");
}
else if (!supportedModule(moduleService, moduleId))
{
processed.add(property);
logger.debug(property.transformerName+" ignored. As the AMP "+moduleId+" is not installed.");
}
else
{
String availableStr = getProperty(property.transformerName, null, null, AVAILABLE,
null, transformerSourceTargetSuffixValues);
boolean available = availableStr == null || "true".equalsIgnoreCase(availableStr);
AbstractContentTransformer2 transformer = property.suffix.equals(PIPELINE) AbstractContentTransformer2 transformer = property.suffix.equals(PIPELINE)
? createComplexTransformer(property, transformerConfig, mimetypeService, ? createComplexTransformer(property, transformerConfig, mimetypeService,
contentService, transformerRegistry, transformerDebug, available) contentService, transformerRegistry, transformerDebug, available)
: createFailoverTransformer(property, transformerConfig, mimetypeService, : createFailoverTransformer(property, transformerConfig, mimetypeService,
contentService, transformerRegistry, transformerDebug, available); contentService, transformerRegistry, transformerDebug, available);
transformer.register(); transformer.register();
processed.add(property); processed.add(property);
dynamicTransformers.add(transformer); dynamicTransformers.add(transformer);
logger.debug(property.transformerName+" added"); logger.debug(property.transformerName+" added");
}
} }
catch (IllegalArgumentException e) catch (IllegalArgumentException e)
{ {
@@ -120,6 +145,18 @@ public class TransformerConfigDynamicTransformers extends TransformerPropertyNam
} }
} }
private boolean supportedEdition(DescriptorService descriptorService, String edition)
{
return descriptorService == null || edition == null ||
descriptorService.getServerDescriptor().getEdition().equals(edition);
}
private boolean supportedModule(ModuleService moduleService, String moduleId)
{
return moduleService == null || moduleId == null ||
moduleService.getModule(moduleId) != null;
}
private AbstractContentTransformer2 createComplexTransformer(TransformerSourceTargetSuffixValue property, private AbstractContentTransformer2 createComplexTransformer(TransformerSourceTargetSuffixValue property,
TransformerConfig transformerConfig, TransformerConfig transformerConfig,
MimetypeService mimetypeService, ContentService contentService, MimetypeService mimetypeService, ContentService contentService,

View File

@@ -21,10 +21,13 @@ package org.alfresco.repo.content.transform;
import java.util.Properties; import java.util.Properties;
import org.alfresco.repo.management.subsystems.ChildApplicationContextFactory; import org.alfresco.repo.management.subsystems.ChildApplicationContextFactory;
import org.alfresco.service.cmr.module.ModuleDetails;
import org.alfresco.service.cmr.module.ModuleService;
import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.TransformationOptionLimits; import org.alfresco.service.cmr.repository.TransformationOptionLimits;
import org.alfresco.service.cmr.repository.TransformationOptions; import org.alfresco.service.cmr.repository.TransformationOptions;
import org.alfresco.service.descriptor.DescriptorService;
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEvent;
import org.springframework.extensions.surf.util.AbstractLifecycleBean; import org.springframework.extensions.surf.util.AbstractLifecycleBean;
@@ -85,6 +88,10 @@ public class TransformerConfigImpl extends AbstractLifecycleBean implements Tran
// Needed to read global properties. // Needed to read global properties.
private Properties globalProperties; private Properties globalProperties;
private ModuleService moduleService;
private DescriptorService descriptorService;
private TransformerProperties transformerProperties; private TransformerProperties transformerProperties;
private TransformerConfigDynamicTransformers dynamicTransformers; private TransformerConfigDynamicTransformers dynamicTransformers;
@@ -129,6 +136,16 @@ public class TransformerConfigImpl extends AbstractLifecycleBean implements Tran
this.globalProperties = globalProperties; this.globalProperties = globalProperties;
} }
public void setModuleService(ModuleService moduleService)
{
this.moduleService = moduleService;
}
public void setDescriptorService(DescriptorService descriptorService)
{
this.descriptorService = descriptorService;
}
/** /**
* Called by spring after bean is initialised. * Called by spring after bean is initialised.
*/ */
@@ -138,7 +155,7 @@ public class TransformerConfigImpl extends AbstractLifecycleBean implements Tran
transformerProperties = new TransformerProperties(subsystem, globalProperties); transformerProperties = new TransformerProperties(subsystem, globalProperties);
dynamicTransformers = new TransformerConfigDynamicTransformers(this, transformerProperties, mimetypeService, dynamicTransformers = new TransformerConfigDynamicTransformers(this, transformerProperties, mimetypeService,
contentService, transformerRegistry, transformerDebug); contentService, transformerRegistry, transformerDebug, moduleService, descriptorService);
statistics= new TransformerConfigStatistics(this, mimetypeService); statistics= new TransformerConfigStatistics(this, mimetypeService);
limits = new TransformerConfigLimits(transformerProperties, mimetypeService); limits = new TransformerConfigLimits(transformerProperties, mimetypeService);
supported = new TransformerConfigSupported(transformerProperties, mimetypeService); supported = new TransformerConfigSupported(transformerProperties, mimetypeService);

View File

@@ -26,10 +26,14 @@ import static org.mockito.Mockito.when;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import org.alfresco.service.cmr.module.ModuleDetails;
import org.alfresco.service.cmr.module.ModuleService;
import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.TransformationOptionLimits; import org.alfresco.service.cmr.repository.TransformationOptionLimits;
import org.alfresco.service.cmr.repository.TransformationOptions; import org.alfresco.service.cmr.repository.TransformationOptions;
import org.alfresco.service.descriptor.Descriptor;
import org.alfresco.service.descriptor.DescriptorService;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormatter;
@@ -60,6 +64,18 @@ public class TransformerConfigDynamicTransformersTest
@Mock @Mock
private TransformerDebug transformerDebug; private TransformerDebug transformerDebug;
@Mock
ModuleService moduleService;
@Mock
ModuleDetails moduleDetails;
@Mock
DescriptorService descriptorService;
@Mock
Descriptor descriptor;
ContentTransformerRegistry transformerRegistry; ContentTransformerRegistry transformerRegistry;
private ContentTransformer transformer1; private ContentTransformer transformer1;
@@ -98,7 +114,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.pipeline", "transformer1|pdf|transformer2|png|transformer3"); "content.transformer.transformerA.pipeline", "transformer1|pdf|transformer2|png|transformer3");
assertEquals(0, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, assertEquals(0, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug).getErrorCount()); transformerRegistry, transformerDebug, null, null).getErrorCount());
assertEquals(4, transformerRegistry.getAllTransformers().size()); assertEquals(4, transformerRegistry.getAllTransformers().size());
assertEquals(1, transformerRegistry.getTransformers().size()); assertEquals(1, transformerRegistry.getTransformers().size());
@@ -129,7 +145,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.pipeline", "transformer1|pdf"); "content.transformer.transformerA.pipeline", "transformer1|pdf");
assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug).getErrorCount()); transformerRegistry, transformerDebug, null, null).getErrorCount());
} }
@Test @Test
@@ -140,7 +156,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.pipeline", "transformer1|pdf|transformer2|png"); "content.transformer.transformerA.pipeline", "transformer1|pdf|transformer2|png");
assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug).getErrorCount()); transformerRegistry, transformerDebug, null, null).getErrorCount());
} }
@Test @Test
@@ -151,7 +167,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformer3.pipeline", "transformer1|pdf|transformer2"); "content.transformer.transformer3.pipeline", "transformer1|pdf|transformer2");
assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug).getErrorCount()); transformerRegistry, transformerDebug, null, null).getErrorCount());
} }
@Test @Test
@@ -162,7 +178,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.pipeline", "transformer1|*|transformer2|png|transformer3"); "content.transformer.transformerA.pipeline", "transformer1|*|transformer2|png|transformer3");
new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug); transformerRegistry, transformerDebug, null, null);
transformerRegistry.getTransformer("transformer.transformerA"); transformerRegistry.getTransformer("transformer.transformerA");
} }
@@ -175,7 +191,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.pipeline", "transformer1|pdf|*|png|transformer3"); "content.transformer.transformerA.pipeline", "transformer1|pdf|*|png|transformer3");
new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug); transformerRegistry, transformerDebug, null, null);
transformerRegistry.getTransformer("transformer.transformerA"); transformerRegistry.getTransformer("transformer.transformerA");
} }
@@ -188,7 +204,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.pipeline", "unknown1|pdf|unknown2|png|unknown3"); "content.transformer.transformerA.pipeline", "unknown1|pdf|unknown2|png|unknown3");
assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug).getErrorCount()); transformerRegistry, transformerDebug, null, null).getErrorCount());
} }
@Test @Test
@@ -200,7 +216,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.available", "false"); "content.transformer.transformerA.available", "false");
new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug); transformerRegistry, transformerDebug, null, null);
assertEquals(4, transformerRegistry.getAllTransformers().size()); assertEquals(4, transformerRegistry.getAllTransformers().size());
assertEquals(0, transformerRegistry.getTransformers().size()); // << note 0 rather than 1 assertEquals(0, transformerRegistry.getTransformers().size()); // << note 0 rather than 1
@@ -218,7 +234,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.failover", "transformer1|transformer2|transformer3"); "content.transformer.transformerA.failover", "transformer1|transformer2|transformer3");
assertEquals(0, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, assertEquals(0, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug).getErrorCount()); transformerRegistry, transformerDebug, null, null).getErrorCount());
assertEquals(4, transformerRegistry.getAllTransformers().size()); assertEquals(4, transformerRegistry.getAllTransformers().size());
assertEquals(1, transformerRegistry.getTransformers().size()); assertEquals(1, transformerRegistry.getTransformers().size());
@@ -235,7 +251,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.failover", "transformer1"); "content.transformer.transformerA.failover", "transformer1");
assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug).getErrorCount()); transformerRegistry, transformerDebug, null, null).getErrorCount());
} }
@Test @Test
@@ -246,7 +262,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformer3.failover", "transformer1|transformer2"); "content.transformer.transformer3.failover", "transformer1|transformer2");
assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug).getErrorCount()); transformerRegistry, transformerDebug, null, null).getErrorCount());
} }
@Test @Test
@@ -257,7 +273,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.failover", "transformer1|*|transformer3"); "content.transformer.transformerA.failover", "transformer1|*|transformer3");
new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug); transformerRegistry, transformerDebug, null, null);
transformerRegistry.getTransformer("transformer.transformerA"); transformerRegistry.getTransformer("transformer.transformerA");
} }
@@ -270,7 +286,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.failover", "unknown1|unknown2|unknown3"); "content.transformer.transformerA.failover", "unknown1|unknown2|unknown3");
assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, assertEquals(1, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug).getErrorCount()); transformerRegistry, transformerDebug, null, null).getErrorCount());
} }
@Test @Test
@@ -282,7 +298,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerA.available", "false"); "content.transformer.transformerA.available", "false");
new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug); transformerRegistry, transformerDebug, null, null);
assertEquals(4, transformerRegistry.getAllTransformers().size()); assertEquals(4, transformerRegistry.getAllTransformers().size());
assertEquals(0, transformerRegistry.getTransformers().size()); // << note 0 rather than 1 assertEquals(0, transformerRegistry.getTransformers().size()); // << note 0 rather than 1
@@ -302,7 +318,7 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerE.failover", "transformer1|transformer1"); "content.transformer.transformerE.failover", "transformer1|transformer1");
new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug); transformerRegistry, transformerDebug, null, null);
assertEquals(5, transformerRegistry.getTransformers().size()); assertEquals(5, transformerRegistry.getTransformers().size());
@@ -321,10 +337,70 @@ public class TransformerConfigDynamicTransformersTest
"content.transformer.transformerE.failover", "transformer1|transformerC"); "content.transformer.transformerE.failover", "transformer1|transformerC");
new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService, new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug); transformerRegistry, transformerDebug, null, null);
assertEquals(2, transformerRegistry.getTransformers().size()); assertEquals(2, transformerRegistry.getTransformers().size());
transformerRegistry.getTransformer("transformer.transformerA"); transformerRegistry.getTransformer("transformer.transformerA");
} }
private void entrerpriseTransformer(String edition)
{
when(descriptorService.getServerDescriptor()).thenReturn(descriptor);
when(descriptor.getEdition()).thenReturn(edition);
mockProperties(transformerProperties,
"content.transformer.transformerA.failover", "transformer1|transformer2|transformer3",
"content.transformer.transformerA.edition", "Enterprise");
new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug, null, descriptorService);
}
private void ampTransformer(String moduleId)
{
when(moduleService.getModule("testAmp")).thenReturn(moduleDetails);
mockProperties(transformerProperties,
"content.transformer.transformerA.failover", "transformer1|transformer2|transformer3",
"content.transformer.transformerA.amp", moduleId);
new TransformerConfigDynamicTransformers(transformerConfig, transformerProperties, mimetypeService, contentService,
transformerRegistry, transformerDebug, moduleService, null);
}
@Test
// Test that enterprise transformers are not available to community.
public void communityTest()
{
entrerpriseTransformer("Community");
assertEquals(3, transformerRegistry.getAllTransformers().size());
}
@Test
// Test that enterprise transformers are available to enterprise.
public void enterpriseTest()
{
entrerpriseTransformer("Enterprise");
assertEquals(4, transformerRegistry.getAllTransformers().size());
}
@Test
// Test that enterprise transformers are not available to community.
public void noAmpTest()
{
ampTransformer("AmpNotInstalled");
assertEquals(3, transformerRegistry.getAllTransformers().size());
}
@Test
// Test that enterprise transformers are available to enterprise.
public void ampTest()
{
ampTransformer("testAmp");
assertEquals(4, transformerRegistry.getAllTransformers().size());
}
} }