ALF-14306 Add priorities to transformers

- Refactor to use ".mimetypes." and ".extensions." in all properties
   - TransformerDebug to include priorities

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@46889 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2013-02-20 21:55:49 +00:00
parent 1a339f7782
commit 66bd490bb6
11 changed files with 642 additions and 631 deletions

View File

@@ -15,291 +15,291 @@ content.transformer.default.maxPages=-1
# Transformer specific settings # Transformer specific settings
# ============================= # =============================
content.transformer.ImageMagick.mimetypes.png.png.priority=5 content.transformer.ImageMagick.extensions.png.png.priority=5
content.transformer.ImageMagick.mimetypes.pdf.png.priority=5 content.transformer.ImageMagick.extensions.pdf.png.priority=5
content.transformer.ImageMagick.mimetypes.ai.png.priority=5 content.transformer.ImageMagick.extensions.ai.png.priority=5
content.transformer.iWorksQuicklooks.mimetypes.key.jpg.priority=5 content.transformer.iWorksQuicklooks.extensions.key.jpg.priority=5
content.transformer.iWorksQuicklooks.mimetypes.pages.jpg.priority=5 content.transformer.iWorksQuicklooks.extensions.pages.jpg.priority=5
content.transformer.iWorksQuicklooks.mimetypes.numbers.jpg.priority=5 content.transformer.iWorksQuicklooks.extensions.numbers.jpg.priority=5
content.transformer.iWorksQuicklooks.mimetypes.key.pdf.priority=5 content.transformer.iWorksQuicklooks.extensions.key.pdf.priority=5
content.transformer.iWorksQuicklooks.mimetypes.pages.pdf.priority=5 content.transformer.iWorksQuicklooks.extensions.pages.pdf.priority=5
content.transformer.iWorksQuicklooks.mimetypes.numbers.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.extensions.pdf.png.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.eps.supported=true content.transformer.complex.PDF.Image.extensions.pdf.eps.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.jp2.supported=true content.transformer.complex.PDF.Image.extensions.pdf.jp2.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.psd.supported=true content.transformer.complex.PDF.Image.extensions.pdf.psd.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.ppj.supported=true content.transformer.complex.PDF.Image.extensions.pdf.ppj.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.cgm.supported=true content.transformer.complex.PDF.Image.extensions.pdf.cgm.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.gif.supported=true content.transformer.complex.PDF.Image.extensions.pdf.gif.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.ief.supported=true content.transformer.complex.PDF.Image.extensions.pdf.ief.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.bmp.supported=true content.transformer.complex.PDF.Image.extensions.pdf.bmp.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.jpg.supported=true content.transformer.complex.PDF.Image.extensions.pdf.jpg.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.pbm.supported=true content.transformer.complex.PDF.Image.extensions.pdf.pbm.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.pgm.supported=true content.transformer.complex.PDF.Image.extensions.pdf.pgm.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.pnm.supported=true content.transformer.complex.PDF.Image.extensions.pdf.pnm.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.ppm.supported=true content.transformer.complex.PDF.Image.extensions.pdf.ppm.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.ras.supported=true content.transformer.complex.PDF.Image.extensions.pdf.ras.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.tiff.supported=true content.transformer.complex.PDF.Image.extensions.pdf.tiff.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.xbm.supported=true content.transformer.complex.PDF.Image.extensions.pdf.xbm.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.xpm.supported=true content.transformer.complex.PDF.Image.extensions.pdf.xpm.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.xwd.supported=true content.transformer.complex.PDF.Image.extensions.pdf.xwd.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.bin.supported=true content.transformer.complex.PDF.Image.extensions.pdf.bin.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.dwt.supported=true content.transformer.complex.PDF.Image.extensions.pdf.dwt.supported=true
content.transformer.complex.PDF.Image.mimetypes.pdf.jpg.priority=5 content.transformer.complex.PDF.Image.extensions.pdf.jpg.priority=5
content.transformer.complex.PDF.Image.mimetypes.pdf.gif.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.extensions.ai.png.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.eps.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.eps.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.jp2.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.jp2.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.psd.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.psd.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.ppj.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.ppj.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.cgm.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.cgm.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.gif.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.gif.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.ief.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.ief.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.bmp.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.bmp.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.jpg.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.jpg.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.pbm.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.pbm.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.pgm.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.pgm.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.pnm.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.pnm.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.ppm.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.ppm.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.ras.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.ras.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.tiff.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.tiff.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.xbm.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.xbm.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.xpm.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.xpm.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.xwd.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.xwd.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.bin.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.bin.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.dwt.supported=true content.transformer.complex.AdobeIllustrator.Image.extensions.ai.dwt.supported=true
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.jpg.priority=5 content.transformer.complex.AdobeIllustrator.Image.extensions.ai.jpg.priority=5
content.transformer.complex.AdobeIllustrator.Image.mimetypes.ai.gif.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.extensions.key.png.priority=5
content.transformer.complex.iWorks.Image.mimetypes.numbers.png.priority=5 content.transformer.complex.iWorks.Image.extensions.numbers.png.priority=5
content.transformer.complex.iWorks.Image.mimetypes.pages.png.priority=5 content.transformer.complex.iWorks.Image.extensions.pages.png.priority=5
content.transformer.OpenOffice.mimetypes.*.xlsm.supported=false content.transformer.OpenOffice.extensions.*.xlsm.supported=false
content.transformer.OpenOffice.mimetypes.*.pptm.supported=false content.transformer.OpenOffice.extensions.*.pptm.supported=false
content.transformer.OpenOffice.mimetypes.*.sldm.supported=false content.transformer.OpenOffice.extensions.*.sldm.supported=false
content.transformer.OpenOffice.mimetypes.*.xltx.supported=false content.transformer.OpenOffice.extensions.*.xltx.supported=false
content.transformer.OpenOffice.mimetypes.*.docx.supported=false content.transformer.OpenOffice.extensions.*.docx.supported=false
content.transformer.OpenOffice.mimetypes.*.potx.supported=false content.transformer.OpenOffice.extensions.*.potx.supported=false
content.transformer.OpenOffice.mimetypes.*.xlsx.supported=false content.transformer.OpenOffice.extensions.*.xlsx.supported=false
content.transformer.OpenOffice.mimetypes.*.pptx.supported=false content.transformer.OpenOffice.extensions.*.pptx.supported=false
content.transformer.OpenOffice.mimetypes.*.xlam.supported=false content.transformer.OpenOffice.extensions.*.xlam.supported=false
content.transformer.OpenOffice.mimetypes.*.docm.supported=false content.transformer.OpenOffice.extensions.*.docm.supported=false
content.transformer.OpenOffice.mimetypes.*.xltm.supported=false content.transformer.OpenOffice.extensions.*.xltm.supported=false
content.transformer.OpenOffice.mimetypes.*.dotx.supported=false content.transformer.OpenOffice.extensions.*.dotx.supported=false
content.transformer.OpenOffice.mimetypes.*.xlsb.supported=false content.transformer.OpenOffice.extensions.*.xlsb.supported=false
content.transformer.OpenOffice.mimetypes.*.sldx.supported=false content.transformer.OpenOffice.extensions.*.sldx.supported=false
content.transformer.OpenOffice.mimetypes.*.ppsm.supported=false content.transformer.OpenOffice.extensions.*.ppsm.supported=false
content.transformer.OpenOffice.mimetypes.*.txt.supported=false content.transformer.OpenOffice.extensions.*.txt.supported=false
content.transformer.OpenOffice.mimetypes.*.potm.supported=false content.transformer.OpenOffice.extensions.*.potm.supported=false
content.transformer.OpenOffice.mimetypes.*.ppam.supported=false content.transformer.OpenOffice.extensions.*.ppam.supported=false
content.transformer.OpenOffice.mimetypes.*.dotm.supported=false content.transformer.OpenOffice.extensions.*.dotm.supported=false
content.transformer.OpenOffice.mimetypes.*.ppsx.supported=false content.transformer.OpenOffice.extensions.*.ppsx.supported=false
content.transformer.OpenOffice.mimetypes.html.pdf.supported=false content.transformer.OpenOffice.extensions.html.pdf.supported=false
content.transformer.OpenOffice.mimetypes.xlsm.pdf.maxSourceSizeKBytes=1536 content.transformer.OpenOffice.extensions.xlsm.pdf.maxSourceSizeKBytes=1536
content.transformer.OpenOffice.mimetypes.pptm.pdf.maxSourceSizeKBytes=4096 content.transformer.OpenOffice.extensions.pptm.pdf.maxSourceSizeKBytes=4096
content.transformer.OpenOffice.mimetypes.xls.pdf.maxSourceSizeKBytes=10240 content.transformer.OpenOffice.extensions.xls.pdf.maxSourceSizeKBytes=10240
content.transformer.OpenOffice.mimetypes.sldm.pdf.maxSourceSizeKBytes=4096 content.transformer.OpenOffice.extensions.sldm.pdf.maxSourceSizeKBytes=4096
content.transformer.OpenOffice.mimetypes.xltx.pdf.maxSourceSizeKBytes=1536 content.transformer.OpenOffice.extensions.xltx.pdf.maxSourceSizeKBytes=1536
content.transformer.OpenOffice.mimetypes.potx.pdf.maxSourceSizeKBytes=4096 content.transformer.OpenOffice.extensions.potx.pdf.maxSourceSizeKBytes=4096
content.transformer.OpenOffice.mimetypes.docx.pdf.maxSourceSizeKBytes=768 content.transformer.OpenOffice.extensions.docx.pdf.maxSourceSizeKBytes=768
content.transformer.OpenOffice.mimetypes.xlsx.pdf.maxSourceSizeKBytes=1536 content.transformer.OpenOffice.extensions.xlsx.pdf.maxSourceSizeKBytes=1536
content.transformer.OpenOffice.mimetypes.pptx.pdf.maxSourceSizeKBytes=4096 content.transformer.OpenOffice.extensions.pptx.pdf.maxSourceSizeKBytes=4096
content.transformer.OpenOffice.mimetypes.xlam.pdf.maxSourceSizeKBytes=1536 content.transformer.OpenOffice.extensions.xlam.pdf.maxSourceSizeKBytes=1536
content.transformer.OpenOffice.mimetypes.ppt.pdf.maxSourceSizeKBytes=6144 content.transformer.OpenOffice.extensions.ppt.pdf.maxSourceSizeKBytes=6144
content.transformer.OpenOffice.mimetypes.docm.pdf.maxSourceSizeKBytes=768 content.transformer.OpenOffice.extensions.docm.pdf.maxSourceSizeKBytes=768
content.transformer.OpenOffice.mimetypes.xltm.pdf.maxSourceSizeKBytes=1536 content.transformer.OpenOffice.extensions.xltm.pdf.maxSourceSizeKBytes=1536
content.transformer.OpenOffice.mimetypes.dotx.pdf.maxSourceSizeKBytes=768 content.transformer.OpenOffice.extensions.dotx.pdf.maxSourceSizeKBytes=768
content.transformer.OpenOffice.mimetypes.xlsb.pdf.maxSourceSizeKBytes=1536 content.transformer.OpenOffice.extensions.xlsb.pdf.maxSourceSizeKBytes=1536
content.transformer.OpenOffice.mimetypes.sldx.pdf.maxSourceSizeKBytes=4096 content.transformer.OpenOffice.extensions.sldx.pdf.maxSourceSizeKBytes=4096
content.transformer.OpenOffice.mimetypes.ppsm.pdf.maxSourceSizeKBytes=4096 content.transformer.OpenOffice.extensions.ppsm.pdf.maxSourceSizeKBytes=4096
content.transformer.OpenOffice.mimetypes.potm.pdf.maxSourceSizeKBytes=4096 content.transformer.OpenOffice.extensions.potm.pdf.maxSourceSizeKBytes=4096
content.transformer.OpenOffice.mimetypes.txt.pdf.maxSourceSizeKBytes=5120 content.transformer.OpenOffice.extensions.txt.pdf.maxSourceSizeKBytes=5120
content.transformer.OpenOffice.mimetypes.ppam.pdf.maxSourceSizeKBytes=4096 content.transformer.OpenOffice.extensions.ppam.pdf.maxSourceSizeKBytes=4096
content.transformer.OpenOffice.mimetypes.dotm.pdf.maxSourceSizeKBytes=768 content.transformer.OpenOffice.extensions.dotm.pdf.maxSourceSizeKBytes=768
content.transformer.OpenOffice.mimetypes.doc.pdf.maxSourceSizeKBytes=10240 content.transformer.OpenOffice.extensions.doc.pdf.maxSourceSizeKBytes=10240
content.transformer.OpenOffice.mimetypes.vsd.pdf.maxSourceSizeKBytes=4096 content.transformer.OpenOffice.extensions.vsd.pdf.maxSourceSizeKBytes=4096
content.transformer.OpenOffice.mimetypes.ppsx.pdf.maxSourceSizeKBytes=4096 content.transformer.OpenOffice.extensions.ppsx.pdf.maxSourceSizeKBytes=4096
content.transformer.OpenOffice.Html2Pdf.mimetypes.html.pdf.supported=true content.transformer.OpenOffice.Html2Pdf.extensions.html.pdf.supported=true
content.transformer.OpenOffice.Html2Pdf.mimetypes.html.pdf.priority=5 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.extensions.csv.pdf.supported=true
content.transformer.PdfBox.TextToPdf.mimetypes.xml.pdf.supported=true content.transformer.PdfBox.TextToPdf.extensions.xml.pdf.supported=true
content.transformer.PdfBox.TextToPdf.maxSourceSizeKBytes=10240 content.transformer.PdfBox.TextToPdf.maxSourceSizeKBytes=10240
content.transformer.complex.Text.Image.mimetypes.csv.*.supported=true content.transformer.complex.Text.Image.extensions.csv.*.supported=true
content.transformer.complex.Text.Image.mimetypes.xml.*.supported=true content.transformer.complex.Text.Image.extensions.xml.*.supported=true
content.transformer.complex.Text.Image.mimetypes.txt.*.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.extensions.xlsm.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.pptm.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.pptm.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.xls.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.xls.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.sldm.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.sldm.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.xltx.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.xltx.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.docx.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.docx.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.potx.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.potx.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.xlsx.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.xlsx.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.pptx.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.pptx.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.xlam.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.xlam.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.ppt.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.ppt.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.docm.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.docm.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.xltm.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.xltm.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.dotx.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.dotx.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.sldx.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.sldx.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.ppsm.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.ppsm.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.txt.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.txt.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.ppam.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.ppam.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.dotm.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.dotm.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.doc.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.doc.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.ppsx.txt.supported=false content.transformer.complex.OpenOffice.PdfBox.extensions.ppsx.txt.supported=false
content.transformer.complex.OpenOffice.PdfBox.mimetypes.xlsb.txt.maxSourceSizeKBytes=1024 content.transformer.complex.OpenOffice.PdfBox.extensions.xlsb.txt.maxSourceSizeKBytes=1024
content.transformer.complex.OpenOffice.PdfBox.mimetypes.potm.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.maxSourceSizeKBytes=5120
content.transformer.Pdf2swf.mimetypes.pdf.swf.supported=true content.transformer.Pdf2swf.extensions.pdf.swf.supported=true
content.transformer.Pdf2swf.mimetypes.ai.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.extensions.xlsm.swf.maxSourceSizeKBytes=1024
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.pptm.swf.maxSourceSizeKBytes=4096 content.transformer.complex.OpenOffice.Pdf2swf.extensions.pptm.swf.maxSourceSizeKBytes=4096
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xls.swf.maxSourceSizeKBytes=1024 content.transformer.complex.OpenOffice.Pdf2swf.extensions.xls.swf.maxSourceSizeKBytes=1024
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.sldm.swf.maxSourceSizeKBytes=4096 content.transformer.complex.OpenOffice.Pdf2swf.extensions.sldm.swf.maxSourceSizeKBytes=4096
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xltx.swf.maxSourceSizeKBytes=1024 content.transformer.complex.OpenOffice.Pdf2swf.extensions.xltx.swf.maxSourceSizeKBytes=1024
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.docx.swf.maxSourceSizeKBytes=256 content.transformer.complex.OpenOffice.Pdf2swf.extensions.docx.swf.maxSourceSizeKBytes=256
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.potx.swf.maxSourceSizeKBytes=4096 content.transformer.complex.OpenOffice.Pdf2swf.extensions.potx.swf.maxSourceSizeKBytes=4096
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xlsx.swf.maxSourceSizeKBytes=1024 content.transformer.complex.OpenOffice.Pdf2swf.extensions.xlsx.swf.maxSourceSizeKBytes=1024
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.pptx.swf.maxSourceSizeKBytes=4096 content.transformer.complex.OpenOffice.Pdf2swf.extensions.pptx.swf.maxSourceSizeKBytes=4096
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xlam.swf.maxSourceSizeKBytes=1024 content.transformer.complex.OpenOffice.Pdf2swf.extensions.xlam.swf.maxSourceSizeKBytes=1024
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.ppt.swf.maxSourceSizeKBytes=6144 content.transformer.complex.OpenOffice.Pdf2swf.extensions.ppt.swf.maxSourceSizeKBytes=6144
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.docm.swf.maxSourceSizeKBytes=256 content.transformer.complex.OpenOffice.Pdf2swf.extensions.docm.swf.maxSourceSizeKBytes=256
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xltm.swf.maxSourceSizeKBytes=1024 content.transformer.complex.OpenOffice.Pdf2swf.extensions.xltm.swf.maxSourceSizeKBytes=1024
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.dotx.swf.maxSourceSizeKBytes=256 content.transformer.complex.OpenOffice.Pdf2swf.extensions.dotx.swf.maxSourceSizeKBytes=256
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.xlsb.swf.maxSourceSizeKBytes=1024 content.transformer.complex.OpenOffice.Pdf2swf.extensions.xlsb.swf.maxSourceSizeKBytes=1024
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.sldx.swf.maxSourceSizeKBytes=4096 content.transformer.complex.OpenOffice.Pdf2swf.extensions.sldx.swf.maxSourceSizeKBytes=4096
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.ppsm.swf.maxSourceSizeKBytes=4096 content.transformer.complex.OpenOffice.Pdf2swf.extensions.ppsm.swf.maxSourceSizeKBytes=4096
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.potm.swf.maxSourceSizeKBytes=4096 content.transformer.complex.OpenOffice.Pdf2swf.extensions.potm.swf.maxSourceSizeKBytes=4096
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.txt.swf.maxSourceSizeKBytes=5120 content.transformer.complex.OpenOffice.Pdf2swf.extensions.txt.swf.maxSourceSizeKBytes=5120
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.ppam.swf.maxSourceSizeKBytes=4096 content.transformer.complex.OpenOffice.Pdf2swf.extensions.ppam.swf.maxSourceSizeKBytes=4096
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.dotm.swf.maxSourceSizeKBytes=256 content.transformer.complex.OpenOffice.Pdf2swf.extensions.dotm.swf.maxSourceSizeKBytes=256
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.doc.swf.maxSourceSizeKBytes=1536 content.transformer.complex.OpenOffice.Pdf2swf.extensions.doc.swf.maxSourceSizeKBytes=1536
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.vsd.swf.maxSourceSizeKBytes=4096 content.transformer.complex.OpenOffice.Pdf2swf.extensions.vsd.swf.maxSourceSizeKBytes=4096
content.transformer.complex.OpenOffice.Pdf2swf.mimetypes.ppsx.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.extensions.csv.swf.supported=true
content.transformer.complex.Text.Pdf2swf.mimetypes.xml.swf.supported=true content.transformer.complex.Text.Pdf2swf.extensions.xml.swf.supported=true
content.transformer.complex.Text.Pdf2swf.maxSourceSizeKBytes=5120 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.extensions.*.xlsm.supported=false
content.transformer.JodConverter.mimetypes.*.pptm.supported=false content.transformer.JodConverter.extensions.*.pptm.supported=false
content.transformer.JodConverter.mimetypes.*.sldm.supported=false content.transformer.JodConverter.extensions.*.sldm.supported=false
content.transformer.JodConverter.mimetypes.*.xltx.supported=false content.transformer.JodConverter.extensions.*.xltx.supported=false
content.transformer.JodConverter.mimetypes.*.docx.supported=false content.transformer.JodConverter.extensions.*.docx.supported=false
content.transformer.JodConverter.mimetypes.*.potx.supported=false content.transformer.JodConverter.extensions.*.potx.supported=false
content.transformer.JodConverter.mimetypes.*.xlsx.supported=false content.transformer.JodConverter.extensions.*.xlsx.supported=false
content.transformer.JodConverter.mimetypes.*.pptx.supported=false content.transformer.JodConverter.extensions.*.pptx.supported=false
content.transformer.JodConverter.mimetypes.*.xlam.supported=false content.transformer.JodConverter.extensions.*.xlam.supported=false
content.transformer.JodConverter.mimetypes.*.docm.supported=false content.transformer.JodConverter.extensions.*.docm.supported=false
content.transformer.JodConverter.mimetypes.*.xltm.supported=false content.transformer.JodConverter.extensions.*.xltm.supported=false
content.transformer.JodConverter.mimetypes.*.dotx.supported=false content.transformer.JodConverter.extensions.*.dotx.supported=false
content.transformer.JodConverter.mimetypes.*.xlsb.supported=false content.transformer.JodConverter.extensions.*.xlsb.supported=false
content.transformer.JodConverter.mimetypes.*.sldx.supported=false content.transformer.JodConverter.extensions.*.sldx.supported=false
content.transformer.JodConverter.mimetypes.*.ppsm.supported=false content.transformer.JodConverter.extensions.*.ppsm.supported=false
content.transformer.JodConverter.mimetypes.*.txt.supported=false content.transformer.JodConverter.extensions.*.txt.supported=false
content.transformer.JodConverter.mimetypes.*.potm.supported=false content.transformer.JodConverter.extensions.*.potm.supported=false
content.transformer.JodConverter.mimetypes.*.ppam.supported=false content.transformer.JodConverter.extensions.*.ppam.supported=false
content.transformer.JodConverter.mimetypes.*.dotm.supported=false content.transformer.JodConverter.extensions.*.dotm.supported=false
content.transformer.JodConverter.mimetypes.*.ppsx.supported=false content.transformer.JodConverter.extensions.*.ppsx.supported=false
content.transformer.JodConverter.mimetypes.html.pdf.supported=false content.transformer.JodConverter.extensions.html.pdf.supported=false
content.transformer.JodConverter.mimetypes.xlsm.pdf.maxSourceSizeKBytes=1536 content.transformer.JodConverter.extensions.xlsm.pdf.maxSourceSizeKBytes=1536
content.transformer.JodConverter.mimetypes.pptm.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.pptm.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.mimetypes.xls.pdf.maxSourceSizeKBytes=10240 content.transformer.JodConverter.extensions.xls.pdf.maxSourceSizeKBytes=10240
content.transformer.JodConverter.mimetypes.sldm.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.sldm.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.mimetypes.xltx.pdf.maxSourceSizeKBytes=1536 content.transformer.JodConverter.extensions.xltx.pdf.maxSourceSizeKBytes=1536
content.transformer.JodConverter.mimetypes.potx.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.potx.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.mimetypes.docx.pdf.maxSourceSizeKBytes=768 content.transformer.JodConverter.extensions.docx.pdf.maxSourceSizeKBytes=768
content.transformer.JodConverter.mimetypes.xlsx.pdf.maxSourceSizeKBytes=1536 content.transformer.JodConverter.extensions.xlsx.pdf.maxSourceSizeKBytes=1536
content.transformer.JodConverter.mimetypes.pptx.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.pptx.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.mimetypes.xlam.pdf.maxSourceSizeKBytes=1536 content.transformer.JodConverter.extensions.xlam.pdf.maxSourceSizeKBytes=1536
content.transformer.JodConverter.mimetypes.ppt.pdf.maxSourceSizeKBytes=6144 content.transformer.JodConverter.extensions.ppt.pdf.maxSourceSizeKBytes=6144
content.transformer.JodConverter.mimetypes.docm.pdf.maxSourceSizeKBytes=768 content.transformer.JodConverter.extensions.docm.pdf.maxSourceSizeKBytes=768
content.transformer.JodConverter.mimetypes.xltm.pdf.maxSourceSizeKBytes=1536 content.transformer.JodConverter.extensions.xltm.pdf.maxSourceSizeKBytes=1536
content.transformer.JodConverter.mimetypes.dotx.pdf.maxSourceSizeKBytes=768 content.transformer.JodConverter.extensions.dotx.pdf.maxSourceSizeKBytes=768
content.transformer.JodConverter.mimetypes.xlsb.pdf.maxSourceSizeKBytes=1536 content.transformer.JodConverter.extensions.xlsb.pdf.maxSourceSizeKBytes=1536
content.transformer.JodConverter.mimetypes.sldx.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.sldx.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.mimetypes.ppsm.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.ppsm.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.mimetypes.potm.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.potm.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.mimetypes.txt.pdf.maxSourceSizeKBytes=5120 content.transformer.JodConverter.extensions.txt.pdf.maxSourceSizeKBytes=5120
content.transformer.JodConverter.mimetypes.ppam.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.ppam.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.mimetypes.dotm.pdf.maxSourceSizeKBytes=768 content.transformer.JodConverter.extensions.dotm.pdf.maxSourceSizeKBytes=768
content.transformer.JodConverter.mimetypes.doc.pdf.maxSourceSizeKBytes=10240 content.transformer.JodConverter.extensions.doc.pdf.maxSourceSizeKBytes=10240
content.transformer.JodConverter.mimetypes.vsd.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.vsd.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.mimetypes.ppsx.pdf.maxSourceSizeKBytes=4096 content.transformer.JodConverter.extensions.ppsx.pdf.maxSourceSizeKBytes=4096
content.transformer.JodConverter.Html2Pdf.mimetypes.html.pdf.supported=true content.transformer.JodConverter.Html2Pdf.extensions.html.pdf.supported=true
content.transformer.JodConverter.Html2Pdf.mimetypes.html.pdf.priority=5 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.extensions.xlsm.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.pptm.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.pptm.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.xls.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.xls.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.sldm.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.sldm.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.xltx.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.xltx.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.docx.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.docx.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.potx.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.potx.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.xlsx.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.xlsx.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.pptx.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.pptx.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.xlam.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.xlam.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.ppt.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.ppt.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.docm.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.docm.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.xltm.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.xltm.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.dotx.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.dotx.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.sldx.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.sldx.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.ppsm.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.ppsm.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.txt.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.txt.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.ppam.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.ppam.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.dotm.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.dotm.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.doc.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.doc.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.ppsx.txt.supported=false content.transformer.complex.JodConverter.PdfBox.extensions.ppsx.txt.supported=false
content.transformer.complex.JodConverter.PdfBox.mimetypes.xlsb.txt.maxSourceSizeKBytes=1024 content.transformer.complex.JodConverter.PdfBox.extensions.xlsb.txt.maxSourceSizeKBytes=1024
content.transformer.complex.JodConverter.PdfBox.mimetypes.potm.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.extensions.xlsm.swf.maxSourceSizeKBytes=1024
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.pptm.swf.maxSourceSizeKBytes=4096 content.transformer.complex.JodConverter.Pdf2swf.extensions.pptm.swf.maxSourceSizeKBytes=4096
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xls.swf.maxSourceSizeKBytes=1024 content.transformer.complex.JodConverter.Pdf2swf.extensions.xls.swf.maxSourceSizeKBytes=1024
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.sldm.swf.maxSourceSizeKBytes=4096 content.transformer.complex.JodConverter.Pdf2swf.extensions.sldm.swf.maxSourceSizeKBytes=4096
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xltx.swf.maxSourceSizeKBytes=1024 content.transformer.complex.JodConverter.Pdf2swf.extensions.xltx.swf.maxSourceSizeKBytes=1024
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.docx.swf.maxSourceSizeKBytes=256 content.transformer.complex.JodConverter.Pdf2swf.extensions.docx.swf.maxSourceSizeKBytes=256
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.potx.swf.maxSourceSizeKBytes=4096 content.transformer.complex.JodConverter.Pdf2swf.extensions.potx.swf.maxSourceSizeKBytes=4096
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xlsx.swf.maxSourceSizeKBytes=1024 content.transformer.complex.JodConverter.Pdf2swf.extensions.xlsx.swf.maxSourceSizeKBytes=1024
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.pptx.swf.maxSourceSizeKBytes=4096 content.transformer.complex.JodConverter.Pdf2swf.extensions.pptx.swf.maxSourceSizeKBytes=4096
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xlam.swf.maxSourceSizeKBytes=1024 content.transformer.complex.JodConverter.Pdf2swf.extensions.xlam.swf.maxSourceSizeKBytes=1024
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.ppt.swf.maxSourceSizeKBytes=6144 content.transformer.complex.JodConverter.Pdf2swf.extensions.ppt.swf.maxSourceSizeKBytes=6144
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.docm.swf.maxSourceSizeKBytes=256 content.transformer.complex.JodConverter.Pdf2swf.extensions.docm.swf.maxSourceSizeKBytes=256
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xltm.swf.maxSourceSizeKBytes=1024 content.transformer.complex.JodConverter.Pdf2swf.extensions.xltm.swf.maxSourceSizeKBytes=1024
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.dotx.swf.maxSourceSizeKBytes=256 content.transformer.complex.JodConverter.Pdf2swf.extensions.dotx.swf.maxSourceSizeKBytes=256
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.xlsb.swf.maxSourceSizeKBytes=1024 content.transformer.complex.JodConverter.Pdf2swf.extensions.xlsb.swf.maxSourceSizeKBytes=1024
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.sldx.swf.maxSourceSizeKBytes=4096 content.transformer.complex.JodConverter.Pdf2swf.extensions.sldx.swf.maxSourceSizeKBytes=4096
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.ppsm.swf.maxSourceSizeKBytes=4096 content.transformer.complex.JodConverter.Pdf2swf.extensions.ppsm.swf.maxSourceSizeKBytes=4096
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.potm.swf.maxSourceSizeKBytes=4096 content.transformer.complex.JodConverter.Pdf2swf.extensions.potm.swf.maxSourceSizeKBytes=4096
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.txt.swf.maxSourceSizeKBytes=5120 content.transformer.complex.JodConverter.Pdf2swf.extensions.txt.swf.maxSourceSizeKBytes=5120
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.ppam.swf.maxSourceSizeKBytes=4096 content.transformer.complex.JodConverter.Pdf2swf.extensions.ppam.swf.maxSourceSizeKBytes=4096
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.dotm.swf.maxSourceSizeKBytes=256 content.transformer.complex.JodConverter.Pdf2swf.extensions.dotm.swf.maxSourceSizeKBytes=256
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.doc.swf.maxSourceSizeKBytes=1536 content.transformer.complex.JodConverter.Pdf2swf.extensions.doc.swf.maxSourceSizeKBytes=1536
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.vsd.swf.maxSourceSizeKBytes=4096 content.transformer.complex.JodConverter.Pdf2swf.extensions.vsd.swf.maxSourceSizeKBytes=4096
content.transformer.complex.JodConverter.Pdf2swf.mimetypes.ppsx.swf.maxSourceSizeKBytes=4096 content.transformer.complex.JodConverter.Pdf2swf.extensions.ppsx.swf.maxSourceSizeKBytes=4096

View File

@@ -805,16 +805,15 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa
MimetypeMap.MIMETYPE_IMAGE_PNG.equals(targetMimetype) && MimetypeMap.MIMETYPE_IMAGE_PNG.equals(targetMimetype) &&
transformerDebug.getFileName(transformOptions, true, 0).contains("debugTransformers.txt")) transformerDebug.getFileName(transformOptions, true, 0).contains("debugTransformers.txt"))
{ {
Map<String, Set<String>> explicitTransforms = debugExplicitTransforms(); debugActiveTransformersByTransformer();
debugActiveTransformersByTransformer(explicitTransforms); debugActiveTransformersByMimetypes();
debugActiveTransformersByMimetypes(explicitTransforms);
} }
} }
/** /**
* Creates TransformerDebug that lists all the supported mimetype transformation for each transformer. * Creates TransformerDebug that lists all the supported mimetype transformation for each transformer.
*/ */
private void debugActiveTransformersByTransformer(Map<String, Set<String>> explicitTransforms) private void debugActiveTransformersByTransformer()
{ {
try try
{ {
@@ -837,20 +836,8 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa
{ {
long maxSourceSizeKBytes = transformer.getMaxSourceSizeKBytes( long maxSourceSizeKBytes = transformer.getMaxSourceSizeKBytes(
sourceMimetype, targetMimetype, options); 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<String> targetMimetypes = explicitTransforms.get(sourceMimetype);
explicit = (targetMimetypes == null || !targetMimetypes.contains(targetMimetype))
? null
: Boolean.FALSE;
}
transformerDebug.activeTransformer(++mimetypePairCount, transformer, transformerDebug.activeTransformer(++mimetypePairCount, transformer,
sourceMimetype, targetMimetype, maxSourceSizeKBytes, explicit, first); sourceMimetype, targetMimetype, maxSourceSizeKBytes, first);
first = false; first = false;
} }
} }
@@ -875,7 +862,7 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa
/** /**
* Creates TransformerDebug that lists all available transformers for each mimetype combination. * Creates TransformerDebug that lists all available transformers for each mimetype combination.
*/ */
private void debugActiveTransformersByMimetypes(Map<String, Set<String>> explicitTransforms) private void debugActiveTransformersByMimetypes()
{ {
try try
{ {
@@ -897,21 +884,8 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa
{ {
long maxSourceSizeKBytes = transformer.getMaxSourceSizeKBytes( long maxSourceSizeKBytes = transformer.getMaxSourceSizeKBytes(
sourceMimetype, targetMimetype, options); sourceMimetype, targetMimetype, options);
transformerDebug.activeTransformer(sourceMimetype, targetMimetype,
// Is this an explicit transform, ignored because there are explicit transforms transformerCount, transformer, maxSourceSizeKBytes, transformerCount++ == 0);
// or does not have explicit transforms.
Boolean explicit = transformer.isExplicitTransformation(sourceMimetype,
targetMimetype, options);
if (!explicit)
{
Set<String> targetMimetypes = explicitTransforms.get(sourceMimetype);
explicit = (targetMimetypes == null || !targetMimetypes.contains(targetMimetype))
? null
: Boolean.FALSE;
}
transformerDebug.activeTransformer(sourceMimetype, targetMimetype,
transformerCount, transformer, maxSourceSizeKBytes, explicit,
transformerCount++ == 0);
} }
} }
} }
@@ -927,43 +901,6 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa
transformerDebug.popMisc(); 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<String, Set<String>> debugExplicitTransforms()
{
Map<String, Set<String>> explicitTransforms = new HashMap<String, Set<String>>();
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<String> targetMimetypes = explicitTransforms.get(sourceMimetype);
if (targetMimetypes == null)
{
targetMimetypes = new HashSet<String>();
explicitTransforms.put(sourceMimetype, targetMimetypes);
}
targetMimetypes.add(targetMimetype);
break;
}
}
}
}
}
return explicitTransforms;
}
/** /**
* {@inheritDoc} * {@inheritDoc}

View File

@@ -298,7 +298,7 @@ public abstract class AbstractContentTransformerLimits extends ContentTransforme
{ {
String targetExt = getExtensionOrAny(target.getKey()); String targetExt = getExtensionOrAny(target.getKey());
TransformationOptionLimits limits = target.getValue(); 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); deprecatedLimitsSetter(mimetypeSuffix, limits);
} }

View File

@@ -237,7 +237,7 @@ public class ContentTransformerHelper implements BeanNameAware
String targetMimetype = transformation.getTargetMimetype(); String targetMimetype = transformation.getTargetMimetype();
String sourceExt = getExtensionOrAny(sourceMimetype); String sourceExt = getExtensionOrAny(sourceMimetype);
String targetExt = getExtensionOrAny(targetMimetype); 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 (value == null // same as: transformation instanceof ExplictTransformationDetails
? TransformerConfig.PRIORITY+"="+TransformerConfig.PRIORITY_EXPLICIT ? TransformerConfig.PRIORITY+"="+TransformerConfig.PRIORITY_EXPLICIT
: TransformerConfig.SUPPORTED+"="+value)); : TransformerConfig.SUPPORTED+"="+value));

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2005-2012 Alfresco Software Limited. * Copyright (C) 2005-2013 Alfresco Software Limited.
* *
* This file is part of Alfresco * 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. * 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."; static final String MIMETYPES_SEPARATOR = ".mimetypes.";
/** /**
@@ -104,6 +110,16 @@ public interface TransformerConfig
*/ */
static final String INITIAL_COUNT = ".count"; 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 * 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. * 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; 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 * Suffixes to property names used to define transformation limits
*/ */
static final Collection<String> LIMIT_SUFFIXES = Arrays.asList(new String [] { static final Collection<String> LIMIT_SUFFIXES = Arrays.asList(new String [] {
'.'+TransformationOptionLimits.OPT_MAX_SOURCE_SIZE_K_BYTES, MAX_SOURCE_SIZE_K_BYTES,
'.'+TransformationOptionLimits.OPT_TIMEOUT_MS, TIMEOUT_MS,
'.'+TransformationOptionLimits.OPT_MAX_PAGES, MAX_PAGES,
'.'+TransformationOptionLimits.OPT_READ_LIMIT_K_BYTES, READ_LIMIT_K_BYTES,
'.'+TransformationOptionLimits.OPT_READ_LIMIT_TIME_MS, READ_LIMIT_TIME_MS,
'.'+TransformationOptionLimits.OPT_PAGE_LIMIT PAGE_LIMIT
}); });
/** /**

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2005-2012 Alfresco Software Limited. * Copyright (C) 2005-2013 Alfresco Software Limited.
* *
* This file is part of Alfresco * This file is part of Alfresco
* *
@@ -34,9 +34,6 @@ import org.springframework.extensions.surf.util.AbstractLifecycleBean;
*/ */
public class TransformerConfigImpl extends AbstractLifecycleBean implements TransformerConfig public class TransformerConfigImpl extends AbstractLifecycleBean implements TransformerConfig
{ {
/** The logger. */
private static Log logger = LogFactory.getLog(TransformerConfigImpl.class);
private MimetypeService mimetypeService; private MimetypeService mimetypeService;
// Holds statistics about each transformer, sourceMimeType and targetMimetype combination. // 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); statistics= new TransformerConfigStatistics(this, mimetypeService);
limits = new TransformerConfigLimits(getSubsystem(), mimetypeService); limits = new TransformerConfigLimits(getSubsystem(), mimetypeService);
supported = new TransformerConfigSupported(getSubsystem(), mimetypeService); supported = new TransformerConfigSupported(getSubsystem(), mimetypeService);
priorities = new TransformerConfigProperty(getSubsystem(), mimetypeService, PRIORITY); priorities = new TransformerConfigProperty(getSubsystem(), mimetypeService, PRIORITY, Integer.toString(PRIORITY_DEFAULT));
thresholdCounts = new TransformerConfigProperty(getSubsystem(), mimetypeService, THRESHOLD_COUNT); thresholdCounts = new TransformerConfigProperty(getSubsystem(), mimetypeService, THRESHOLD_COUNT, "3");
errorTimes = new TransformerConfigProperty(getSubsystem(), mimetypeService, ERROR_TIME); errorTimes = new TransformerConfigProperty(getSubsystem(), mimetypeService, ERROR_TIME, "120000");
initialAverageTimes = new TransformerConfigProperty(getSubsystem(), mimetypeService, INITIAL_TIME); initialAverageTimes = new TransformerConfigProperty(getSubsystem(), mimetypeService, INITIAL_TIME, "0");
initialCounts = new TransformerConfigProperty(getSubsystem(), mimetypeService, INITIAL_COUNT); initialCounts = new TransformerConfigProperty(getSubsystem(), mimetypeService, INITIAL_COUNT, "100000");
} }
/** /**

View File

@@ -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.CONTENT;
import static org.alfresco.repo.content.transform.TransformerConfig.DEFAULT_TRANSFORMER; 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.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.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@@ -59,91 +60,73 @@ public class TransformerConfigLimits extends TransformerPropertyNameExtractor
limits = new HashMap<String, DoubleMap<String, String, TransformationOptionLimits>>(); limits = new HashMap<String, DoubleMap<String, String, TransformationOptionLimits>>();
// Gets all the transformer, source and target combinations in properties that define limits. // Gets all the transformer, source and target combinations in properties that define limits.
Set<Triple<String, String, String>> transformerNamesAndExt = Collection<TransformerSourceTargetValue> transformerNamesAndExt =
getTransformerNamesAndExt(MIMETYPES_SEPARATOR, LIMIT_SUFFIXES, true, subsystem, mimetypeService); getTransformerSourceTargetValues(LIMIT_SUFFIXES, true, subsystem, mimetypeService);
// Add the system wide default just in case it is not included, as we always need this one // Add the system wide default just in case it is not included, as we always need this one
transformerNamesAndExt.add(new Triple<String,String,String>(DEFAULT_TRANSFORMER, ANY, ANY)); TransformationOptionLimits options = getOrCreateTransformerOptionLimits(DEFAULT_TRANSFORMER, ANY, ANY);
// Populate the transformer limits // Populate the transformer limits
for (Triple<String, String, String> triple: transformerNamesAndExt) for (TransformerSourceTargetValue property: transformerNamesAndExt)
{ {
String transformerName = triple.getFirst(); options = getOrCreateTransformerOptionLimits(property.transformerName,
String sourceExt = triple.getSecond(); property.sourceMimetype, property.targetMimetype);
String targetExt = triple.getThird(); setTransformationOptionsFromProperties(options, property.transformerName, property.sourceExt, property.targetExt,
String sourceMimetype = ANY.equals(sourceExt) ? ANY : mimetypeService.getMimetype(sourceExt); property.value, property.suffix);
String targetMimetype = ANY.equals(targetExt) ? ANY : mimetypeService.getMimetype(targetExt);
TransformationOptionLimits limits = newTransformationOptionLimits(transformerName, sourceExt, targetExt, subsystem);
DoubleMap<String, String, TransformationOptionLimits> mimetypeLimits =
this.limits.get(transformerName);
if (mimetypeLimits == null)
{
mimetypeLimits = new DoubleMap<String, String, TransformationOptionLimits>(ANY, ANY);
this.limits.put(transformerName, mimetypeLimits);
}
mimetypeLimits.put(sourceMimetype, targetMimetype, limits);
} }
} }
/**
* 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<String, String, TransformationOptionLimits> mimetypeLimits;
mimetypeLimits = limits.get(transformerName);
if (mimetypeLimits == null)
{
mimetypeLimits = new DoubleMap<String, String, TransformationOptionLimits>(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;
}
/** private void setTransformationOptionsFromProperties(TransformationOptionLimits options,
* Returns a TransformationOptionLimits object using property values. String transformerName, String sourceExt, String targetExt, String value, String suffix)
* @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)
{ {
TransformationOptionLimits limits = new TransformationOptionLimits(); long l = Long.parseLong(value);
if (suffix == TransformerConfig.MAX_SOURCE_SIZE_K_BYTES)
// The overall values can be defined in two ways
if (ANY.equals(sourceExt) && ANY.equals(targetExt))
{ {
setTransformationOptionsFromProperties(limits, transformerName, null, null, subsystem); options.setMaxSourceSizeKBytes(l);
} }
setTransformationOptionsFromProperties(limits, transformerName, sourceExt, targetExt, subsystem); else if (suffix == TransformerConfig.TIMEOUT_MS)
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)
{ {
String value = subsystem.getProperty(propertyNameRoot+suffix); options.setTimeoutMs(l);
if (value != null) }
{ else if (suffix == TransformerConfig.MAX_PAGES)
long l = Long.parseLong(value); {
switch (i) options.setMaxPages((int)l);
{ }
case 0: else if (suffix == TransformerConfig.READ_LIMIT_K_BYTES)
limits.setMaxSourceSizeKBytes(l); {
break; options.setReadLimitKBytes(l);
case 1: }
limits.setTimeoutMs(l); else if (suffix == TransformerConfig.READ_LIMIT_TIME_MS)
break; {
case 2: options.setReadLimitTimeMs(l);
limits.setMaxPages((int)l); }
break; else // if (suffix == TransformerConfig.PAGE_LIMIT)
case 3: {
limits.setReadLimitKBytes(l); options.setPageLimit((int)l);
break;
case 4:
limits.setReadLimitTimeMs(l);
break;
case 5:
limits.setPageLimit((int)l);
break;
}
}
i++;
} }
} }

View File

@@ -19,18 +19,15 @@
package org.alfresco.repo.content.transform; package org.alfresco.repo.content.transform;
import static org.alfresco.repo.content.transform.TransformerConfig.ANY; 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.DEFAULT_TRANSFORMER;
import static org.alfresco.repo.content.transform.TransformerConfig.MIMETYPES_SEPARATOR;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set;
import org.alfresco.repo.management.subsystems.ChildApplicationContextFactory; import org.alfresco.repo.management.subsystems.ChildApplicationContextFactory;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.util.Triple;
/** /**
* Provides access to single transformer configuration property depending on the * Provides access to single transformer configuration property depending on the
@@ -43,78 +40,45 @@ public class TransformerConfigProperty extends TransformerPropertyNameExtractor
private Map<String, DoubleMap<String, String, String>> values; private Map<String, DoubleMap<String, String, String>> values;
public TransformerConfigProperty(ChildApplicationContextFactory subsystem, 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. * 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<String, DoubleMap<String, String, String>>(); values = new HashMap<String, DoubleMap<String, String, String>>();
// Gets all the transformer, source and target combinations in properties that define // Gets all the transformer, source and target combinations in properties that define
// this value. // this value.
Set<Triple<String, String, String>> transformerNamesAndMimetypes = Collection<TransformerSourceTargetValue> transformerNamesAndMimetypes =
getTransformerNamesAndExt(MIMETYPES_SEPARATOR, Collections.singletonList(propertySuffix), true, subsystem, mimetypeService); 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 // Add the system wide default if it does not exist, as we always need this one
transformerNamesAndMimetypes.add(new Triple<String,String,String>(DEFAULT_TRANSFORMER, ANY, ANY)); TransformerSourceTargetValue transformerSourceTargetValue =
new TransformerSourceTargetValue(DEFAULT_TRANSFORMER, ANY, ANY, defaultValue, suffix, mimetypeService);
if (transformerNamesAndMimetypes.contains(transformerSourceTargetValue.key()))
{
transformerNamesAndMimetypes.add(transformerSourceTargetValue);
}
// Populate the transformer values // Populate the transformer values
for (Triple<String, String, String> triple: transformerNamesAndMimetypes) for (TransformerSourceTargetValue property: transformerNamesAndMimetypes)
{ {
String transformerName = triple.getFirst(); DoubleMap<String, String, String> mimetypeLimits = this.values.get(property.transformerName);
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<String, String, String> mimetypeLimits = this.values.get(transformerName);
if (mimetypeLimits == null) if (mimetypeLimits == null)
{ {
mimetypeLimits = new DoubleMap<String, String, String>(ANY, ANY); mimetypeLimits = new DoubleMap<String, String, String>(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, private String getString(ContentTransformer transformer, String sourceMimetype,
String targetMimetype) String targetMimetype)
{ {

View File

@@ -19,21 +19,16 @@
package org.alfresco.repo.content.transform; package org.alfresco.repo.content.transform;
import static org.alfresco.repo.content.transform.TransformerConfig.ANY; 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 static org.alfresco.repo.content.transform.TransformerConfig.SUPPORTED;
import java.util.ArrayList; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import org.alfresco.repo.management.subsystems.ChildApplicationContextFactory; import org.alfresco.repo.management.subsystems.ChildApplicationContextFactory;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.TransformationOptions; import org.alfresco.service.cmr.repository.TransformationOptions;
import org.alfresco.util.Triple;
/** /**
* Provides access to the lists of supported and unsupported mimetype transformations * 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 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) // Holds configured (entries only exist if configured rather than for all possible combinations)
// of supported and unsupported mimetypes transformations for a transformer. // of supported and unsupported mimetypes transformations for a transformer.
// SourceMimetype and targetMimetype may be 'ANY' values to act as wild cards. // SourceMimetype and targetMimetype may be 'ANY' values to act as wild cards.
@@ -58,69 +48,6 @@ public class TransformerConfigSupported extends TransformerPropertyNameExtractor
setSupported(subsystem, mimetypeService); 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 <code>configMimetype</code> from the given
* <code>mimetypeService</code>.
* <p>
* 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.
* <p>
* 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<String> getMatchingMimetypes(
String configMimetype, MimetypeService mimetypeService)
{
if (configMimetype == null)
{
return null;
}
List<String> matchingMimetypes = new ArrayList<String>(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. * Sets the supported/unsupported mimetype transformations created from system properties.
*/ */
@@ -129,63 +56,24 @@ public class TransformerConfigSupported extends TransformerPropertyNameExtractor
supported = new HashMap<String, SupportedAndUnsupportedTransformations>(); supported = new HashMap<String, SupportedAndUnsupportedTransformations>();
// Gets all the supported and unsupported transformer, source and target combinations // Gets all the supported and unsupported transformer, source and target combinations
Set<Triple<String, String, String>> transformerNamesAndMimetypes = Collection<TransformerSourceTargetValue> transformerNamesAndMimetypes =
getTransformerNamesAndExt(MIMETYPES_SEPARATOR, Collections.singletonList(SUPPORTED), false, subsystem, mimetypeService); getTransformerSourceTargetValues(Collections.singletonList(SUPPORTED),
false, subsystem, mimetypeService);
// Populate the transformer values // Populate the transformer values
for (Triple<String, String, String> triple: transformerNamesAndMimetypes) for (TransformerSourceTargetValue property: transformerNamesAndMimetypes)
{ {
String transformerName = triple.getFirst(); SupportedAndUnsupportedTransformations supportedBytransformer = this.supported.get(property.transformerName);
String sourceExt = triple.getSecond();
String targetExt = triple.getThird();
SupportedAndUnsupportedTransformations supportedBytransformer = this.supported.get(transformerName);
if (supportedBytransformer == null) if (supportedBytransformer == null)
{ {
supportedBytransformer = new SupportedAndUnsupportedTransformations(); supportedBytransformer = new SupportedAndUnsupportedTransformations();
this.supported.put(transformerName, supportedBytransformer); this.supported.put(property.transformerName, supportedBytransformer);
}
boolean supported = getValueFromProperties(transformerName, sourceExt, targetExt, subsystem, SUPPORTED);
List<String> sourceMimetypes = new ArrayList<String>(1);
List<String> targetMimetypes = new ArrayList<String>(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);
}
} }
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)}. * See {@link TransformerConfig#isSupportedTransformation(ContentTransformer, String, String, TransformationOptions)}.
*/ */

View File

@@ -377,8 +377,7 @@ public class TransformerDebug
long maxSourceSizeKBytes = trans.getMaxSourceSizeKBytes(frame.sourceMimetype, frame.targetMimetype, frame.options); long maxSourceSizeKBytes = trans.getMaxSourceSizeKBytes(frame.sourceMimetype, frame.targetMimetype, frame.options);
String size = maxSourceSizeKBytes > 0 ? "< "+fileSize(maxSourceSizeKBytes*1024) : ""; String size = maxSourceSizeKBytes > 0 ? "< "+fileSize(maxSourceSizeKBytes*1024) : "";
int padSize = 10 - size.length(); int padSize = 10 - size.length();
String priority = Integer.toString(transformerConfig.getPriority(trans, frame.sourceMimetype, frame.targetMimetype)); String priority = gePriority(trans, frame.sourceMimetype, frame.targetMimetype);
priority = spaces(2-priority.length())+priority;
log((c == 'a' ? "**" : " ") + (c++) + ") " + priority + ' ' + name + spaces(padName) + log((c == 'a' ? "**" : " ") + (c++) + ") " + priority + ' ' + name + spaces(padName) +
size + spaces(padSize) + ms(trans.getTransformationTime(frame.sourceMimetype, frame.targetMimetype))); 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) public void inactiveTransformer(ContentTransformer transformer)
{ {
log(getName(transformer)+' '+ms(transformer.getTransformationTime(null, null))+" INACTIVE"); log(getName(transformer)+' '+ms(transformer.getTransformationTime(null, null))+" INACTIVE");
} }
public void activeTransformer(int mimetypePairCount, ContentTransformer transformer, String sourceMimetype, 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) if (firstMimetypePair)
{ {
log(getName(transformer)+' '+ms(transformer.getTransformationTime(sourceMimetype, targetMimetype))); log(getName(transformer)+' '+ms(transformer.getTransformationTime(sourceMimetype, targetMimetype)));
} }
String i = Integer.toString(mimetypePairCount); String i = Integer.toString(mimetypePairCount);
String priority = gePriority(transformer, sourceMimetype, targetMimetype);
log(spaces(5-i.length())+mimetypePairCount+") "+getMimetypeExt(sourceMimetype)+getMimetypeExt(targetMimetype)+ log(spaces(5-i.length())+mimetypePairCount+") "+getMimetypeExt(sourceMimetype)+getMimetypeExt(targetMimetype)+
priority +
' '+fileSize((maxSourceSizeKBytes > 0) ? maxSourceSizeKBytes*1024 : maxSourceSizeKBytes)+ ' '+fileSize((maxSourceSizeKBytes > 0) ? maxSourceSizeKBytes*1024 : maxSourceSizeKBytes)+
(maxSourceSizeKBytes == 0 || (explicit != null && !explicit) ? " disabled" : "")+ (maxSourceSizeKBytes == 0 ? " disabled" : ""));
(explicit == null ? "" : explicit ? " EXPLICIT" : " not explicit"));
} }
public void activeTransformer(String sourceMimetype, String targetMimetype, public void activeTransformer(String sourceMimetype, String targetMimetype,
int transformerCount, ContentTransformer transformer, long maxSourceSizeKBytes, int transformerCount, ContentTransformer transformer, long maxSourceSizeKBytes,
Boolean explicit, boolean firstTransformer) boolean firstTransformer)
{ {
String mimetypes = firstTransformer String mimetypes = firstTransformer
? getMimetypeExt(sourceMimetype)+getMimetypeExt(targetMimetype) ? getMimetypeExt(sourceMimetype)+getMimetypeExt(targetMimetype)
: spaces(10); : spaces(10);
char c = (char)('a'+transformerCount); char c = (char)('a'+transformerCount);
String priority = gePriority(transformer, sourceMimetype, targetMimetype);
log(mimetypes+ 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)+ ' '+fileSize((maxSourceSizeKBytes > 0) ? maxSourceSizeKBytes*1024 : maxSourceSizeKBytes)+
(maxSourceSizeKBytes == 0 || (explicit != null && !explicit) ? " disabled" : "")+ (maxSourceSizeKBytes == 0 ? " disabled" : ""));
(explicit == null ? "" : explicit ? " EXPLICIT" : " not explicit"));
} }
private int getLongestTransformerNameLength(List<ContentTransformer> transformers, private int getLongestTransformerNameLength(List<ContentTransformer> transformers,

View File

@@ -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.CONTENT;
import static org.alfresco.repo.content.transform.TransformerConfig.PREFIX; import static org.alfresco.repo.content.transform.TransformerConfig.PREFIX;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashMap;
import java.util.Set; 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.repo.management.subsystems.ChildApplicationContextFactory;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
@@ -37,11 +41,18 @@ import org.alfresco.util.Triple;
*/ */
public abstract class TransformerPropertyNameExtractor 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 * Returns a set of transformer name, source extension, target extension and value
* from property names that defined transformation limits. * from property names that defined transformation limits. When the separator indicates
* @param separator after the transformer name and the source mimetype extension. * it is followed by a regular expression that matches multiple mimetypes, more than one
* Must start and end in a '.'. * 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. * @param suffixes possible endings to the property names after the target mimetype extension.
* Must start with a '.' if there is a suffix. * Must start with a '.' if there is a suffix.
* @param includeSummary if true will also look for property names without the separator, * @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 subsystem that provides the properties
* @param mimetypeService * @param mimetypeService
*/ */
protected Set<Triple<String,String,String>> getTransformerNamesAndExt(String separator, Collection<String> suffixes, boolean includeSummary, protected Collection<TransformerSourceTargetValue> getTransformerSourceTargetValues(Collection<String> suffixes,
ChildApplicationContextFactory subsystem, MimetypeService mimetypeService) boolean includeSummary, ChildApplicationContextFactory subsystem, MimetypeService mimetypeService)
{ {
Set<Triple<String,String,String>> transformerNamesAndExtensions = Map<Triple<String, String, String>, TransformerSourceTargetValue> TransformerSourceTargetValues =
new HashSet<Triple<String,String,String>>(); new HashMap<Triple<String, String, String>, TransformerSourceTargetValue>();
for (String propertyName: subsystem.getPropertyNames()) for (String propertyName: subsystem.getPropertyNames())
{ {
if (propertyName.startsWith(PREFIX)) if (propertyName.startsWith(PREFIX))
{ {
suffixesLoop:
for (String suffix: suffixes) for (String suffix: suffixes)
{ {
if (propertyName.endsWith(suffix)) if (propertyName.endsWith(suffix))
{ {
String value = subsystem.getProperty(propertyName);
String name = propertyName.substring(CONTENT.length(), propertyName.length()-suffix.length()); String name = propertyName.substring(CONTENT.length(), propertyName.length()-suffix.length());
int i = name.lastIndexOf(separator); boolean separatorMatch = false;
if (i != -1) for (String separator: SEPARATORS)
{ {
String[] ext = name.substring(i+separator.length()).split("\\."); int i = name.lastIndexOf(separator);
if (ext.length == 2) if (i != -1)
{ {
name = name.substring(0, i); separatorMatch = true;
transformerNamesAndExtensions.add( String extensions = name.substring(i+separator.length());
new Triple<String,String,String>(name, ext[0], ext[1])); String[] ext = splitExt(extensions);
break; 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<String> sourceMimetypes = getMatchingMimetypes(ext[0], mimetypeService);
List<String> 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<String,String,String>(name, ANY, ANY)); addTransformerSourceTargetValue(TransformerSourceTargetValues, false, name, ANY, ANY,
break; value, suffix, mimetypeService);
break suffixesLoop;
} }
} }
} }
} }
} }
return transformerNamesAndExtensions; return TransformerSourceTargetValues.values();
} }
}
/**
* 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<Triple<String, String, String>, 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<String, String, String> 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 <code>configMimetype</code> from the given
* <code>mimetypeService</code>.
* <p>
* 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.
* <p>
* 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<String> getMatchingMimetypes(
String configMimetype, MimetypeService mimetypeService)
{
if (configMimetype == null)
{
return null;
}
List<String> matchingMimetypes = new ArrayList<String>(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<String, String, String> key()
{
return new Triple<String, String, String>(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;
}
}