diff --git a/config/alfresco/subsystems/Transformers/default/transformers.properties b/config/alfresco/subsystems/Transformers/default/transformers.properties index 550934c5af..beb352d2eb 100644 --- a/config/alfresco/subsystems/Transformers/default/transformers.properties +++ b/config/alfresco/subsystems/Transformers/default/transformers.properties @@ -15,291 +15,291 @@ content.transformer.default.maxPages=-1 # Transformer specific settings # ============================= -content.transformer.ImageMagick.mimetypes.png.png.priority=5 -content.transformer.ImageMagick.mimetypes.pdf.png.priority=5 -content.transformer.ImageMagick.mimetypes.ai.png.priority=5 +content.transformer.ImageMagick.extensions.png.png.priority=5 +content.transformer.ImageMagick.extensions.pdf.png.priority=5 +content.transformer.ImageMagick.extensions.ai.png.priority=5 -content.transformer.iWorksQuicklooks.mimetypes.key.jpg.priority=5 -content.transformer.iWorksQuicklooks.mimetypes.pages.jpg.priority=5 -content.transformer.iWorksQuicklooks.mimetypes.numbers.jpg.priority=5 -content.transformer.iWorksQuicklooks.mimetypes.key.pdf.priority=5 -content.transformer.iWorksQuicklooks.mimetypes.pages.pdf.priority=5 -content.transformer.iWorksQuicklooks.mimetypes.numbers.pdf.priority=5 +content.transformer.iWorksQuicklooks.extensions.key.jpg.priority=5 +content.transformer.iWorksQuicklooks.extensions.pages.jpg.priority=5 +content.transformer.iWorksQuicklooks.extensions.numbers.jpg.priority=5 +content.transformer.iWorksQuicklooks.extensions.key.pdf.priority=5 +content.transformer.iWorksQuicklooks.extensions.pages.pdf.priority=5 +content.transformer.iWorksQuicklooks.extensions.numbers.pdf.priority=5 -content.transformer.PdfBox.mimetypes.pdf.txt.priority=5 +content.transformer.PdfBox.extensions.pdf.txt.priority=5 -content.transformer.complex.PDF.Image.mimetypes.pdf.png.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.eps.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.jp2.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.psd.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.ppj.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.cgm.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.gif.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.ief.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.bmp.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.jpg.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.pbm.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.pgm.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.pnm.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.ppm.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.ras.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.tiff.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.xbm.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.xpm.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.xwd.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.bin.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.dwt.supported=true -content.transformer.complex.PDF.Image.mimetypes.pdf.jpg.priority=5 -content.transformer.complex.PDF.Image.mimetypes.pdf.gif.priority=5 +content.transformer.complex.PDF.Image.extensions.pdf.png.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.eps.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.jp2.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.psd.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.ppj.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.cgm.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.gif.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.ief.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.bmp.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.jpg.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.pbm.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.pgm.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.pnm.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.ppm.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.ras.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.tiff.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.xbm.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.xpm.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.xwd.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.bin.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.dwt.supported=true +content.transformer.complex.PDF.Image.extensions.pdf.jpg.priority=5 +content.transformer.complex.PDF.Image.extensions.pdf.gif.priority=5 -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.png.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.eps.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.jp2.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.psd.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.ppj.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.cgm.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.gif.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.ief.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.bmp.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.jpg.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.pbm.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.pgm.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.pnm.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.ppm.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.ras.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.tiff.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.xbm.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.xpm.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.xwd.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.bin.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.dwt.supported=true -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.jpg.priority=5 -content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.gif.priority=5 +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.png.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.eps.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.jp2.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.psd.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.ppj.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.cgm.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.gif.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.ief.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.bmp.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.jpg.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.pbm.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.pgm.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.pnm.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.ppm.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.ras.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.tiff.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.xbm.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.xpm.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.xwd.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.bin.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.dwt.supported=true +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.jpg.priority=5 +content.transformer.complex.AdobeIllustrator.Image.extensions.ai.gif.priority=5 -content.transformer.complex.iWorks.Image.mimetypes.key.png.priority=5 -content.transformer.complex.iWorks.Image.mimetypes.numbers.png.priority=5 -content.transformer.complex.iWorks.Image.mimetypes.pages.png.priority=5 +content.transformer.complex.iWorks.Image.extensions.key.png.priority=5 +content.transformer.complex.iWorks.Image.extensions.numbers.png.priority=5 +content.transformer.complex.iWorks.Image.extensions.pages.png.priority=5 -content.transformer.OpenOffice.mimetypes.*.xlsm.supported=false -content.transformer.OpenOffice.mimetypes.*.pptm.supported=false -content.transformer.OpenOffice.mimetypes.*.sldm.supported=false -content.transformer.OpenOffice.mimetypes.*.xltx.supported=false -content.transformer.OpenOffice.mimetypes.*.docx.supported=false -content.transformer.OpenOffice.mimetypes.*.potx.supported=false -content.transformer.OpenOffice.mimetypes.*.xlsx.supported=false -content.transformer.OpenOffice.mimetypes.*.pptx.supported=false -content.transformer.OpenOffice.mimetypes.*.xlam.supported=false -content.transformer.OpenOffice.mimetypes.*.docm.supported=false -content.transformer.OpenOffice.mimetypes.*.xltm.supported=false -content.transformer.OpenOffice.mimetypes.*.dotx.supported=false -content.transformer.OpenOffice.mimetypes.*.xlsb.supported=false -content.transformer.OpenOffice.mimetypes.*.sldx.supported=false -content.transformer.OpenOffice.mimetypes.*.ppsm.supported=false -content.transformer.OpenOffice.mimetypes.*.txt.supported=false -content.transformer.OpenOffice.mimetypes.*.potm.supported=false -content.transformer.OpenOffice.mimetypes.*.ppam.supported=false -content.transformer.OpenOffice.mimetypes.*.dotm.supported=false -content.transformer.OpenOffice.mimetypes.*.ppsx.supported=false -content.transformer.OpenOffice.mimetypes.html.pdf.supported=false -content.transformer.OpenOffice.mimetypes.xlsm.pdf.maxSourceSizeKBytes=1536 -content.transformer.OpenOffice.mimetypes.pptm.pdf.maxSourceSizeKBytes=4096 -content.transformer.OpenOffice.mimetypes.xls.pdf.maxSourceSizeKBytes=10240 -content.transformer.OpenOffice.mimetypes.sldm.pdf.maxSourceSizeKBytes=4096 -content.transformer.OpenOffice.mimetypes.xltx.pdf.maxSourceSizeKBytes=1536 -content.transformer.OpenOffice.mimetypes.potx.pdf.maxSourceSizeKBytes=4096 -content.transformer.OpenOffice.mimetypes.docx.pdf.maxSourceSizeKBytes=768 -content.transformer.OpenOffice.mimetypes.xlsx.pdf.maxSourceSizeKBytes=1536 -content.transformer.OpenOffice.mimetypes.pptx.pdf.maxSourceSizeKBytes=4096 -content.transformer.OpenOffice.mimetypes.xlam.pdf.maxSourceSizeKBytes=1536 -content.transformer.OpenOffice.mimetypes.ppt.pdf.maxSourceSizeKBytes=6144 -content.transformer.OpenOffice.mimetypes.docm.pdf.maxSourceSizeKBytes=768 -content.transformer.OpenOffice.mimetypes.xltm.pdf.maxSourceSizeKBytes=1536 -content.transformer.OpenOffice.mimetypes.dotx.pdf.maxSourceSizeKBytes=768 -content.transformer.OpenOffice.mimetypes.xlsb.pdf.maxSourceSizeKBytes=1536 -content.transformer.OpenOffice.mimetypes.sldx.pdf.maxSourceSizeKBytes=4096 -content.transformer.OpenOffice.mimetypes.ppsm.pdf.maxSourceSizeKBytes=4096 -content.transformer.OpenOffice.mimetypes.potm.pdf.maxSourceSizeKBytes=4096 -content.transformer.OpenOffice.mimetypes.txt.pdf.maxSourceSizeKBytes=5120 -content.transformer.OpenOffice.mimetypes.ppam.pdf.maxSourceSizeKBytes=4096 -content.transformer.OpenOffice.mimetypes.dotm.pdf.maxSourceSizeKBytes=768 -content.transformer.OpenOffice.mimetypes.doc.pdf.maxSourceSizeKBytes=10240 -content.transformer.OpenOffice.mimetypes.vsd.pdf.maxSourceSizeKBytes=4096 -content.transformer.OpenOffice.mimetypes.ppsx.pdf.maxSourceSizeKBytes=4096 +content.transformer.OpenOffice.extensions.*.xlsm.supported=false +content.transformer.OpenOffice.extensions.*.pptm.supported=false +content.transformer.OpenOffice.extensions.*.sldm.supported=false +content.transformer.OpenOffice.extensions.*.xltx.supported=false +content.transformer.OpenOffice.extensions.*.docx.supported=false +content.transformer.OpenOffice.extensions.*.potx.supported=false +content.transformer.OpenOffice.extensions.*.xlsx.supported=false +content.transformer.OpenOffice.extensions.*.pptx.supported=false +content.transformer.OpenOffice.extensions.*.xlam.supported=false +content.transformer.OpenOffice.extensions.*.docm.supported=false +content.transformer.OpenOffice.extensions.*.xltm.supported=false +content.transformer.OpenOffice.extensions.*.dotx.supported=false +content.transformer.OpenOffice.extensions.*.xlsb.supported=false +content.transformer.OpenOffice.extensions.*.sldx.supported=false +content.transformer.OpenOffice.extensions.*.ppsm.supported=false +content.transformer.OpenOffice.extensions.*.txt.supported=false +content.transformer.OpenOffice.extensions.*.potm.supported=false +content.transformer.OpenOffice.extensions.*.ppam.supported=false +content.transformer.OpenOffice.extensions.*.dotm.supported=false +content.transformer.OpenOffice.extensions.*.ppsx.supported=false +content.transformer.OpenOffice.extensions.html.pdf.supported=false +content.transformer.OpenOffice.extensions.xlsm.pdf.maxSourceSizeKBytes=1536 +content.transformer.OpenOffice.extensions.pptm.pdf.maxSourceSizeKBytes=4096 +content.transformer.OpenOffice.extensions.xls.pdf.maxSourceSizeKBytes=10240 +content.transformer.OpenOffice.extensions.sldm.pdf.maxSourceSizeKBytes=4096 +content.transformer.OpenOffice.extensions.xltx.pdf.maxSourceSizeKBytes=1536 +content.transformer.OpenOffice.extensions.potx.pdf.maxSourceSizeKBytes=4096 +content.transformer.OpenOffice.extensions.docx.pdf.maxSourceSizeKBytes=768 +content.transformer.OpenOffice.extensions.xlsx.pdf.maxSourceSizeKBytes=1536 +content.transformer.OpenOffice.extensions.pptx.pdf.maxSourceSizeKBytes=4096 +content.transformer.OpenOffice.extensions.xlam.pdf.maxSourceSizeKBytes=1536 +content.transformer.OpenOffice.extensions.ppt.pdf.maxSourceSizeKBytes=6144 +content.transformer.OpenOffice.extensions.docm.pdf.maxSourceSizeKBytes=768 +content.transformer.OpenOffice.extensions.xltm.pdf.maxSourceSizeKBytes=1536 +content.transformer.OpenOffice.extensions.dotx.pdf.maxSourceSizeKBytes=768 +content.transformer.OpenOffice.extensions.xlsb.pdf.maxSourceSizeKBytes=1536 +content.transformer.OpenOffice.extensions.sldx.pdf.maxSourceSizeKBytes=4096 +content.transformer.OpenOffice.extensions.ppsm.pdf.maxSourceSizeKBytes=4096 +content.transformer.OpenOffice.extensions.potm.pdf.maxSourceSizeKBytes=4096 +content.transformer.OpenOffice.extensions.txt.pdf.maxSourceSizeKBytes=5120 +content.transformer.OpenOffice.extensions.ppam.pdf.maxSourceSizeKBytes=4096 +content.transformer.OpenOffice.extensions.dotm.pdf.maxSourceSizeKBytes=768 +content.transformer.OpenOffice.extensions.doc.pdf.maxSourceSizeKBytes=10240 +content.transformer.OpenOffice.extensions.vsd.pdf.maxSourceSizeKBytes=4096 +content.transformer.OpenOffice.extensions.ppsx.pdf.maxSourceSizeKBytes=4096 -content.transformer.OpenOffice.Html2Pdf.mimetypes.html.pdf.supported=true -content.transformer.OpenOffice.Html2Pdf.mimetypes.html.pdf.priority=5 +content.transformer.OpenOffice.Html2Pdf.extensions.html.pdf.supported=true +content.transformer.OpenOffice.Html2Pdf.extensions.html.pdf.priority=5 -content.transformer.OpenOffice.2Pdf.mimetypes.*.pdf.supported=true +content.transformer.OpenOffice.2Pdf.extensions.*.pdf.supported=true -content.transformer.PdfBox.TextToPdf.mimetypes.csv.pdf.supported=true -content.transformer.PdfBox.TextToPdf.mimetypes.xml.pdf.supported=true +content.transformer.PdfBox.TextToPdf.extensions.csv.pdf.supported=true +content.transformer.PdfBox.TextToPdf.extensions.xml.pdf.supported=true content.transformer.PdfBox.TextToPdf.maxSourceSizeKBytes=10240 -content.transformer.complex.Text.Image.mimetypes.csv.*.supported=true -content.transformer.complex.Text.Image.mimetypes.xml.*.supported=true -content.transformer.complex.Text.Image.mimetypes.txt.*.supported=true +content.transformer.complex.Text.Image.extensions.csv.*.supported=true +content.transformer.complex.Text.Image.extensions.xml.*.supported=true +content.transformer.complex.Text.Image.extensions.txt.*.supported=true -content.transformer.TextMining.mimetypes.doc.txt.priority=5 +content.transformer.TextMining.extensions.doc.txt.priority=5 -content.transformer.HtmlParser.mimetypes.html.txt.priority=5 +content.transformer.HtmlParser.extensions.html.txt.priority=5 -content.transformer.complex.OpenOffice.PdfBox.mimetypes.xlsm.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.pptm.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.xls.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.sldm.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.xltx.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.docx.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.potx.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.xlsx.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.pptx.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.xlam.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.ppt.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.docm.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.xltm.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.dotx.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.sldx.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.ppsm.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.txt.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.ppam.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.dotm.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.doc.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.ppsx.txt.supported=false -content.transformer.complex.OpenOffice.PdfBox.mimetypes.xlsb.txt.maxSourceSizeKBytes=1024 -content.transformer.complex.OpenOffice.PdfBox.mimetypes.potm.txt.maxSourceSizeKBytes=1024 +content.transformer.complex.OpenOffice.PdfBox.extensions.xlsm.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.pptm.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.xls.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.sldm.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.xltx.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.docx.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.potx.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.xlsx.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.pptx.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.xlam.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.ppt.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.docm.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.xltm.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.dotx.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.sldx.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.ppsm.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.txt.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.ppam.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.dotm.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.doc.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.ppsx.txt.supported=false +content.transformer.complex.OpenOffice.PdfBox.extensions.xlsb.txt.maxSourceSizeKBytes=1024 +content.transformer.complex.OpenOffice.PdfBox.extensions.potm.txt.maxSourceSizeKBytes=1024 -content.transformer.Archive.mimetypes.zip.txt.priority=5 +content.transformer.Archive.extensions.zip.txt.priority=5 content.transformer.Pdf2swf.maxSourceSizeKBytes=5120 -content.transformer.Pdf2swf.mimetypes.pdf.swf.supported=true -content.transformer.Pdf2swf.mimetypes.ai.swf.supported=true +content.transformer.Pdf2swf.extensions.pdf.swf.supported=true +content.transformer.Pdf2swf.extensions.ai.swf.supported=true -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xlsm.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.pptm.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xls.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.sldm.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xltx.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.docx.swf.maxSourceSizeKBytes=256 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.potx.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xlsx.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.pptx.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xlam.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.ppt.swf.maxSourceSizeKBytes=6144 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.docm.swf.maxSourceSizeKBytes=256 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xltm.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.dotx.swf.maxSourceSizeKBytes=256 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xlsb.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.sldx.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.ppsm.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.potm.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.txt.swf.maxSourceSizeKBytes=5120 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.ppam.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.dotm.swf.maxSourceSizeKBytes=256 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.doc.swf.maxSourceSizeKBytes=1536 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.vsd.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.ppsx.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.xlsm.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.pptm.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.xls.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.sldm.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.xltx.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.docx.swf.maxSourceSizeKBytes=256 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.potx.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.xlsx.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.pptx.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.xlam.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.ppt.swf.maxSourceSizeKBytes=6144 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.docm.swf.maxSourceSizeKBytes=256 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.xltm.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.dotx.swf.maxSourceSizeKBytes=256 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.xlsb.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.sldx.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.ppsm.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.potm.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.txt.swf.maxSourceSizeKBytes=5120 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.ppam.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.dotm.swf.maxSourceSizeKBytes=256 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.doc.swf.maxSourceSizeKBytes=1536 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.vsd.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.OpenOffice.Pdf2swf.extensions.ppsx.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.Text.Pdf2swf.mimetypes.csv.swf.supported=true -content.transformer.complex.Text.Pdf2swf.mimetypes.xml.swf.supported=true +content.transformer.complex.Text.Pdf2swf.extensions.csv.swf.supported=true +content.transformer.complex.Text.Pdf2swf.extensions.xml.swf.supported=true content.transformer.complex.Text.Pdf2swf.maxSourceSizeKBytes=5120 -content.transformer.complex.image.Pdf2swf.mimetypes.tiff.swf.supported=true +content.transformer.complex.image.Pdf2swf.extensions.tiff.swf.supported=true -content.transformer.JodConverter.mimetypes.*.xlsm.supported=false -content.transformer.JodConverter.mimetypes.*.pptm.supported=false -content.transformer.JodConverter.mimetypes.*.sldm.supported=false -content.transformer.JodConverter.mimetypes.*.xltx.supported=false -content.transformer.JodConverter.mimetypes.*.docx.supported=false -content.transformer.JodConverter.mimetypes.*.potx.supported=false -content.transformer.JodConverter.mimetypes.*.xlsx.supported=false -content.transformer.JodConverter.mimetypes.*.pptx.supported=false -content.transformer.JodConverter.mimetypes.*.xlam.supported=false -content.transformer.JodConverter.mimetypes.*.docm.supported=false -content.transformer.JodConverter.mimetypes.*.xltm.supported=false -content.transformer.JodConverter.mimetypes.*.dotx.supported=false -content.transformer.JodConverter.mimetypes.*.xlsb.supported=false -content.transformer.JodConverter.mimetypes.*.sldx.supported=false -content.transformer.JodConverter.mimetypes.*.ppsm.supported=false -content.transformer.JodConverter.mimetypes.*.txt.supported=false -content.transformer.JodConverter.mimetypes.*.potm.supported=false -content.transformer.JodConverter.mimetypes.*.ppam.supported=false -content.transformer.JodConverter.mimetypes.*.dotm.supported=false -content.transformer.JodConverter.mimetypes.*.ppsx.supported=false -content.transformer.JodConverter.mimetypes.html.pdf.supported=false -content.transformer.JodConverter.mimetypes.xlsm.pdf.maxSourceSizeKBytes=1536 -content.transformer.JodConverter.mimetypes.pptm.pdf.maxSourceSizeKBytes=4096 -content.transformer.JodConverter.mimetypes.xls.pdf.maxSourceSizeKBytes=10240 -content.transformer.JodConverter.mimetypes.sldm.pdf.maxSourceSizeKBytes=4096 -content.transformer.JodConverter.mimetypes.xltx.pdf.maxSourceSizeKBytes=1536 -content.transformer.JodConverter.mimetypes.potx.pdf.maxSourceSizeKBytes=4096 -content.transformer.JodConverter.mimetypes.docx.pdf.maxSourceSizeKBytes=768 -content.transformer.JodConverter.mimetypes.xlsx.pdf.maxSourceSizeKBytes=1536 -content.transformer.JodConverter.mimetypes.pptx.pdf.maxSourceSizeKBytes=4096 -content.transformer.JodConverter.mimetypes.xlam.pdf.maxSourceSizeKBytes=1536 -content.transformer.JodConverter.mimetypes.ppt.pdf.maxSourceSizeKBytes=6144 -content.transformer.JodConverter.mimetypes.docm.pdf.maxSourceSizeKBytes=768 -content.transformer.JodConverter.mimetypes.xltm.pdf.maxSourceSizeKBytes=1536 -content.transformer.JodConverter.mimetypes.dotx.pdf.maxSourceSizeKBytes=768 -content.transformer.JodConverter.mimetypes.xlsb.pdf.maxSourceSizeKBytes=1536 -content.transformer.JodConverter.mimetypes.sldx.pdf.maxSourceSizeKBytes=4096 -content.transformer.JodConverter.mimetypes.ppsm.pdf.maxSourceSizeKBytes=4096 -content.transformer.JodConverter.mimetypes.potm.pdf.maxSourceSizeKBytes=4096 -content.transformer.JodConverter.mimetypes.txt.pdf.maxSourceSizeKBytes=5120 -content.transformer.JodConverter.mimetypes.ppam.pdf.maxSourceSizeKBytes=4096 -content.transformer.JodConverter.mimetypes.dotm.pdf.maxSourceSizeKBytes=768 -content.transformer.JodConverter.mimetypes.doc.pdf.maxSourceSizeKBytes=10240 -content.transformer.JodConverter.mimetypes.vsd.pdf.maxSourceSizeKBytes=4096 -content.transformer.JodConverter.mimetypes.ppsx.pdf.maxSourceSizeKBytes=4096 +content.transformer.JodConverter.extensions.*.xlsm.supported=false +content.transformer.JodConverter.extensions.*.pptm.supported=false +content.transformer.JodConverter.extensions.*.sldm.supported=false +content.transformer.JodConverter.extensions.*.xltx.supported=false +content.transformer.JodConverter.extensions.*.docx.supported=false +content.transformer.JodConverter.extensions.*.potx.supported=false +content.transformer.JodConverter.extensions.*.xlsx.supported=false +content.transformer.JodConverter.extensions.*.pptx.supported=false +content.transformer.JodConverter.extensions.*.xlam.supported=false +content.transformer.JodConverter.extensions.*.docm.supported=false +content.transformer.JodConverter.extensions.*.xltm.supported=false +content.transformer.JodConverter.extensions.*.dotx.supported=false +content.transformer.JodConverter.extensions.*.xlsb.supported=false +content.transformer.JodConverter.extensions.*.sldx.supported=false +content.transformer.JodConverter.extensions.*.ppsm.supported=false +content.transformer.JodConverter.extensions.*.txt.supported=false +content.transformer.JodConverter.extensions.*.potm.supported=false +content.transformer.JodConverter.extensions.*.ppam.supported=false +content.transformer.JodConverter.extensions.*.dotm.supported=false +content.transformer.JodConverter.extensions.*.ppsx.supported=false +content.transformer.JodConverter.extensions.html.pdf.supported=false +content.transformer.JodConverter.extensions.xlsm.pdf.maxSourceSizeKBytes=1536 +content.transformer.JodConverter.extensions.pptm.pdf.maxSourceSizeKBytes=4096 +content.transformer.JodConverter.extensions.xls.pdf.maxSourceSizeKBytes=10240 +content.transformer.JodConverter.extensions.sldm.pdf.maxSourceSizeKBytes=4096 +content.transformer.JodConverter.extensions.xltx.pdf.maxSourceSizeKBytes=1536 +content.transformer.JodConverter.extensions.potx.pdf.maxSourceSizeKBytes=4096 +content.transformer.JodConverter.extensions.docx.pdf.maxSourceSizeKBytes=768 +content.transformer.JodConverter.extensions.xlsx.pdf.maxSourceSizeKBytes=1536 +content.transformer.JodConverter.extensions.pptx.pdf.maxSourceSizeKBytes=4096 +content.transformer.JodConverter.extensions.xlam.pdf.maxSourceSizeKBytes=1536 +content.transformer.JodConverter.extensions.ppt.pdf.maxSourceSizeKBytes=6144 +content.transformer.JodConverter.extensions.docm.pdf.maxSourceSizeKBytes=768 +content.transformer.JodConverter.extensions.xltm.pdf.maxSourceSizeKBytes=1536 +content.transformer.JodConverter.extensions.dotx.pdf.maxSourceSizeKBytes=768 +content.transformer.JodConverter.extensions.xlsb.pdf.maxSourceSizeKBytes=1536 +content.transformer.JodConverter.extensions.sldx.pdf.maxSourceSizeKBytes=4096 +content.transformer.JodConverter.extensions.ppsm.pdf.maxSourceSizeKBytes=4096 +content.transformer.JodConverter.extensions.potm.pdf.maxSourceSizeKBytes=4096 +content.transformer.JodConverter.extensions.txt.pdf.maxSourceSizeKBytes=5120 +content.transformer.JodConverter.extensions.ppam.pdf.maxSourceSizeKBytes=4096 +content.transformer.JodConverter.extensions.dotm.pdf.maxSourceSizeKBytes=768 +content.transformer.JodConverter.extensions.doc.pdf.maxSourceSizeKBytes=10240 +content.transformer.JodConverter.extensions.vsd.pdf.maxSourceSizeKBytes=4096 +content.transformer.JodConverter.extensions.ppsx.pdf.maxSourceSizeKBytes=4096 -content.transformer.JodConverter.Html2Pdf.mimetypes.html.pdf.supported=true -content.transformer.JodConverter.Html2Pdf.mimetypes.html.pdf.priority=5 +content.transformer.JodConverter.Html2Pdf.extensions.html.pdf.supported=true +content.transformer.JodConverter.Html2Pdf.extensions.html.pdf.priority=5 -content.transformer.JodConverter.2Pdf.mimetypes.*.pdf.supported=true +content.transformer.JodConverter.2Pdf.extensions.*.pdf.supported=true -content.transformer.complex.JodConverter.PdfBox.mimetypes.xlsm.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.pptm.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.xls.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.sldm.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.xltx.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.docx.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.potx.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.xlsx.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.pptx.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.xlam.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.ppt.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.docm.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.xltm.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.dotx.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.sldx.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.ppsm.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.txt.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.ppam.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.dotm.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.doc.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.ppsx.txt.supported=false -content.transformer.complex.JodConverter.PdfBox.mimetypes.xlsb.txt.maxSourceSizeKBytes=1024 -content.transformer.complex.JodConverter.PdfBox.mimetypes.potm.txt.maxSourceSizeKBytes=1024 +content.transformer.complex.JodConverter.PdfBox.extensions.xlsm.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.pptm.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.xls.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.sldm.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.xltx.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.docx.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.potx.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.xlsx.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.pptx.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.xlam.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.ppt.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.docm.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.xltm.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.dotx.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.sldx.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.ppsm.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.txt.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.ppam.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.dotm.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.doc.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.ppsx.txt.supported=false +content.transformer.complex.JodConverter.PdfBox.extensions.xlsb.txt.maxSourceSizeKBytes=1024 +content.transformer.complex.JodConverter.PdfBox.extensions.potm.txt.maxSourceSizeKBytes=1024 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xlsm.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.pptm.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xls.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.sldm.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xltx.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.docx.swf.maxSourceSizeKBytes=256 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.potx.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xlsx.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.pptx.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xlam.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.ppt.swf.maxSourceSizeKBytes=6144 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.docm.swf.maxSourceSizeKBytes=256 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xltm.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.dotx.swf.maxSourceSizeKBytes=256 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xlsb.swf.maxSourceSizeKBytes=1024 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.sldx.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.ppsm.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.potm.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.txt.swf.maxSourceSizeKBytes=5120 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.ppam.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.dotm.swf.maxSourceSizeKBytes=256 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.doc.swf.maxSourceSizeKBytes=1536 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.vsd.swf.maxSourceSizeKBytes=4096 -content.transformer.complex.JodConverter.Pdf2swf.mimetypes.ppsx.swf.maxSourceSizeKBytes=4096 \ No newline at end of file +content.transformer.complex.JodConverter.Pdf2swf.extensions.xlsm.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.JodConverter.Pdf2swf.extensions.pptm.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.JodConverter.Pdf2swf.extensions.xls.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.JodConverter.Pdf2swf.extensions.sldm.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.JodConverter.Pdf2swf.extensions.xltx.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.JodConverter.Pdf2swf.extensions.docx.swf.maxSourceSizeKBytes=256 +content.transformer.complex.JodConverter.Pdf2swf.extensions.potx.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.JodConverter.Pdf2swf.extensions.xlsx.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.JodConverter.Pdf2swf.extensions.pptx.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.JodConverter.Pdf2swf.extensions.xlam.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.JodConverter.Pdf2swf.extensions.ppt.swf.maxSourceSizeKBytes=6144 +content.transformer.complex.JodConverter.Pdf2swf.extensions.docm.swf.maxSourceSizeKBytes=256 +content.transformer.complex.JodConverter.Pdf2swf.extensions.xltm.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.JodConverter.Pdf2swf.extensions.dotx.swf.maxSourceSizeKBytes=256 +content.transformer.complex.JodConverter.Pdf2swf.extensions.xlsb.swf.maxSourceSizeKBytes=1024 +content.transformer.complex.JodConverter.Pdf2swf.extensions.sldx.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.JodConverter.Pdf2swf.extensions.ppsm.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.JodConverter.Pdf2swf.extensions.potm.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.JodConverter.Pdf2swf.extensions.txt.swf.maxSourceSizeKBytes=5120 +content.transformer.complex.JodConverter.Pdf2swf.extensions.ppam.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.JodConverter.Pdf2swf.extensions.dotm.swf.maxSourceSizeKBytes=256 +content.transformer.complex.JodConverter.Pdf2swf.extensions.doc.swf.maxSourceSizeKBytes=1536 +content.transformer.complex.JodConverter.Pdf2swf.extensions.vsd.swf.maxSourceSizeKBytes=4096 +content.transformer.complex.JodConverter.Pdf2swf.extensions.ppsx.swf.maxSourceSizeKBytes=4096 \ No newline at end of file diff --git a/source/java/org/alfresco/repo/content/ContentServiceImpl.java b/source/java/org/alfresco/repo/content/ContentServiceImpl.java index bb2536a643..ffe50e8a35 100644 --- a/source/java/org/alfresco/repo/content/ContentServiceImpl.java +++ b/source/java/org/alfresco/repo/content/ContentServiceImpl.java @@ -805,16 +805,15 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa MimetypeMap.MIMETYPE_IMAGE_PNG.equals(targetMimetype) && transformerDebug.getFileName(transformOptions, true, 0).contains("debugTransformers.txt")) { - Map> explicitTransforms = debugExplicitTransforms(); - debugActiveTransformersByTransformer(explicitTransforms); - debugActiveTransformersByMimetypes(explicitTransforms); + debugActiveTransformersByTransformer(); + debugActiveTransformersByMimetypes(); } } /** * Creates TransformerDebug that lists all the supported mimetype transformation for each transformer. */ - private void debugActiveTransformersByTransformer(Map> explicitTransforms) + private void debugActiveTransformersByTransformer() { try { @@ -837,20 +836,8 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa { long maxSourceSizeKBytes = transformer.getMaxSourceSizeKBytes( sourceMimetype, targetMimetype, options); - - // Is this an explicit transform, ignored because there are explicit transforms - // or does not have explicit transforms. - Boolean explicit = transformer.isExplicitTransformation(sourceMimetype, - targetMimetype, options); - if (!explicit) - { - Set targetMimetypes = explicitTransforms.get(sourceMimetype); - explicit = (targetMimetypes == null || !targetMimetypes.contains(targetMimetype)) - ? null - : Boolean.FALSE; - } transformerDebug.activeTransformer(++mimetypePairCount, transformer, - sourceMimetype, targetMimetype, maxSourceSizeKBytes, explicit, first); + sourceMimetype, targetMimetype, maxSourceSizeKBytes, first); first = false; } } @@ -875,7 +862,7 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa /** * Creates TransformerDebug that lists all available transformers for each mimetype combination. */ - private void debugActiveTransformersByMimetypes(Map> explicitTransforms) + private void debugActiveTransformersByMimetypes() { try { @@ -897,21 +884,8 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa { long maxSourceSizeKBytes = transformer.getMaxSourceSizeKBytes( sourceMimetype, targetMimetype, options); - - // Is this an explicit transform, ignored because there are explicit transforms - // or does not have explicit transforms. - Boolean explicit = transformer.isExplicitTransformation(sourceMimetype, - targetMimetype, options); - if (!explicit) - { - Set targetMimetypes = explicitTransforms.get(sourceMimetype); - explicit = (targetMimetypes == null || !targetMimetypes.contains(targetMimetype)) - ? null - : Boolean.FALSE; - } - transformerDebug.activeTransformer(sourceMimetype, targetMimetype, - transformerCount, transformer, maxSourceSizeKBytes, explicit, - transformerCount++ == 0); + transformerDebug.activeTransformer(sourceMimetype, targetMimetype, + transformerCount, transformer, maxSourceSizeKBytes, transformerCount++ == 0); } } } @@ -927,43 +901,6 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa transformerDebug.popMisc(); } } - - /** - * Returns the explicit mimetype transformations. Key is the source mimetype - * and the value is a set of target mimetypes that are explicit. - */ - private Map> debugExplicitTransforms() - { - Map> explicitTransforms = new HashMap>(); - - TransformationOptions options = new TransformationOptions(); - for (String sourceMimetype : mimetypeService.getMimetypes()) - { - for (String targetMimetype : mimetypeService.getMimetypes()) - { - for (ContentTransformer transformer : transformerRegistry.getTransformers()) - { - if (transformer.isTransformable(sourceMimetype, -1, targetMimetype, options)) - { - if (transformer.isExplicitTransformation(sourceMimetype, targetMimetype, - options)) - { - Set targetMimetypes = explicitTransforms.get(sourceMimetype); - if (targetMimetypes == null) - { - targetMimetypes = new HashSet(); - explicitTransforms.put(sourceMimetype, targetMimetypes); - } - targetMimetypes.add(targetMimetype); - break; - } - } - } - } - } - - return explicitTransforms; - } /** * {@inheritDoc} diff --git a/source/java/org/alfresco/repo/content/transform/AbstractContentTransformerLimits.java b/source/java/org/alfresco/repo/content/transform/AbstractContentTransformerLimits.java index 3fdb505b4e..cf1ea57d16 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.MIMETYPES_SEPARATOR.substring(1)+sourceExt+'.'+targetExt; + String mimetypeSuffix = TransformerConfig.EXTENSIONS_SEPARATOR.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 a92cd5e30d..5c0895cc08 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.MIMETYPES_SEPARATOR.substring(1)+sourceExt+'.'+targetExt+ + deprecatedSetter(TransformerConfig.EXTENSIONS_SEPARATOR.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 a0fe08bd12..4967a89a82 100644 --- a/source/java/org/alfresco/repo/content/transform/TransformerConfig.java +++ b/source/java/org/alfresco/repo/content/transform/TransformerConfig.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2012 Alfresco Software Limited. + * Copyright (C) 2005-2013 Alfresco Software Limited. * * This file is part of Alfresco * @@ -68,6 +68,12 @@ public interface TransformerConfig /** * The separator between the transformer name and two mimetype extensions in a property name. */ + static final String EXTENSIONS_SEPARATOR = ".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}. + */ static final String MIMETYPES_SEPARATOR = ".mimetypes."; /** @@ -104,6 +110,16 @@ public interface TransformerConfig */ static final String INITIAL_COUNT = ".count"; + /** + * Suffixes for limits. + */ + static final String MAX_SOURCE_SIZE_K_BYTES = '.'+TransformationOptionLimits.OPT_MAX_SOURCE_SIZE_K_BYTES; + static final String TIMEOUT_MS = '.'+TransformationOptionLimits.OPT_TIMEOUT_MS; + static final String MAX_PAGES = '.'+TransformationOptionLimits.OPT_MAX_PAGES; + static final String READ_LIMIT_K_BYTES = '.'+TransformationOptionLimits.OPT_READ_LIMIT_K_BYTES; + static final String READ_LIMIT_TIME_MS = '.'+TransformationOptionLimits.OPT_READ_LIMIT_TIME_MS; + static final String PAGE_LIMIT = '.'+TransformationOptionLimits.OPT_PAGE_LIMIT; + /** * To support the historical concept of EXPLICIT transformers, all such transformers * are given a {@link PRIORITY_EXPLICIT} (5). By default transformers have a default of 10. @@ -111,16 +127,21 @@ public interface TransformerConfig */ public int PRIORITY_EXPLICIT = 5; + /** + * By default transformers have a default of 10. + */ + public int PRIORITY_DEFAULT = 10; + /** * Suffixes to property names used to define transformation limits */ static final Collection LIMIT_SUFFIXES = Arrays.asList(new String [] { - '.'+TransformationOptionLimits.OPT_MAX_SOURCE_SIZE_K_BYTES, - '.'+TransformationOptionLimits.OPT_TIMEOUT_MS, - '.'+TransformationOptionLimits.OPT_MAX_PAGES, - '.'+TransformationOptionLimits.OPT_READ_LIMIT_K_BYTES, - '.'+TransformationOptionLimits.OPT_READ_LIMIT_TIME_MS, - '.'+TransformationOptionLimits.OPT_PAGE_LIMIT + MAX_SOURCE_SIZE_K_BYTES, + TIMEOUT_MS, + MAX_PAGES, + READ_LIMIT_K_BYTES, + READ_LIMIT_TIME_MS, + PAGE_LIMIT }); /** diff --git a/source/java/org/alfresco/repo/content/transform/TransformerConfigImpl.java b/source/java/org/alfresco/repo/content/transform/TransformerConfigImpl.java index d65edc34cc..ea19f49c7b 100644 --- a/source/java/org/alfresco/repo/content/transform/TransformerConfigImpl.java +++ b/source/java/org/alfresco/repo/content/transform/TransformerConfigImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2012 Alfresco Software Limited. + * Copyright (C) 2005-2013 Alfresco Software Limited. * * This file is part of Alfresco * @@ -34,9 +34,6 @@ import org.springframework.extensions.surf.util.AbstractLifecycleBean; */ public class TransformerConfigImpl extends AbstractLifecycleBean implements TransformerConfig { - /** The logger. */ - private static Log logger = LogFactory.getLog(TransformerConfigImpl.class); - private MimetypeService mimetypeService; // Holds statistics about each transformer, sourceMimeType and targetMimetype combination. @@ -88,11 +85,11 @@ public class TransformerConfigImpl extends AbstractLifecycleBean implements Tran statistics= new TransformerConfigStatistics(this, mimetypeService); limits = new TransformerConfigLimits(getSubsystem(), mimetypeService); supported = new TransformerConfigSupported(getSubsystem(), mimetypeService); - priorities = new TransformerConfigProperty(getSubsystem(), mimetypeService, PRIORITY); - thresholdCounts = new TransformerConfigProperty(getSubsystem(), mimetypeService, THRESHOLD_COUNT); - errorTimes = new TransformerConfigProperty(getSubsystem(), mimetypeService, ERROR_TIME); - initialAverageTimes = new TransformerConfigProperty(getSubsystem(), mimetypeService, INITIAL_TIME); - initialCounts = new TransformerConfigProperty(getSubsystem(), mimetypeService, INITIAL_COUNT); + priorities = new TransformerConfigProperty(getSubsystem(), mimetypeService, PRIORITY, Integer.toString(PRIORITY_DEFAULT)); + thresholdCounts = new TransformerConfigProperty(getSubsystem(), mimetypeService, THRESHOLD_COUNT, "3"); + errorTimes = new TransformerConfigProperty(getSubsystem(), mimetypeService, ERROR_TIME, "120000"); + initialAverageTimes = new TransformerConfigProperty(getSubsystem(), mimetypeService, INITIAL_TIME, "0"); + initialCounts = new TransformerConfigProperty(getSubsystem(), mimetypeService, INITIAL_COUNT, "100000"); } /** diff --git a/source/java/org/alfresco/repo/content/transform/TransformerConfigLimits.java b/source/java/org/alfresco/repo/content/transform/TransformerConfigLimits.java index 917127a4a1..91a2eb3026 100644 --- a/source/java/org/alfresco/repo/content/transform/TransformerConfigLimits.java +++ b/source/java/org/alfresco/repo/content/transform/TransformerConfigLimits.java @@ -22,8 +22,9 @@ 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.MIMETYPES_SEPARATOR; +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; @@ -59,91 +60,73 @@ public class TransformerConfigLimits extends TransformerPropertyNameExtractor limits = new HashMap>(); // Gets all the transformer, source and target combinations in properties that define limits. - Set> transformerNamesAndExt = - getTransformerNamesAndExt(MIMETYPES_SEPARATOR, LIMIT_SUFFIXES, true, subsystem, mimetypeService); + Collection transformerNamesAndExt = + getTransformerSourceTargetValues(LIMIT_SUFFIXES, true, subsystem, mimetypeService); // Add the system wide default just in case it is not included, as we always need this one - transformerNamesAndExt.add(new Triple(DEFAULT_TRANSFORMER, ANY, ANY)); + TransformationOptionLimits options = getOrCreateTransformerOptionLimits(DEFAULT_TRANSFORMER, ANY, ANY); // Populate the transformer limits - for (Triple triple: transformerNamesAndExt) + for (TransformerSourceTargetValue property: transformerNamesAndExt) { - String transformerName = triple.getFirst(); - String sourceExt = triple.getSecond(); - String targetExt = triple.getThird(); - String sourceMimetype = ANY.equals(sourceExt) ? ANY : mimetypeService.getMimetype(sourceExt); - String targetMimetype = ANY.equals(targetExt) ? ANY : mimetypeService.getMimetype(targetExt); - - TransformationOptionLimits limits = newTransformationOptionLimits(transformerName, sourceExt, targetExt, subsystem); - - DoubleMap mimetypeLimits = - this.limits.get(transformerName); - if (mimetypeLimits == null) - { - mimetypeLimits = new DoubleMap(ANY, ANY); - this.limits.put(transformerName, mimetypeLimits); - } - mimetypeLimits.put(sourceMimetype, targetMimetype, limits); + options = getOrCreateTransformerOptionLimits(property.transformerName, + property.sourceMimetype, property.targetMimetype); + setTransformationOptionsFromProperties(options, property.transformerName, property.sourceExt, property.targetExt, + property.value, property.suffix); } } + + /** + * Returns the TransformationOptionLimits for the transformer and mimetype combination, + * creating and adding one if not already included. + */ + private TransformationOptionLimits getOrCreateTransformerOptionLimits(String transformerName, + String sourceMimetype, String targetMimetype) + { + DoubleMap mimetypeLimits; + mimetypeLimits = limits.get(transformerName); + if (mimetypeLimits == null) + { + mimetypeLimits = new DoubleMap(ANY, ANY); + limits.put(transformerName, mimetypeLimits); + } + + TransformationOptionLimits options = mimetypeLimits.get(sourceMimetype, targetMimetype); + if (options == null) + { + options = new TransformationOptionLimits(); + mimetypeLimits.put(sourceMimetype, targetMimetype, options); + } + return options; + } - /** - * Returns a TransformationOptionLimits object using property values. - * @param transformerName - * @param sourceExt is null for overall transformer options rather than for a specific mimetype pair - * @param targetExt is null for overall transformer options rather than for a specific mimetype pair - * @return a TransformationOptionLimits object or null if not created - */ - private TransformationOptionLimits newTransformationOptionLimits(String transformerName, - String sourceExt, String targetExt, ChildApplicationContextFactory subsystem) + private void setTransformationOptionsFromProperties(TransformationOptionLimits options, + String transformerName, String sourceExt, String targetExt, String value, String suffix) { - TransformationOptionLimits limits = new TransformationOptionLimits(); - - // The overall values can be defined in two ways - if (ANY.equals(sourceExt) && ANY.equals(targetExt)) + long l = Long.parseLong(value); + if (suffix == TransformerConfig.MAX_SOURCE_SIZE_K_BYTES) { - setTransformationOptionsFromProperties(limits, transformerName, null, null, subsystem); + options.setMaxSourceSizeKBytes(l); } - setTransformationOptionsFromProperties(limits, transformerName, sourceExt, targetExt, subsystem); - - return limits; - } - - private void setTransformationOptionsFromProperties(TransformationOptionLimits limits, - String transformerName, String sourceExt, String targetExt, ChildApplicationContextFactory subsystem) - { - String propertyNameRoot = CONTENT+transformerName+ - (sourceExt == null ? "" : MIMETYPES_SEPARATOR+sourceExt+'.'+targetExt); - int i = 0; - for (String suffix: LIMIT_SUFFIXES) + else if (suffix == TransformerConfig.TIMEOUT_MS) { - String value = subsystem.getProperty(propertyNameRoot+suffix); - if (value != null) - { - long l = Long.parseLong(value); - switch (i) - { - case 0: - limits.setMaxSourceSizeKBytes(l); - break; - case 1: - limits.setTimeoutMs(l); - break; - case 2: - limits.setMaxPages((int)l); - break; - case 3: - limits.setReadLimitKBytes(l); - break; - case 4: - limits.setReadLimitTimeMs(l); - break; - case 5: - limits.setPageLimit((int)l); - break; - } - } - i++; + options.setTimeoutMs(l); + } + else if (suffix == TransformerConfig.MAX_PAGES) + { + options.setMaxPages((int)l); + } + else if (suffix == TransformerConfig.READ_LIMIT_K_BYTES) + { + options.setReadLimitKBytes(l); + } + else if (suffix == TransformerConfig.READ_LIMIT_TIME_MS) + { + options.setReadLimitTimeMs(l); + } + else // if (suffix == TransformerConfig.PAGE_LIMIT) + { + options.setPageLimit((int)l); } } diff --git a/source/java/org/alfresco/repo/content/transform/TransformerConfigProperty.java b/source/java/org/alfresco/repo/content/transform/TransformerConfigProperty.java index cf5c46b079..aac1b5dfef 100644 --- a/source/java/org/alfresco/repo/content/transform/TransformerConfigProperty.java +++ b/source/java/org/alfresco/repo/content/transform/TransformerConfigProperty.java @@ -19,18 +19,15 @@ 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.MIMETYPES_SEPARATOR; +import java.util.Collection; import java.util.Collections; 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.util.Triple; /** * Provides access to single transformer configuration property depending on the @@ -43,78 +40,45 @@ public class TransformerConfigProperty extends TransformerPropertyNameExtractor private Map> values; public TransformerConfigProperty(ChildApplicationContextFactory subsystem, - MimetypeService mimetypeService, String propertySuffix) + MimetypeService mimetypeService, String propertySuffix, String defaultValue) { - setValues(subsystem, mimetypeService, propertySuffix); + setValues(subsystem, mimetypeService, propertySuffix, defaultValue); } /** * Sets the transformer values created from system properties. */ - private void setValues(ChildApplicationContextFactory subsystem, MimetypeService mimetypeService, String propertySuffix) + private void setValues(ChildApplicationContextFactory subsystem, MimetypeService mimetypeService, + String suffix, String defaultValue) { values = new HashMap>(); // Gets all the transformer, source and target combinations in properties that define // this value. - Set> transformerNamesAndMimetypes = - getTransformerNamesAndExt(MIMETYPES_SEPARATOR, Collections.singletonList(propertySuffix), true, subsystem, mimetypeService); + Collection transformerNamesAndMimetypes = + getTransformerSourceTargetValues(Collections.singletonList(suffix), true, subsystem, mimetypeService); - // Add the system wide default just in case it is not included, as we always need this one - transformerNamesAndMimetypes.add(new Triple(DEFAULT_TRANSFORMER, ANY, ANY)); + // Add the system wide default if it does not exist, as we always need this one + TransformerSourceTargetValue transformerSourceTargetValue = + new TransformerSourceTargetValue(DEFAULT_TRANSFORMER, ANY, ANY, defaultValue, suffix, mimetypeService); + if (transformerNamesAndMimetypes.contains(transformerSourceTargetValue.key())) + { + transformerNamesAndMimetypes.add(transformerSourceTargetValue); + } // Populate the transformer values - for (Triple triple: transformerNamesAndMimetypes) + for (TransformerSourceTargetValue property: transformerNamesAndMimetypes) { - String transformerName = triple.getFirst(); - String sourceExt = triple.getSecond(); - String targetExt = triple.getThird(); - String sourceMimetype = ANY.equals(sourceExt) ? ANY : mimetypeService.getMimetype(sourceExt); - String targetMimetype = ANY.equals(targetExt) ? ANY : mimetypeService.getMimetype(targetExt); - - String value = newTransformerValue(transformerName, sourceExt, targetExt, subsystem, propertySuffix); - - DoubleMap mimetypeLimits = this.values.get(transformerName); + DoubleMap mimetypeLimits = this.values.get(property.transformerName); if (mimetypeLimits == null) { mimetypeLimits = new DoubleMap(ANY, ANY); - this.values.put(transformerName, mimetypeLimits); + this.values.put(property.transformerName, mimetypeLimits); } - mimetypeLimits.put(sourceMimetype, targetMimetype, value); + mimetypeLimits.put(property.sourceMimetype, property.targetMimetype, property.value); } } - /** - * Returns a String object using property values. - * @param transformerName - * @param sourceExt is null for overall transformer options rather than for a specific mimetype pair - * @param targetExt is null for overall transformer options rather than for a specific mimetype pair - * @return a String object or null if not created - */ - private String newTransformerValue(String transformerName, String sourceExt, String targetExt, - ChildApplicationContextFactory subsystem, String propertySuffix) - { - String value = getValueFromProperties(transformerName, sourceExt, targetExt, subsystem, propertySuffix); - - // The overall values can be defined in another way - if (value == null && ANY.equals(sourceExt) && ANY.equals(targetExt)) - { - value = getValueFromProperties(transformerName, null, null, subsystem, propertySuffix); - } - - return value; - } - - private String getValueFromProperties(String transformerName, String sourceExt, String targetExt, - ChildApplicationContextFactory subsystem, String propertySuffix) - { - String propertyName = CONTENT+transformerName+ - (sourceExt == null ? "" : MIMETYPES_SEPARATOR+sourceExt+'.'+targetExt)+ - propertySuffix; - String value = subsystem.getProperty(propertyName); - return value; - } - private String getString(ContentTransformer transformer, String sourceMimetype, String targetMimetype) { diff --git a/source/java/org/alfresco/repo/content/transform/TransformerConfigSupported.java b/source/java/org/alfresco/repo/content/transform/TransformerConfigSupported.java index 1775faea48..a785321bff 100644 --- a/source/java/org/alfresco/repo/content/transform/TransformerConfigSupported.java +++ b/source/java/org/alfresco/repo/content/transform/TransformerConfigSupported.java @@ -19,21 +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.MIMETYPES_SEPARATOR; import static org.alfresco.repo.content.transform.TransformerConfig.SUPPORTED; -import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.List; 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.TransformationOptions; -import org.alfresco.util.Triple; /** * Provides access to the lists of supported and unsupported mimetype transformations @@ -43,11 +38,6 @@ import org.alfresco.util.Triple; */ public class TransformerConfigSupported extends TransformerPropertyNameExtractor { - private static final String IS_MIMETYPE_REGEX = - "(application|audio|image|message|model|multipart|text|video)/.+"; - private static final String IS_MIMETYPE_SUBTYPE_WILDCARD_REGEX = - "(application|audio|image|message|model|multipart|text|video)/.*\\" + ANY + ".*"; - // Holds configured (entries only exist if configured rather than for all possible combinations) // of supported and unsupported mimetypes transformations for a transformer. // SourceMimetype and targetMimetype may be 'ANY' values to act as wild cards. @@ -58,69 +48,6 @@ public class TransformerConfigSupported extends TransformerPropertyNameExtractor setSupported(subsystem, mimetypeService); } - /** - * Determines if the given string is a mime type expression. - * - * @param extension - * @return whether or not the string is a mime type - */ - private boolean isMimetype(String extension) - { - return (extension != null && extension.matches(IS_MIMETYPE_REGEX)); - } - - /** - * 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)); - } - - /** - * Gets the mimetypes which match the given configMimetype from the given - * mimetypeService. - *

- * If the given mime type string contains one or more wildcards (*) in the subtype, the string - * is converted to a regular expression and any mimetypes which match are returned. - *

- * If the given mime type string has no wildcards a list with only the given - * mime type is returned. - * - * @param configMimetype - * @param mimetypeService - * @return the list of mime types which match the wildcard, or a list with just the given mimetype - */ - private List getMatchingMimetypes( - String configMimetype, MimetypeService mimetypeService) - { - if (configMimetype == null) - { - return null; - } - List matchingMimetypes = new ArrayList(1); - if (isMimetypeSubtypeWildcard(configMimetype)) - { - String mimetypeWildcardRegex = configMimetype.replaceAll("\\" + ANY, ".*"); - for (String mimetype : mimetypeService.getMimetypes()) - { - if (mimetype.matches(mimetypeWildcardRegex)) - { - matchingMimetypes.add(mimetype); - } - } - } - else - { - matchingMimetypes.add(configMimetype); - } - return matchingMimetypes; - } - /** * Sets the supported/unsupported mimetype transformations created from system properties. */ @@ -129,63 +56,24 @@ public class TransformerConfigSupported extends TransformerPropertyNameExtractor supported = new HashMap(); // Gets all the supported and unsupported transformer, source and target combinations - Set> transformerNamesAndMimetypes = - getTransformerNamesAndExt(MIMETYPES_SEPARATOR, Collections.singletonList(SUPPORTED), false, subsystem, mimetypeService); + Collection transformerNamesAndMimetypes = + getTransformerSourceTargetValues(Collections.singletonList(SUPPORTED), + false, subsystem, mimetypeService); // Populate the transformer values - for (Triple triple: transformerNamesAndMimetypes) + for (TransformerSourceTargetValue property: transformerNamesAndMimetypes) { - String transformerName = triple.getFirst(); - String sourceExt = triple.getSecond(); - String targetExt = triple.getThird(); - - SupportedAndUnsupportedTransformations supportedBytransformer = this.supported.get(transformerName); - + SupportedAndUnsupportedTransformations supportedBytransformer = this.supported.get(property.transformerName); if (supportedBytransformer == null) { supportedBytransformer = new SupportedAndUnsupportedTransformations(); - this.supported.put(transformerName, supportedBytransformer); - } - boolean supported = getValueFromProperties(transformerName, sourceExt, targetExt, subsystem, SUPPORTED); - - List sourceMimetypes = new ArrayList(1); - List targetMimetypes = new ArrayList(1); - if (isMimetype(sourceExt)) - { - sourceMimetypes.addAll(getMatchingMimetypes(sourceExt, mimetypeService)); - } - else - { - sourceMimetypes.add(ANY.equals(sourceExt) ? ANY : mimetypeService.getMimetype(sourceExt)); - } - if (isMimetype(targetExt)) - { - targetMimetypes.addAll(getMatchingMimetypes(targetExt, mimetypeService)); - } - else - { - targetMimetypes.add(ANY.equals(targetExt) ? ANY : mimetypeService.getMimetype(targetExt)); - } - for (String sourceMimetype : sourceMimetypes) - { - for (String targetMimetype : targetMimetypes) - { - supportedBytransformer.put(sourceMimetype, targetMimetype, supported); - } + this.supported.put(property.transformerName, supportedBytransformer); } + boolean supported = property.value == null || property.value.equalsIgnoreCase("true"); + supportedBytransformer.put(property.sourceMimetype, property.targetMimetype, supported); } } - private boolean getValueFromProperties(String transformerName, String sourceExt, String targetExt, - ChildApplicationContextFactory subsystem, String propertySuffix) - { - String propertyName = CONTENT+transformerName+ - (sourceExt == null ? "" : MIMETYPES_SEPARATOR+sourceExt+'.'+targetExt)+ - propertySuffix; - String value = subsystem.getProperty(propertyName); - return value == null || value.equalsIgnoreCase("true"); - } - /** * See {@link TransformerConfig#isSupportedTransformation(ContentTransformer, String, String, TransformationOptions)}. */ diff --git a/source/java/org/alfresco/repo/content/transform/TransformerDebug.java b/source/java/org/alfresco/repo/content/transform/TransformerDebug.java index 2af69f6aae..d2278b3638 100644 --- a/source/java/org/alfresco/repo/content/transform/TransformerDebug.java +++ b/source/java/org/alfresco/repo/content/transform/TransformerDebug.java @@ -377,8 +377,7 @@ public class TransformerDebug long maxSourceSizeKBytes = trans.getMaxSourceSizeKBytes(frame.sourceMimetype, frame.targetMimetype, frame.options); String size = maxSourceSizeKBytes > 0 ? "< "+fileSize(maxSourceSizeKBytes*1024) : ""; int padSize = 10 - size.length(); - String priority = Integer.toString(transformerConfig.getPriority(trans, frame.sourceMimetype, frame.targetMimetype)); - priority = spaces(2-priority.length())+priority; + String priority = gePriority(trans, frame.sourceMimetype, frame.targetMimetype); log((c == 'a' ? "**" : " ") + (c++) + ") " + priority + ' ' + name + spaces(padName) + size + spaces(padSize) + ms(trans.getTransformationTime(frame.sourceMimetype, frame.targetMimetype))); } @@ -394,38 +393,46 @@ public class TransformerDebug } } + private String gePriority(ContentTransformer transformer, String sourceMimetype, String targetMimetype) + { + String priority = '[' + Integer.toString(transformerConfig.getPriority(transformer, sourceMimetype, targetMimetype)) + ']'; + priority = spaces(4-priority.length())+priority; + return priority; + } + public void inactiveTransformer(ContentTransformer transformer) { log(getName(transformer)+' '+ms(transformer.getTransformationTime(null, null))+" INACTIVE"); } public void activeTransformer(int mimetypePairCount, ContentTransformer transformer, String sourceMimetype, - String targetMimetype, long maxSourceSizeKBytes, Boolean explicit, boolean firstMimetypePair) + String targetMimetype, long maxSourceSizeKBytes, boolean firstMimetypePair) { if (firstMimetypePair) { log(getName(transformer)+' '+ms(transformer.getTransformationTime(sourceMimetype, targetMimetype))); } String i = Integer.toString(mimetypePairCount); + String priority = gePriority(transformer, sourceMimetype, targetMimetype); log(spaces(5-i.length())+mimetypePairCount+") "+getMimetypeExt(sourceMimetype)+getMimetypeExt(targetMimetype)+ + priority + ' '+fileSize((maxSourceSizeKBytes > 0) ? maxSourceSizeKBytes*1024 : maxSourceSizeKBytes)+ - (maxSourceSizeKBytes == 0 || (explicit != null && !explicit) ? " disabled" : "")+ - (explicit == null ? "" : explicit ? " EXPLICIT" : " not explicit")); + (maxSourceSizeKBytes == 0 ? " disabled" : "")); } public void activeTransformer(String sourceMimetype, String targetMimetype, int transformerCount, ContentTransformer transformer, long maxSourceSizeKBytes, - Boolean explicit, boolean firstTransformer) + boolean firstTransformer) { String mimetypes = firstTransformer ? getMimetypeExt(sourceMimetype)+getMimetypeExt(targetMimetype) : spaces(10); char c = (char)('a'+transformerCount); + String priority = gePriority(transformer, sourceMimetype, targetMimetype); log(mimetypes+ - " "+c+") "+getName(transformer)+' '+ms(transformer.getTransformationTime(sourceMimetype, targetMimetype))+ + " "+c+") " + priority + ' ' + getName(transformer)+' '+ms(transformer.getTransformationTime(sourceMimetype, targetMimetype))+ ' '+fileSize((maxSourceSizeKBytes > 0) ? maxSourceSizeKBytes*1024 : maxSourceSizeKBytes)+ - (maxSourceSizeKBytes == 0 || (explicit != null && !explicit) ? " disabled" : "")+ - (explicit == null ? "" : explicit ? " EXPLICIT" : " not explicit")); + (maxSourceSizeKBytes == 0 ? " disabled" : "")); } private int getLongestTransformerNameLength(List transformers, diff --git a/source/java/org/alfresco/repo/content/transform/TransformerPropertyNameExtractor.java b/source/java/org/alfresco/repo/content/transform/TransformerPropertyNameExtractor.java index b937b1ab91..72d3668c58 100644 --- a/source/java/org/alfresco/repo/content/transform/TransformerPropertyNameExtractor.java +++ b/source/java/org/alfresco/repo/content/transform/TransformerPropertyNameExtractor.java @@ -22,9 +22,13 @@ 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.PREFIX; +import java.util.ArrayList; import java.util.Collection; -import java.util.HashSet; -import java.util.Set; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.alfresco.repo.management.subsystems.ChildApplicationContextFactory; import org.alfresco.service.cmr.repository.MimetypeService; @@ -37,11 +41,18 @@ 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[] 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 names, source extensions and target mimetype extensions - * from property names that defined transformation limits. - * @param separator after the transformer name and the source mimetype extension. - * Must start and end in a '.'. + * Returns a set of transformer name, source extension, target extension and value + * from property names that defined transformation limits. When the separator indicates + * it is followed by a regular expression that matches multiple mimetypes, more than one + * value may be added. When there is a value defined for specific extensions it wins over + * any regular expression value. * @param suffixes possible endings to the property names after the target mimetype extension. * Must start with a '.' if there is a suffix. * @param includeSummary if true will also look for property names without the separator, @@ -49,43 +60,246 @@ public abstract class TransformerPropertyNameExtractor * @param subsystem that provides the properties * @param mimetypeService */ - protected Set> getTransformerNamesAndExt(String separator, Collection suffixes, boolean includeSummary, - ChildApplicationContextFactory subsystem, MimetypeService mimetypeService) + protected Collection getTransformerSourceTargetValues(Collection suffixes, + boolean includeSummary, ChildApplicationContextFactory subsystem, MimetypeService mimetypeService) { - Set> transformerNamesAndExtensions = - new HashSet>(); + Map, TransformerSourceTargetValue> TransformerSourceTargetValues = + new HashMap, TransformerSourceTargetValue>(); for (String propertyName: subsystem.getPropertyNames()) { if (propertyName.startsWith(PREFIX)) { + suffixesLoop: for (String suffix: suffixes) { if (propertyName.endsWith(suffix)) { + String value = subsystem.getProperty(propertyName); String name = propertyName.substring(CONTENT.length(), propertyName.length()-suffix.length()); - int i = name.lastIndexOf(separator); - if (i != -1) + boolean separatorMatch = false; + for (String separator: SEPARATORS) { - String[] ext = name.substring(i+separator.length()).split("\\."); - if (ext.length == 2) + int i = name.lastIndexOf(separator); + if (i != -1) { - name = name.substring(0, i); - transformerNamesAndExtensions.add( - new Triple(name, ext[0], ext[1])); - break; + separatorMatch = true; + String extensions = name.substring(i+separator.length()); + String[] ext = splitExt(extensions); + if (ext.length == 2) + { + name = name.substring(0, i); + if (separator == TransformerConfig.EXTENSIONS_SEPARATOR) + { + addTransformerSourceTargetValue(TransformerSourceTargetValues, + false, name, ext[0], ext[1], value, suffix, mimetypeService); + } + else // if (separator == TransformerConfig.MIMETYPES_SEPARATOR) + { + List sourceMimetypes = getMatchingMimetypes(ext[0], mimetypeService); + List targetMimetypes = getMatchingMimetypes(ext[1], mimetypeService); + for (String sourceMimetype : sourceMimetypes) + { + for (String targetMimetype : targetMimetypes) + { + addTransformerSourceTargetValue(TransformerSourceTargetValues, + true, name, sourceMimetype, targetMimetype, value, + suffix, mimetypeService); + } + } + } + break suffixesLoop; + } } + } - else if (includeSummary) + + if (!separatorMatch && includeSummary) { - transformerNamesAndExtensions.add(new Triple(name, ANY, ANY)); - break; + addTransformerSourceTargetValue(TransformerSourceTargetValues, false, name, ANY, ANY, + value, suffix, mimetypeService); + break suffixesLoop; } } } } } - return transformerNamesAndExtensions; + return TransformerSourceTargetValues.values(); } -} \ No newline at end of file + + /** + * Optionally adds a new TransformerSourceTargetValue. If the supplied value is not constructed from + * from a property that uses a regular expression against a mimetype, a new value is always added and + * will replace any existing value. If not, the value is only added if there is not a current value. + * In other words properties that include extensions win out over those that use mimetypes. + */ + private void addTransformerSourceTargetValue( + Map, TransformerSourceTargetValue> transformerSourceTargetValues, + boolean mimetypeProperty, String name, String sourceExt, String targetExt, String value, + String suffix, MimetypeService mimetypeService) + { + TransformerSourceTargetValue transformerSourceTargetValue = + new TransformerSourceTargetValue(name, sourceExt, targetExt, value, suffix, mimetypeService); + Triple key = transformerSourceTargetValue.key(); + + if (!mimetypeProperty || !transformerSourceTargetValues.containsKey(key)) + { + transformerSourceTargetValues.put(key, transformerSourceTargetValue); + } + } + + /** + * Splits the extensions into two parts. It does this by looking for a '.' + * that is not escaped (preceded by a back slash '\'). + * This is to allow regular expressions to be used for mimetypes. + */ + private String[] splitExt(String extensions) + { + String[] ext = NO_EXT_MATCH; + Matcher matcher = EXTENSIONS_SEPARATOR.matcher(extensions); + if (matcher.find()) + { + int i = matcher.start(); + ext = new String[2]; + ext[0] = extensions.substring(0, i); + ext[1] = extensions.substring(0, i); + } + return ext; + } + + /** + * Gets the extensions of the mimetypes which match the given configMimetype from the given + * mimetypeService. + *

+ * If the given mimetype string contains one or more wildcards (*) in the subtype, the string + * is converted to a regular expression and the extensions of the mimetypes which match are returned. + *

+ * If the given mimetype string has no wildcards a list with only the given + * mimetype's extension is returned. + * + * @param configMimetype + * @param mimetypeService + * @return the list of extensions of mimetypes which match + */ + private List getMatchingMimetypes( + String configMimetype, MimetypeService mimetypeService) + { + if (configMimetype == null) + { + return null; + } + List matchingMimetypes = new ArrayList(1); + if (isMimetypeSubtypeWildcard(configMimetype)) + { + String mimetypeWildcardRegex = configMimetype.replaceAll("\\" + ANY, ".*"); + for (String mimetype : mimetypeService.getMimetypes()) + { + if (mimetype.matches(mimetypeWildcardRegex)) + { + 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 +{ + final String transformerName; + final String sourceExt; + final String targetExt; + final String value; + final String suffix; + final String sourceMimetype; + final String targetMimetype; + + public TransformerSourceTargetValue(String transformerName, String sourceExt, + String targetExt, String value, String suffix, MimetypeService mimetypeService) + { + this.transformerName = transformerName; + this.sourceExt = sourceExt; + this.targetExt = targetExt; + this.value = value; + this.suffix = suffix; + this.sourceMimetype = ANY.equals(sourceExt) ? ANY : mimetypeService.getMimetype(sourceExt); + this.targetMimetype = ANY.equals(targetExt) ? ANY : mimetypeService.getMimetype(targetExt); + } + + public Triple key() + { + return new Triple(transformerName, sourceExt, targetExt); + } + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = prime * result + ((sourceExt == null) ? 0 : sourceExt.hashCode()); + result = prime * result + ((targetExt == null) ? 0 : targetExt.hashCode()); + result = prime * result + ((transformerName == null) ? 0 : transformerName.hashCode()); + result = prime * result + ((value == null) ? 0 : value.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) + { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + TransformerSourceTargetValue other = (TransformerSourceTargetValue) obj; + if (sourceExt == null) + { + if (other.sourceExt != null) + return false; + } + else if (!sourceExt.equals(other.sourceExt)) + return false; + if (targetExt == null) + { + if (other.targetExt != null) + return false; + } + else if (!targetExt.equals(other.targetExt)) + return false; + if (transformerName == null) + { + if (other.transformerName != null) + return false; + } + else if (!transformerName.equals(other.transformerName)) + return false; + if (value == null) + { + if (other.value != null) + return false; + } + else if (!value.equals(other.value)) + return false; + return true; + } +}