();
- properties.put(ContentModel.PROP_NAME, filename);
- img = nodeService.createNode(
- imgFolder,
- ContentModel.ASSOC_CONTAINS,
- QName.createQName(filename),
- ContentModel.TYPE_CONTENT,
- properties
- ).getChildRef();
- if (logger.isDebugEnabled())
- {
- logger.debug("Image node created: " + img);
- }
- }
-
- // TODO Once composite content is properly supported,
- // at this point we'll associate the new image with
- // the rendered HTML node so the dependency is tracked.
-
- // Put the image into the node
- ContentWriter writer = contentService.getWriter(
- img, ContentModel.PROP_CONTENT, true
- );
- writer.setMimetype(contentType);
- writer.putContent(imageSource);
- if (logger.isDebugEnabled())
- {
- logger.debug("Image content written into " + img);
- }
-
- // All done
- return img;
- }
-
- /**
- * Builds a Tika-compatible SAX content handler, which will
- * be used to generate+capture the XHTML
- */
- private ContentHandler buildContentHandler(Writer output, RenderingContext context)
- {
- // Create the main transformer
- SAXTransformerFactory factory = (SAXTransformerFactory)
- SAXTransformerFactory.newInstance();
- TransformerHandler handler;
-
- try {
- handler = factory.newTransformerHandler();
- } catch (TransformerConfigurationException e) {
- throw new RenditionServiceException("SAX Processing isn't available - " + e);
- }
-
- handler.getTransformer().setOutputProperty(OutputKeys.INDENT, "yes");
- handler.setResult(new StreamResult(output));
- handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "xml");
-
- // Change the image links as they go past
- String dirName = null, imgPrefix = null;
- if(context.getParamWithDefault(PARAM_IMAGES_SAME_FOLDER, false))
- {
- imgPrefix = getImagesPrefixName(context);
- }
- else
- {
- dirName = getImagesDirectoryName(context);
- }
- ContentHandler contentHandler = new TikaImageRewritingContentHandler(
- handler, dirName, imgPrefix
- );
-
- // If required, wrap it to only return the body
- boolean bodyOnly = context.getParamWithDefault(PARAM_BODY_CONTENTS_ONLY, false);
- if(bodyOnly) {
- contentHandler = new BodyContentHandler(contentHandler);
- }
-
- // All done
- return contentHandler;
- }
-
- /**
- * Asks Tika to translate the contents into HTML
- */
- private void generateHTML(Parser p, RenderingContext context)
- {
- ContentReader contentReader = context.makeContentReader();
-
- // Setup things to parse with
- StringWriter sw = new StringWriter();
- ContentHandler handler = buildContentHandler(sw, context);
-
- // Tell Tika what we're dealing with
- Metadata metadata = new Metadata();
- metadata.set(
- Metadata.CONTENT_TYPE,
- contentReader.getMimetype()
- );
- metadata.set(
- Metadata.RESOURCE_NAME_KEY,
- nodeService.getProperty(
- context.getSourceNode(),
- ContentModel.PROP_NAME
- ).toString()
- );
-
- // Our parse context needs to extract images
- ParseContext parseContext = new ParseContext();
- parseContext.set(Parser.class, new TikaImageExtractingParser(context));
-
- // Parse
- try {
- p.parse(
- contentReader.getContentInputStream(),
- handler, metadata, parseContext
- );
- } catch(Exception e) {
- throw new RenditionServiceException("Tika HTML Conversion Failed", e);
- }
-
- // As a string
- String html = sw.toString();
-
- // If we're doing body-only, remove all the html namespaces
- // that will otherwise clutter up the document
- boolean bodyOnly = context.getParamWithDefault(PARAM_BODY_CONTENTS_ONLY, false);
- if(bodyOnly) {
- html = html.replaceAll("<\\?xml.*?\\?>", "");
- html = html.replaceAll(" types;
-
- private RenderingContext renderingContext;
- private NodeRef imgFolder = null;
- private int count = 0;
-
- private TikaImageExtractingParser(RenderingContext renderingContext) {
- this.renderingContext = renderingContext;
-
- // Our expected types
- types = new HashSet();
- types.add(MediaType.image("bmp"));
- types.add(MediaType.image("gif"));
- types.add(MediaType.image("jpg"));
- types.add(MediaType.image("jpeg"));
- types.add(MediaType.image("png"));
- types.add(MediaType.image("tiff"));
-
- // Are images going in the same place as the HTML?
- if( renderingContext.getParamWithDefault(PARAM_IMAGES_SAME_FOLDER, false) )
- {
- RenditionLocation location = resolveRenditionLocation(
- renderingContext.getSourceNode(), renderingContext.getDefinition(),
- renderingContext.getDestinationNode()
- );
- imgFolder = location.getParentRef();
- if (logger.isDebugEnabled())
- {
- logger.debug("Using imgFolder: " + imgFolder);
- }
- }
- }
-
- @Override
- public Set getSupportedTypes(ParseContext context) {
- return types;
- }
-
- @Override
- public void parse(InputStream stream, ContentHandler handler,
- Metadata metadata, ParseContext context) throws IOException,
- SAXException, TikaException {
- // Is it a supported image?
- String filename = metadata.get(Metadata.RESOURCE_NAME_KEY);
- String type = metadata.get(Metadata.CONTENT_TYPE);
- boolean accept = false;
-
- if(type != null) {
- for(MediaType mt : types) {
- if(mt.toString().equals(type)) {
- accept = true;
- }
- }
- }
- if(filename != null) {
- for(MediaType mt : types) {
- String ext = "." + mt.getSubtype();
- if(filename.endsWith(ext)) {
- accept = true;
- }
- }
- }
-
- if(!accept)
- return;
-
- handleImage(stream, filename, type);
- }
-
- private void handleImage(InputStream stream, String filename, String type) {
- count++;
-
- // Do we already have the folder? If not, create it
- if(imgFolder == null) {
- imgFolder = createImagesDirectory(renderingContext);
- }
-
- // Give it a sensible name if needed
- if(filename == null) {
- filename = "image-" + count + ".";
- filename += type.substring(type.indexOf('/')+1);
- }
-
- // Prefix the filename if needed
- filename = getImagesPrefixName(renderingContext) + filename;
-
- // Save the image
- createEmbeddedImage(imgFolder, (count==1), filename, type, stream, renderingContext);
- }
- }
-
- /**
- * A content handler that re-writes image src attributes,
- * and passes everything else on to the real one.
- */
- private class TikaImageRewritingContentHandler extends ContentHandlerDecorator {
- private String imageFolder;
- private String imagePrefix;
-
- private TikaImageRewritingContentHandler(ContentHandler handler, String imageFolder, String imagePrefix) {
- super(handler);
- this.imageFolder = imageFolder;
- this.imagePrefix = imagePrefix;
- }
-
- @Override
- public void startElement(String uri, String localName, String qName,
- Attributes origAttrs) throws SAXException {
- // If we have an image tag, re-write the src attribute
- // if required
- if("img".equals(localName)) {
- AttributesImpl attrs;
- if(origAttrs instanceof AttributesImpl) {
- attrs = (AttributesImpl)origAttrs;
- } else {
- attrs = new AttributesImpl(origAttrs);
- }
-
- for(int i=0; i
-
-
-
-
-
-
diff --git a/repository/src/test/java/org/alfresco/AppContext02TestSuite.java b/repository/src/test/java/org/alfresco/AppContext02TestSuite.java
index ffcb4604c9..50ad9eb7da 100644
--- a/repository/src/test/java/org/alfresco/AppContext02TestSuite.java
+++ b/repository/src/test/java/org/alfresco/AppContext02TestSuite.java
@@ -2,7 +2,7 @@
* #%L
* Alfresco Repository
* %%
- * Copyright (C) 2005 - 2017 Alfresco Software Limited
+ * Copyright (C) 2005 - 2021 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -39,7 +39,7 @@ import org.junit.runners.Suite;
@RunWith(Categories.class)
@Categories.ExcludeCategory({DBTests.class, NonBuildTests.class})
@Suite.SuiteClasses({
-
+
// there is a test that runs for 184s and another one that runs for 40s
org.alfresco.repo.attributes.AttributeServiceTest.class,
@@ -66,7 +66,9 @@ import org.junit.runners.Suite;
org.alfresco.repo.content.RoutingContentStoreTest.class,
org.alfresco.encryption.EncryptionTests.class,
- org.alfresco.encryption.KeyStoreTests.class
+ org.alfresco.encryption.KeyStoreTests.class,
+
+ org.alfresco.repo.content.MimetypeMapContentTest.class
// TODO REPO-2791 org.alfresco.repo.content.routing.StoreSelectorAspectContentStoreTest.class,
})
diff --git a/repository/src/test/java/org/alfresco/AppContext04TestSuite.java b/repository/src/test/java/org/alfresco/AppContext04TestSuite.java
index 45676ea4b1..20695c33ec 100644
--- a/repository/src/test/java/org/alfresco/AppContext04TestSuite.java
+++ b/repository/src/test/java/org/alfresco/AppContext04TestSuite.java
@@ -56,7 +56,6 @@ import org.junit.runners.Suite;
// This test opens, closes and again opens the alfresco application context.
org.alfresco.repo.dictionary.CustomModelRepoRestartTest.class,
- org.alfresco.repo.rendition.executer.HTMLRenderingEngineTest.class,
org.alfresco.repo.rendition.executer.XSLTFunctionsTest.class,
org.alfresco.repo.rendition.executer.XSLTRenderingEngineTest.class,
org.alfresco.repo.replication.ReplicationServiceIntegrationTest.class,
diff --git a/repository/src/test/java/org/alfresco/repo/content/MimetypeMapContentTest.java b/repository/src/test/java/org/alfresco/repo/content/MimetypeMapContentTest.java
index 7cd71846fd..31140447f9 100644
--- a/repository/src/test/java/org/alfresco/repo/content/MimetypeMapContentTest.java
+++ b/repository/src/test/java/org/alfresco/repo/content/MimetypeMapContentTest.java
@@ -2,7 +2,7 @@
* #%L
* Alfresco Repository
* %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
+ * Copyright (C) 2005 - 2021 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -36,8 +36,7 @@ import org.alfresco.repo.content.filestore.FileContentReader;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.test_category.OwnJVMTestsCategory;
-import org.alfresco.util.DataModelTestApplicationContextHelper;
-import org.alfresco.util.testing.category.NeverRunsTests;
+import org.alfresco.util.ApplicationContextHelper;
import org.apache.poi.util.IOUtils;
import org.junit.experimental.categories.Category;
import org.springframework.context.ApplicationContext;
@@ -48,11 +47,11 @@ import org.springframework.context.ApplicationContext;
* @see org.alfresco.repo.content.MimetypeMap
* @see org.alfresco.repo.content.MimetypeMapTest
*/
-@Category({OwnJVMTestsCategory.class, NeverRunsTests.class})
+@Category({OwnJVMTestsCategory.class})
public class MimetypeMapContentTest extends TestCase
{
- private static ApplicationContext ctx = DataModelTestApplicationContextHelper.getApplicationContext();
-
+ private static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
+
private MimetypeService mimetypeService;
@Override
@@ -61,6 +60,18 @@ public class MimetypeMapContentTest extends TestCase
mimetypeService = (MimetypeService)ctx.getBean("mimetypeService");
}
+ public void testGuessPdfMimetype() throws Exception
+ {
+ assertEquals(
+ "application/pdf",
+ mimetypeService.guessMimetype("something.doc", openQuickTestFile("quick.pdf"))
+ );
+ assertEquals(
+ "application/pdf",
+ mimetypeService.guessMimetype(null, openQuickTestFile("quick.pdf"))
+ );
+ }
+
public void testGuessMimetypeForFile() throws Exception
{
// Correct ones
@@ -78,11 +89,7 @@ public class MimetypeMapContentTest extends TestCase
"application/msword",
mimetypeService.guessMimetype("something.pdf", openQuickTestFile("quick.doc"))
);
- assertEquals(
- "application/pdf",
- mimetypeService.guessMimetype("something.doc", openQuickTestFile("quick.pdf"))
- );
-
+
// Ones where we use a different mimetype to the canonical one
assertEquals(
"image/bmp", // Officially image/x-ms-bmp
@@ -94,13 +101,15 @@ public class MimetypeMapContentTest extends TestCase
"application/dita+xml", // Full version: application/dita+xml;format=concept
mimetypeService.guessMimetype("concept.dita", openQuickTestFile("quickConcept.dita"))
);
-
- // Alfresco Specific ones, that Tika doesn't know about
- assertEquals(
- "application/acp",
- mimetypeService.guessMimetype("something.acp", openQuickTestFile("quick.acp"))
- );
+// Commented out when the test class was reintroduced after many years of not being run. Failed as the type was
+// identified as a zip. Reintroduced to check guessMimetype works without pdfbox libraries.
+//
+// // Alfresco Specific ones, that Tika doesn't know about
+// assertEquals(
+// "application/acp",
+// mimetypeService.guessMimetype("something.acp", openQuickTestFile("quick.acp"))
+// );
// Where the file is corrupted
File tmp = File.createTempFile("alfresco", ".tmp");
@@ -121,12 +130,15 @@ public class MimetypeMapContentTest extends TestCase
"application/x-tika-msoffice",
mimetypeService.guessMimetype(null, truncReader)
);
- // But with the filename it'll be able to use the .doc extension
- // to guess at it being a .Doc file
- assertEquals(
- "application/msword",
- mimetypeService.guessMimetype("something.doc", truncReader)
- );
+// Commented out when the test class was reintroduced after many years of not being run. Failed to open a
+// stream onto the channel. Reintroduced to check guessMimetype works without pdfbox libraries.
+//
+// // But with the filename it'll be able to use the .doc extension
+// // to guess at it being a .Doc file
+// assertEquals(
+// "application/msword",
+// mimetypeService.guessMimetype("something.doc", truncReader)
+// );
// Lotus notes EML files (ALF-16381 / TIKA-1042)
assertEquals(
diff --git a/repository/src/test/java/org/alfresco/repo/rendition/AllRenditionTests.java b/repository/src/test/java/org/alfresco/repo/rendition/AllRenditionTests.java
index 3005c6afab..844f0e9cfe 100644
--- a/repository/src/test/java/org/alfresco/repo/rendition/AllRenditionTests.java
+++ b/repository/src/test/java/org/alfresco/repo/rendition/AllRenditionTests.java
@@ -1,31 +1,30 @@
-/*
- * #%L
- * Alfresco Repository
- * %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software.
- * If the software was purchased under a paid Alfresco license, the terms of
- * the paid license agreement will prevail. Otherwise, the software is
- * provided under the following open source license terms:
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
+/*
+ * #%L
+ * Alfresco Repository
+ * %%
+ * Copyright (C) 2005 - 2021 Alfresco Software Limited
+ * %%
+ * This file is part of the Alfresco software.
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ * #L%
+ */
package org.alfresco.repo.rendition;
-import org.alfresco.repo.rendition.executer.HTMLRenderingEngineTest;
import org.alfresco.repo.thumbnail.ThumbnailServiceImplParameterTest;
import org.alfresco.repo.thumbnail.ThumbnailServiceImplTest;
import org.alfresco.repo.thumbnail.conditions.NodeEligibleForRethumbnailingEvaluatorTest;
@@ -49,7 +48,6 @@ import org.junit.runners.Suite;
RenditionServiceIntegrationTest.class,
RenditionServicePermissionsTest.class,
RenditionNodeManagerTest.class,
- HTMLRenderingEngineTest.class,
MultiUserRenditionTest.class
})
public class AllRenditionTests
diff --git a/repository/src/test/java/org/alfresco/repo/rendition/executer/HTMLRenderingEngineTest.java b/repository/src/test/java/org/alfresco/repo/rendition/executer/HTMLRenderingEngineTest.java
deleted file mode 100644
index c98c70f9c2..0000000000
--- a/repository/src/test/java/org/alfresco/repo/rendition/executer/HTMLRenderingEngineTest.java
+++ /dev/null
@@ -1,543 +0,0 @@
-/*
- * #%L
- * Alfresco Repository
- * %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software.
- * If the software was purchased under a paid Alfresco license, the terms of
- * the paid license agreement will prevail. Otherwise, the software is
- * provided under the following open source license terms:
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
-
-package org.alfresco.repo.rendition.executer;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.alfresco.model.ContentModel;
-import org.alfresco.repo.content.transform.AbstractContentTransformerTest;
-import org.alfresco.repo.model.Repository;
-import org.alfresco.repo.rendition.RenditionDefinitionPersisterImpl;
-import org.alfresco.repo.security.authentication.AuthenticationUtil;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
-import org.alfresco.service.cmr.rendition.RenditionDefinition;
-import org.alfresco.service.cmr.rendition.RenditionService;
-import org.alfresco.service.cmr.repository.ChildAssociationRef;
-import org.alfresco.service.cmr.repository.ContentReader;
-import org.alfresco.service.cmr.repository.ContentService;
-import org.alfresco.service.cmr.repository.ContentWriter;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.repository.NodeService;
-import org.alfresco.service.namespace.QName;
-import org.alfresco.test_category.BaseSpringTestsCategory;
-import org.alfresco.test_category.OwnJVMTestsCategory;
-import org.alfresco.util.BaseAlfrescoSpringTest;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * Unit tests for the HTML Rendering Engine
- *
- * @author Nick Burch
- *
- * @deprecated We are introducing the new async RenditionService2.
- */
-@Deprecated
-@Category(BaseSpringTestsCategory.class)
-@Transactional
-public class HTMLRenderingEngineTest extends BaseAlfrescoSpringTest
-{
- private final static Log log = LogFactory.getLog(HTMLRenderingEngineTest.class);
- private NodeRef companyHome;
- private DictionaryService dictionaryService;
- private RenditionService renditionService;
- private Repository repositoryHelper;
-
- private NodeRef sourceDoc;
- private NodeRef targetFolder;
- private String targetFolderPath;
-
- private RenditionDefinition def;
-
- private static final String MIMETYPE_DOC = "application/msword";
- private static final String MIMETYPE_DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
-
- @Before
- public void before() throws Exception
- {
- super.before();
- this.nodeService = (NodeService) this.applicationContext.getBean("NodeService");
- this.contentService = (ContentService) this.applicationContext.getBean("ContentService");
- this.renditionService = (RenditionService) this.applicationContext.getBean("RenditionService");
- this.repositoryHelper = (Repository) this.applicationContext.getBean("repositoryHelper");
- this.dictionaryService = (DictionaryService) this.applicationContext.getBean("dictionaryService");
- this.companyHome = repositoryHelper.getCompanyHome();
-
- createTargetFolder();
-
- // Setup the basic rendition definition
- QName renditionName = QName.createQName("Test");
- RenditionDefinition rd = renditionService.loadRenditionDefinition(renditionName);
- if(rd != null)
- {
- RenditionDefinitionPersisterImpl rdp = new RenditionDefinitionPersisterImpl();
- rdp.setNodeService(nodeService);
- rdp.deleteRenditionDefinition(rd);
- }
- def = renditionService.createRenditionDefinition(renditionName, HTMLRenderingEngine.NAME);
- }
-
- @After
- public void after() throws Exception
- {
- super.after();
-
- tidyUpSourceDoc();
- }
-
- private void createTargetFolder()
- {
- // Set the current security context as admin
- AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
-
- Map properties = new HashMap();
- properties.put(ContentModel.PROP_NAME, "TestFolder");
- targetFolder = nodeService.createNode(
- companyHome, ContentModel.ASSOC_CONTAINS,
- QName.createQName("TestFolder"),
- ContentModel.TYPE_FOLDER,
- properties
- ).getChildRef();
-
- targetFolderPath = "/" +
- (String) nodeService.getProperty(companyHome, ContentModel.PROP_NAME) +
- "/" +
- (String) nodeService.getProperty(targetFolder, ContentModel.PROP_NAME)
- ;
- }
- private void tidyUpSourceDoc()
- {
- // Set the current security context as admin
- AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
-
- // Clean up the source
- if(sourceDoc != null)
- {
- nodeService.deleteNode(sourceDoc);
- }
-
- // Clean up the target folder
- nodeService.deleteNode(targetFolder);
- targetFolder = null;
-
- // All done
- sourceDoc = null;
- createTargetFolder();
- }
-
- private NodeRef createForDoc(String docname) throws IOException
- {
- // Create the node
- Map properties = new HashMap();
- properties.put(ContentModel.PROP_NAME, docname);
-
- NodeRef node = nodeService.createNode(
- companyHome, ContentModel.ASSOC_CONTAINS,
- QName.createQName(docname),
- ContentModel.TYPE_CONTENT,
- properties
- ).getChildRef();
-
- // Put the sample doc into it
- File f = AbstractContentTransformerTest.loadNamedQuickTestFile(docname);
- if(f == null) {
- fail("Unable to find test file for " + docname);
- }
-
- ContentWriter writer = contentService.getWriter(
- node, ContentModel.PROP_CONTENT, true
- );
- if(docname.endsWith(".doc")) {
- writer.setMimetype(MIMETYPE_DOC);
- }
- if(docname.endsWith(".docx")) {
- writer.setMimetype(MIMETYPE_DOCX);
- }
- writer.putContent(f);
-
- if (log.isDebugEnabled())
- {
- log.debug("Created document with name: " + docname + ", nodeRef: " + node + ", mimetype: " + writer.getMimetype());
- }
-
- // All done
- return node;
- }
-
- @Test
- public void testBasics() throws Exception
- {
- def.setParameterValue(
- RenditionService.PARAM_DESTINATION_PATH_TEMPLATE,
- targetFolderPath + "/${name}.html"
- );
-
- sourceDoc = createForDoc("quick.doc");
-
- ChildAssociationRef rendition = renditionService.render(sourceDoc, def);
- assertNotNull(rendition);
-
- // Check it was created
- NodeRef htmlNode = rendition.getChildRef();
- assertEquals(true, nodeService.exists(htmlNode));
-
- // Check it got the right name
- assertEquals(
- "quick.html",
- nodeService.getProperty(htmlNode, ContentModel.PROP_NAME)
- );
-
- // Check it got the right contents
- ContentReader reader = contentService.getReader(
- htmlNode, ContentModel.PROP_CONTENT
- );
- String html = reader.getContentString();
- assertEquals(""));
- assertTrue("HTML wrong:\n"+html, html.contains(""));
-
- assertTrue("HTML wrong:\n"+html, html.contains("The quick brown fox"));
-
-
- // Now do a body-only one, check that we still got the
- // contents, but not the html surround
- def.setParameterValue(
- HTMLRenderingEngine.PARAM_BODY_CONTENTS_ONLY, Boolean.TRUE
- );
- rendition = renditionService.render(sourceDoc, def);
- assertNotNull(rendition);
-
- htmlNode = rendition.getChildRef();
- assertEquals(true, nodeService.exists(htmlNode));
-
- reader = contentService.getReader(
- htmlNode, ContentModel.PROP_CONTENT
- );
- html = reader.getContentString();
- assertFalse("Body wrong:\n"+html, html.contains(""));
- assertFalse("Body wrong:\n"+html, html.contains("
"));
-
- assertTrue("HTML wrong:\n"+html, html.contains("The quick brown fox"));
- assertTrue("HTML wrong:\n"+html, html.contains("
"));
- }
-
- /**
- * Test for a .doc and a .docx, neither of which have images
- */
- @Test
- public void testDocWithoutImages() throws Exception
- {
- def.setParameterValue(
- RenditionService.PARAM_DESTINATION_PATH_TEMPLATE,
- targetFolderPath + "/${name}.html"
- );
-
- for(String name : new String[] {"quick.doc","quick.docx"})
- {
- sourceDoc = createForDoc(name);
-
- int numItemsStart = nodeService.getChildAssocs(targetFolder).size();
-
- ChildAssociationRef rendition = renditionService.render(sourceDoc, def);
- assertNotNull(rendition);
-
- // Check it was created
- NodeRef htmlNode = rendition.getChildRef();
- assertEquals(true, nodeService.exists(htmlNode));
-
- // Check it got the right name
- assertEquals(
- name.substring(0, name.lastIndexOf('.')) + ".html",
- nodeService.getProperty(htmlNode, ContentModel.PROP_NAME)
- );
-
- // Check it ended up in the right place
- assertEquals(
- "Should have been in " + targetFolderPath + " but was in" +
- nodeService.getPath(htmlNode),
- targetFolder,
- nodeService.getPrimaryParent(htmlNode).getParentRef()
- );
-
- // Check it got the right contents
- ContentReader reader = contentService.getReader(
- htmlNode, ContentModel.PROP_CONTENT
- );
- String html = reader.getContentString();
- assertEquals("