Author: jens
Date: Wed Mar 12 19:54:02 2014
New Revision: 1576871
URL: http://svn.apache.org/r1576871
Log:
InMemory: fix bug when document is renamed in a checkIn
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectCreator.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersioningTest.java
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
URL:
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java?rev=1576871&r1=1576870&r2=1576871&view=diff
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
(original)
+++
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
Wed Mar 12 19:54:02 2014
@@ -21,15 +21,18 @@ package org.apache.chemistry.opencmis.in
import java.util.ArrayList;
import java.util.List;
+import org.apache.chemistry.opencmis.commons.PropertyIds;
import org.apache.chemistry.opencmis.commons.data.Acl;
import org.apache.chemistry.opencmis.commons.data.ContentStream;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
import org.apache.chemistry.opencmis.commons.data.ObjectData;
import org.apache.chemistry.opencmis.commons.data.Properties;
+import org.apache.chemistry.opencmis.commons.data.PropertyData;
import
org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+import
org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisUpdateConflictException;
@@ -38,6 +41,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.server.ObjectInfoHandler;
import org.apache.chemistry.opencmis.commons.spi.Holder;
import org.apache.chemistry.opencmis.inmemory.FilterParser;
+import org.apache.chemistry.opencmis.inmemory.NameValidator;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Content;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Document;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.DocumentVersion;
@@ -45,6 +49,7 @@ import org.apache.chemistry.opencmis.inm
import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.VersionedDocument;
+import
org.apache.chemistry.opencmis.inmemory.storedobj.impl.DocumentVersionImpl;
import org.apache.chemistry.opencmis.inmemory.types.PropertyCreationHelper;
import org.apache.chemistry.opencmis.server.support.TypeManager;
@@ -104,7 +109,23 @@ public class InMemoryVersioningServiceIm
boolean major = (null == majorParam ? true : majorParam);
verDoc.checkIn(major, properties, ((Content)so).getContent(),
checkinComment, policies, user);
- verDoc.updateSystemBasePropertiesWhenModified(null,
context.getUsername());
+ if (null != properties && null != properties.getProperties()) {
+ // rename:
+ PropertyData<?> pd =
properties.getProperties().get(PropertyIds.NAME);
+ if (pd != null) {
+ String newName = (String) pd.getFirstValue();
+ if (newName == null || newName.equals("")) {
+ throw new CmisConstraintException("updateProperties
failed, name must not be empty.");
+ }
+ if (!NameValidator.isValidName(newName)) {
+ throw new
CmisInvalidArgumentException(NameValidator.ERROR_ILLEGAL_NAME);
+ }
+ // Note: the test for duplicated name in folder is left to the
+ // object store
+ objStore.rename(so, (String) pd.getFirstValue(), user);
+ }
+ }
+ so.updateSystemBasePropertiesWhenModified(null, context.getUsername());
// To be able to provide all Atom links in the response we need
// additional information:
if (context.isObjectInfoRequired()) {
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
URL:
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java?rev=1576871&r1=1576870&r2=1576871&view=diff
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
(original)
+++
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
Wed Mar 12 19:54:02 2014
@@ -31,7 +31,10 @@ import org.apache.chemistry.opencmis.com
import
org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
import org.apache.chemistry.opencmis.inmemory.FilterParser;
+import org.apache.chemistry.opencmis.inmemory.NameValidator;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.DocumentVersion;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.Fileable;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.Filing;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.VersionedDocument;
public class VersionedDocumentImpl extends FilingImpl implements
VersionedDocument {
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectCreator.java
URL:
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectCreator.java?rev=1576871&r1=1576870&r2=1576871&view=diff
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectCreator.java
(original)
+++
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectCreator.java
Wed Mar 12 19:54:02 2014
@@ -178,6 +178,12 @@ public class ObjectCreator {
return newProps;
}
+ public List<PropertyData<?>> getUpdatePropertyDataList(String propertyId,
String propertyValue) {
+ List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>();
+ properties.add(fFactory.createPropertyStringData(propertyId,
propertyValue));
+ return properties;
+ }
+
public boolean verifyProperty(String id, String propertyId, String
propertyValue) {
Properties props = fObjSvc.getProperties(fRepositoryId, id, "*", null);
Map<String, PropertyData<?>> propsMap = props.getProperties();
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersioningTest.java
URL:
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersioningTest.java?rev=1576871&r1=1576870&r2=1576871&view=diff
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersioningTest.java
(original)
+++
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersioningTest.java
Wed Mar 12 19:54:02 2014
@@ -59,6 +59,7 @@ public class VersioningTest extends Abst
private static final String PROP_VALUE = "Mickey Mouse";
private static final String PROP_VALUE_NEW = "Donald Duck";
private static final String PROP_NAME = "My Versioned Document";
+ private static final String PROP_NEW_NAME = "My Renamed Versioned
Document";
private static final String TEST_USER = "TestUser";
private static final String TEST_USER_2 = "OtherUser";
@@ -187,7 +188,12 @@ public class VersioningTest extends Abst
String pwcId = idHolder.getValue();
ContentStream altContent = fCreator.createAlternateContent();
- Properties newProps =
fCreator.getUpdatePropertyList(VersionTestTypeSystemCreator.PROPERTY_ID,
PROP_VALUE_NEW);
+
+ // update two properties custom and name:
+ List<PropertyData<?>> newProperties =
fCreator.getUpdatePropertyDataList(VersionTestTypeSystemCreator.PROPERTY_ID,
PROP_VALUE_NEW);
+ newProperties.add(fFactory.createPropertyStringData(PropertyIds.NAME,
PROP_NEW_NAME));
+ Properties newProps = fFactory.createPropertiesData(newProperties);
+
idHolder = new Holder<String>(pwcId);
// assertTrue(isCheckedOut(docId));
assertTrue(isCheckedOut(pwcId));
@@ -206,6 +212,8 @@ public class VersioningTest extends Abst
assertTrue(fCreator.verifyContent(fCreator.createAlternateContent(),
retrievedContent));
assertTrue(fCreator.verifyProperty(idHolder.getValue(),
VersionTestTypeSystemCreator.PROPERTY_ID,
PROP_VALUE_NEW));
+ assertTrue(fCreator.verifyProperty(idHolder.getValue(),
PropertyIds.NAME,
+ PROP_NEW_NAME));
}
@Test