diff --git a/source/java/org/alfresco/repo/jscript/ScriptNode.java b/source/java/org/alfresco/repo/jscript/ScriptNode.java index 5d8fd93605..744208f946 100644 --- a/source/java/org/alfresco/repo/jscript/ScriptNode.java +++ b/source/java/org/alfresco/repo/jscript/ScriptNode.java @@ -3767,6 +3767,11 @@ public class ScriptNode implements Scopeable, NamespacePrefixResolverProvider * the Content object as supplied. */ public void write(Content content, boolean applyMimetype, boolean guessEncoding) + { + write(content, applyMimetype, guessEncoding, false); + } + + public void write(Content content, boolean applyMimetype, boolean guessEncoding, boolean guessMimetype) { ContentService contentService = services.getContentService(); ContentWriter writer = contentService.getWriter(nodeRef, this.property, true); @@ -3775,6 +3780,19 @@ public class ScriptNode implements Scopeable, NamespacePrefixResolverProvider { writer.setMimetype(content.getMimetype()); } + if (guessMimetype) + { + InputStream reuseableIS = new ReuseableInputStream(content.getInputStream()); + writer.setMimetype(services.getMimetypeService().guessMimetype(getName(), reuseableIS)); + try + { + reuseableIS.reset(); + } + catch (IOException e) + { + } + } + if (guessEncoding) { is = new BufferedInputStream(content.getInputStream()); @@ -3949,6 +3967,31 @@ public class ScriptNode implements Scopeable, NamespacePrefixResolverProvider private ContentData contentData; private QName property; + + public class ReuseableInputStream extends BufferedInputStream + { + InputStream decorated; + + ReuseableInputStream(InputStream decorated) + { + super(decorated); + + decorated.mark(1024); + + this.decorated = decorated; + } + + @Override + public void close() throws IOException + { + decorated.reset(); + } + + public void close(boolean force) throws IOException + { + decorated.close(); + } + } } /**