ALF-11828 CIFS: NPE possible after connection failure

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@32472 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Mark Rogers
2011-12-02 13:46:53 +00:00
parent 26e0b0a765
commit e74e27c982

View File

@@ -2803,57 +2803,52 @@ public class ContentDiskDriver2 extends AlfrescoDiskDriver implements ExtendedD
/* /*
* Need to work out whether content has changed. Some odd situations do not change content. * Need to work out whether content has changed. Some odd situations do not change content.
*/ */
boolean contentChanged = true;
ContentReader existingContent = contentService.getReader(target, ContentModel.PROP_CONTENT); ContentReader existingContent = contentService.getReader(target, ContentModel.PROP_CONTENT);
if(existingContent != null) if(existingContent != null)
{ {
existingContent.getSize(); existingContent.getSize();
existingContent.getMimetype(); existingContent.getMimetype();
InputStream is = existingContent.getContentInputStream(); contentChanged = isContentChanged(existingContent, tempFile);
} }
//InputStream is = new BufferedInputStream(new FileInputStream(tempFile.getFile()));
boolean contentChanged = isContentChanged(existingContent, tempFile);
if(contentChanged) if(contentChanged)
{ {
logger.debug("content has changed"); logger.debug("content has changed");
// MER END /**
* Take over the behaviour of the auditable aspect
/** */
* Take over the behaviour of the auditable aspect getPolicyFilter().disableBehaviour(target, ContentModel.ASPECT_AUDITABLE);
*/ nodeService.setProperty(target, ContentModel.PROP_MODIFIER, authService.getCurrentUserName());
getPolicyFilter().disableBehaviour(target, ContentModel.ASPECT_AUDITABLE); nodeService.setProperty(target, ContentModel.PROP_MODIFIED, new Date(tempFile.getModifyDate()));
nodeService.setProperty(target, ContentModel.PROP_MODIFIER, authService.getCurrentUserName());
nodeService.setProperty(target, ContentModel.PROP_MODIFIED, new Date(tempFile.getModifyDate()));
// Take an initial guess at the mimetype (if it has not been set by something already) // Take an initial guess at the mimetype (if it has not been set by something already)
String mimetype = mimetypeService.guessMimetype(tempFile.getFullName(), new FileContentReader(tempFile.getFile())); String mimetype = mimetypeService.guessMimetype(tempFile.getFullName(), new FileContentReader(tempFile.getFile()));
logger.debug("guesssed mimetype:" + mimetype); logger.debug("guesssed mimetype:" + mimetype);
String encoding; String encoding;
// Take a guess at the locale // Take a guess at the locale
InputStream is = new BufferedInputStream(new FileInputStream(tempFile.getFile())); InputStream is = new BufferedInputStream(new FileInputStream(tempFile.getFile()));
try try
{
ContentCharsetFinder charsetFinder = mimetypeService.getContentCharsetFinder();
Charset charset = charsetFinder.getCharset(is, mimetype);
encoding = charset.name();
}
finally
{
if(is != null)
{ {
is.close(); ContentCharsetFinder charsetFinder = mimetypeService.getContentCharsetFinder();
Charset charset = charsetFinder.getCharset(is, mimetype);
encoding = charset.name();
} }
} finally
ContentWriter writer = contentService.getWriter(target, ContentModel.PROP_CONTENT, true); {
writer.setMimetype(mimetype); if(is != null)
writer.setEncoding(encoding); {
writer.putContent(tempFile.getFile()); is.close();
} }
}
ContentWriter writer = contentService.getWriter(target, ContentModel.PROP_CONTENT, true);
writer.setMimetype(mimetype);
writer.setEncoding(encoding);
writer.putContent(tempFile.getFile());
} // if content changed
} }
} }