mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
- reverted behaviour of CMIS createDocument() with VersioningState == CHECKEDOUT
- added support for sticky sessions to CMIS server git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31819 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -60,6 +60,9 @@
|
||||
</map>
|
||||
</property>
|
||||
|
||||
<!-- Uncomment the following line to support sticky sessions. Make sure the CMIS client supports cookies. -->
|
||||
<!-- <property name="openHttpSession" value="true" /> -->
|
||||
|
||||
<property name="OpenCMISDictionaryService" ref="OpenCMISDictionaryService" />
|
||||
<property name="OpenCMISQueryService" ref="OpenCMISQueryService" />
|
||||
|
||||
|
@@ -35,6 +35,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.transaction.Status;
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
@@ -170,6 +171,14 @@ public class AlfrescoCmisService extends AbstractCmisService
|
||||
{
|
||||
this.context = context;
|
||||
|
||||
if (connector.openHttpSession())
|
||||
{
|
||||
// create a session -> set a cookie
|
||||
// if the CMIS client supports cookies that might help in clustered
|
||||
// environments
|
||||
((HttpServletRequest) context.get(CallContext.HTTP_SERVLET_REQUEST)).getSession();
|
||||
}
|
||||
|
||||
AuthenticationUtil.pushAuthentication();
|
||||
|
||||
try
|
||||
|
@@ -251,6 +251,7 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
|
||||
private Map<String, NodeRef> rootNodeRefs = new ConcurrentHashMap<String, NodeRef>(1);
|
||||
private Map<String, CMISRenditionMapping> renditionMapping = new ConcurrentHashMap<String, CMISRenditionMapping>(1);
|
||||
private String proxyUser;
|
||||
private boolean openHttpSession = false;
|
||||
|
||||
// OpenCMIS objects
|
||||
private BigInteger typesDefaultMaxItems = TYPES_DEFAULT_MAX_ITEMS;
|
||||
@@ -335,6 +336,16 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
|
||||
this.kindToRenditionNames = renditionKinds;
|
||||
}
|
||||
|
||||
public void setOpenHttpSession(boolean openHttpSession)
|
||||
{
|
||||
this.openHttpSession = openHttpSession;
|
||||
}
|
||||
|
||||
public boolean openHttpSession()
|
||||
{
|
||||
return openHttpSession;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the descriptor service.
|
||||
*/
|
||||
@@ -812,8 +823,17 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
|
||||
*/
|
||||
public void applyVersioningState(NodeRef nodeRef, VersioningState versioningState)
|
||||
{
|
||||
if ((versioningState == VersioningState.MAJOR) || (versioningState == VersioningState.MINOR)
|
||||
|| (versioningState == VersioningState.CHECKEDOUT))
|
||||
if (versioningState == VersioningState.CHECKEDOUT)
|
||||
{
|
||||
if (!nodeService.hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE))
|
||||
{
|
||||
Map<QName, Serializable> props = new HashMap<QName, Serializable>();
|
||||
props.put(ContentModel.PROP_INITIAL_VERSION, false);
|
||||
props.put(ContentModel.PROP_AUTO_VERSION, false);
|
||||
nodeService.addAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE, props);
|
||||
}
|
||||
getCheckOutCheckInService().checkout(nodeRef);
|
||||
} else if ((versioningState == VersioningState.MAJOR) || (versioningState == VersioningState.MINOR))
|
||||
{
|
||||
if (!nodeService.hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE))
|
||||
{
|
||||
@@ -824,17 +844,12 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
|
||||
}
|
||||
|
||||
Map<String, Serializable> versionProperties = new HashMap<String, Serializable>(5);
|
||||
versionProperties.put(VersionModel.PROP_VERSION_TYPE, versioningState == VersioningState.MAJOR
|
||||
|| versioningState == VersioningState.CHECKEDOUT ? VersionType.MAJOR : VersionType.MINOR);
|
||||
versionProperties.put(VersionModel.PROP_VERSION_TYPE,
|
||||
versioningState == VersioningState.MAJOR ? VersionType.MAJOR : VersionType.MINOR);
|
||||
versionProperties.put(VersionModel.PROP_DESCRIPTION, "Initial Version");
|
||||
|
||||
versionService.createVersion(nodeRef, versionProperties);
|
||||
}
|
||||
|
||||
if (versioningState == VersioningState.CHECKEDOUT)
|
||||
{
|
||||
getCheckOutCheckInService().checkout(nodeRef);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user