mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged V4.1-BUG-FIX to HEAD
38321: Removing unused installer resource file 38322: ALF-14652: Installation: Friendly message about busy Tomcat SSL port should be more exact - Translations from Gloria 38336: Merged DEV to V4.1-BUG-FIX 38212: ALF-13650: Double byte code white spaces in front and at the end of a file name should be removed as the same behaviour of Single byte code white space. Altered Alfresco.util.trim() in order to support double byte code white spaces. 38337: Fixed ALF-14117 "Unable to load 'old version' wiki page if the title is in Japanese" - Regression: The fixes for ALF-6737 & ALF-8427 provided 2 different solutions for the same problem resulting in a double encoding of the page title 38344: ALF-14674: Deployment installer still doesn't work - Use ${installdir.escape_backslashes} instead of ${installdir} 38345: ALF-14824 - About Share - animation on about dialog corrupts screen on iPad 38400: ALF-14438: Accepted patch from BRANCHES/DEV/BELARUS/... with some modifications and using activiti-naming-conventions 38415: ALF-14808 - patched YUI2.9.0 to handle 'touchend' event to correctly hide pop-up menus when a click/touch occurs outside the menu area. 38417: Fix for ALF-14812 and ALF-14813 - evaluator config for Edit Online and Edit Offline actions. 38421: Fix for ALF-14814 - correct height of previewer area when no preview is available. Also improved the handling of Previewer for iOS - skip the WebPreviewer plugin altogether - this removes the unhelpful message about Installing Adobe Flash etc. 38471: ALF-14674: Deployment installer still doesn't work - Correction to use of ${installdir.escape_backslashes} 38540: Corrected use of ?html and ?js_string operators for element ID 38548: ALF-14829 - Removed delay added iPad specific CSS to increase hit area of actions in main and more menus. 38549: ALF-11861: Maintain the same defuault root of WebDav for Alfresco 4.0 as was in pre-4.0 Removed overriding protocols.rootPath property from installer and enterprise overlay versions of alfresco-global.properties so that correct setting in repository.properties is used. 38575: ALF-14504: PostgreSQL: Schema differences upgrading from 3.4.8 to 4.0.2 Allow for primary key alf_node_assoc_pkey to have an optional '1' at the end of its name (PostgreSQL) - for upgrade path 3.4.8 to 4.0.2 38582: ALF-14504: PostgreSQL: Schema differences upgrading from 3.4.8 to 4.0.2 Ignore avm_child_entries PK name differences. 38585: ALF-14599 ftp.ipv6.enabled is configured in alfresco-global by default, but is not injected nor implemented for FTP 38586: Merged V3.4-BUG-FIX to V4.1-BUG-FIX 38354: ALF-14738: Add information to manifests in all war files 38393: ALF-10804: WCM - Using multiple instances of the same TinyMCE plugin in the same form causes configuration inheritance issues - TinyMCE initialization and configuration moved into _createTinyMCE:function() - TinyMCE initialization moved to onLoadContent event callback - TinyMCE settings application uses init() now 38406: ALF-14738: use correct property for build number 38438: ALF-14856: Documents uploaded via WebDAV mount from Windows 7, and copied by a jscript rule are zero-length - Simplified fix. Don't fire on-create-node-trigger if on-content-create-trigger would fire, so that policy.content.update.ignoreEmpty=true is respected - policy.content.update.ignoreEmpty=true now the default as it is required by OSX and Windows 7 38459: ALF-13567: "manager-osx" should be called "Application Manager" inside the installation folder - Fix from Bitrock 38460: ALF-11817: No versioning when modify/save file content via mapped Webdav network drive - parseRequestHeader() now trys harder to parse the "Microsoft-WebDAV-MiniRedir" client's buggy "Lock-Token" header. 38476: Merged DEV to V3.4-BUG-FIX 38475: ALF-14868:CLONE - 'Error 0x80070057: The parameter is incorrect' occurs often during upload of documents via WebDAV Port fix from ALF-14636: Make XML-streaming WebDAV Methods buffer their response in case of transaction retries 38502: ALF-14876: awe.log and share.log were left after uninstalling Alfresco - Fix by Bitrock 38561: Merged V3.4 to V3.4-BUG-FIX 38414: ALF-14402: Merged PATCHES/V3.4.6 to V3.4 38028: ALF-13827: Prevent excessive cache chatter by avoiding replicating the aspects, properties and parent associations caches 38416: (RECORD ONLY) ALF-14852: Merged V3.4-BUG-FIX to V3.4 37835: Fix for ALF-14429 - Recently Modified dashlet takes up to 30 seconds to load after upgrade to Alfresco 3.4.6.23 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@38587 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -511,6 +511,8 @@ public class LockMethod extends WebDAVMethod
|
|||||||
// Close off the XML
|
// Close off the XML
|
||||||
xml.endElement(WebDAV.DAV_NS, WebDAV.XML_PROP, WebDAV.XML_NS_PROP);
|
xml.endElement(WebDAV.DAV_NS, WebDAV.XML_PROP, WebDAV.XML_NS_PROP);
|
||||||
|
|
||||||
|
// Send remaining data
|
||||||
|
flushXML(xml);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -316,22 +316,15 @@ public class PropFindMethod extends WebDAVMethod
|
|||||||
xml.endElement(WebDAV.DAV_NS, WebDAV.XML_MULTI_STATUS, WebDAV.XML_NS_MULTI_STATUS);
|
xml.endElement(WebDAV.DAV_NS, WebDAV.XML_MULTI_STATUS, WebDAV.XML_NS_MULTI_STATUS);
|
||||||
|
|
||||||
// Send remaining data
|
// Send remaining data
|
||||||
xml.flush();
|
flushXML(xml);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected XMLWriter createXMLWriter() throws IOException
|
protected OutputFormat getXMLOutputFormat()
|
||||||
{
|
{
|
||||||
String userAgent = m_request.getHeader("User-Agent");
|
String userAgent = m_request.getHeader("User-Agent");
|
||||||
if ((null != userAgent) && userAgent.toLowerCase().startsWith("microsoft-webdav-miniredir/5.1."))
|
return ((null != userAgent) && userAgent.toLowerCase().startsWith("microsoft-webdav-miniredir/5.1.")) ? OutputFormat.createCompactFormat() : super.getXMLOutputFormat();
|
||||||
{
|
|
||||||
// ALF-9952: XP requires compact XML for this response
|
|
||||||
return new XMLWriter(m_response.getOutputStream(), OutputFormat.createCompactFormat());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return super.createXMLWriter();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -23,6 +23,7 @@ import java.util.Set;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
|
import org.alfresco.repo.security.authentication.AuthenticationException;
|
||||||
import org.alfresco.service.cmr.model.FileInfo;
|
import org.alfresco.service.cmr.model.FileInfo;
|
||||||
import org.alfresco.service.cmr.model.FileNotFoundException;
|
import org.alfresco.service.cmr.model.FileNotFoundException;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
@@ -90,7 +91,34 @@ public class UnlockMethod extends WebDAVMethod
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// ALF-11817 If the header Lock-Token is incorrect (without < and >).
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Build the lock token.
|
||||||
|
FileInfo lockNodeInfo = null;
|
||||||
|
String userName = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
userName = getDAVHelper().getAuthenticationService().getCurrentUserName();
|
||||||
|
lockNodeInfo = getNodeForPath(getRootNodeRef(), getPath(), getServletPath());
|
||||||
|
}
|
||||||
|
catch (AuthenticationException ex)
|
||||||
|
{
|
||||||
|
throw new WebDAVServerException(HttpServletResponse.SC_UNAUTHORIZED);
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException e)
|
||||||
|
{
|
||||||
|
throw new WebDAVServerException(HttpServletResponse.SC_NOT_FOUND);
|
||||||
|
}
|
||||||
|
String buildLockToken = WebDAV.makeLockToken(lockNodeInfo.getNodeRef(), userName);
|
||||||
|
// End build.
|
||||||
|
|
||||||
|
if (strLockTokenHeader.equalsIgnoreCase(buildLockToken))
|
||||||
|
{
|
||||||
|
m_strLockToken = strLockTokenHeader;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// If there is no token this is a bad request so send an error back
|
// If there is no token this is a bad request so send an error back
|
||||||
if (m_strLockToken == null)
|
if (m_strLockToken == null)
|
||||||
{
|
{
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
package org.alfresco.repo.webdav;
|
package org.alfresco.repo.webdav;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.CharArrayWriter;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
@@ -118,6 +119,7 @@ public abstract class WebDAVMethod
|
|||||||
protected HttpServletResponse m_response;
|
protected HttpServletResponse m_response;
|
||||||
private File m_requestBody;
|
private File m_requestBody;
|
||||||
private ServletInputStream m_inputStream;
|
private ServletInputStream m_inputStream;
|
||||||
|
private CharArrayWriter m_xmlWriter;
|
||||||
private BufferedReader m_reader;
|
private BufferedReader m_reader;
|
||||||
|
|
||||||
// WebDAV helper
|
// WebDAV helper
|
||||||
@@ -837,30 +839,26 @@ public abstract class WebDAVMethod
|
|||||||
return m_strPath;
|
return m_strPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the format required for an XML response. This may vary per method.
|
||||||
|
*/
|
||||||
|
protected OutputFormat getXMLOutputFormat()
|
||||||
|
{
|
||||||
|
// Check if debug output or XML pretty printing is enabled
|
||||||
|
return (XMLPrettyPrint || logger.isDebugEnabled()) ? OutputFormat.createPrettyPrint() : OutputFormat.createCompactFormat();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an XML writer for the response
|
* Create an XML writer for the response
|
||||||
*
|
*
|
||||||
* @return XMLWriter
|
* @return XMLWriter
|
||||||
* @exception IOException
|
* @exception IOException
|
||||||
*/
|
*/
|
||||||
protected XMLWriter createXMLWriter() throws IOException
|
protected final XMLWriter createXMLWriter() throws IOException
|
||||||
{
|
{
|
||||||
// Check if debug output or XML pretty printing is enabled
|
// Buffer the XML response, in case we have to reset mid-transaction
|
||||||
|
m_xmlWriter = new CharArrayWriter(1024);
|
||||||
XMLWriter writer = null;
|
return new XMLWriter(m_xmlWriter, getXMLOutputFormat());
|
||||||
|
|
||||||
if (XMLPrettyPrint == true || logger.isDebugEnabled())
|
|
||||||
{
|
|
||||||
writer = new XMLWriter(m_response.getWriter(), OutputFormat.createPrettyPrint());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
writer = new XMLWriter(m_response.getWriter(), OutputFormat.createCompactFormat());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the writer
|
|
||||||
|
|
||||||
return writer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1446,13 +1444,29 @@ public abstract class WebDAVMethod
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flushs a XML Writer.
|
* Determines whether the XMLWriter should be flushed when XML is flushed. For some reason this is method specific.
|
||||||
|
* @return <code>true</code> if the XMLWriter should be flushed when XML is flushed
|
||||||
|
*/
|
||||||
|
protected boolean shouldFlushXMLWriter()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flushes all XML written so far to the response
|
||||||
*
|
*
|
||||||
* @param xml XMLWriter that should be flushed
|
* @param xml XMLWriter that should be flushed
|
||||||
*/
|
*/
|
||||||
protected void flushXML(XMLWriter xml) throws IOException
|
protected final void flushXML(XMLWriter writer) throws IOException
|
||||||
{
|
{
|
||||||
xml.flush();
|
if (shouldFlushXMLWriter())
|
||||||
|
{
|
||||||
|
writer.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_response.getWriter().write(m_xmlWriter.toCharArray());
|
||||||
|
|
||||||
|
m_xmlWriter.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user