You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by je...@apache.org on 2010/07/06 08:28:36 UTC
svn commit: r960809 - in
/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src:
main/java/org/apache/chemistry/opencmis/inmemory/server/
test/java/org/apache/chemistry/opencmis/inmemory/
Author: jens
Date: Tue Jul 6 06:28:36 2010
New Revision: 960809
URL: http://svn.apache.org/viewvc?rev=960809&view=rev
Log:
Fix a bug with mandatory properties that have a default value in the property definition
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectServiceTest.java
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java?rev=960809&r1=960808&r2=960809&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java Tue Jul 6 06:28:36 2010
@@ -61,8 +61,8 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.spi.Holder;
import org.apache.chemistry.opencmis.inmemory.DataObjectCreator;
import org.apache.chemistry.opencmis.inmemory.FilterParser;
-import org.apache.chemistry.opencmis.inmemory.NameValidator;
import org.apache.chemistry.opencmis.inmemory.TypeValidator;
+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;
@@ -700,11 +700,16 @@ public class InMemoryObjectServiceImpl e
throw new CmisInvalidArgumentException(NameValidator.ERROR_ILLEGAL_NAME);
TypeValidator.validateVersionStateForCreate((DocumentTypeDefinition) typeDef, versioningState);
- TypeValidator.validateProperties(typeDef, properties, true);
// set properties that are not set but have a default:
- propMap = setDefaultProperties(typeDef, propMap);
+ Map<String, PropertyData<?>> propMapNew = setDefaultProperties(typeDef, propMap);
+ if (propMapNew != propMap) {
+ properties = new PropertiesImpl(propMapNew.values());
+ propMap = propMapNew;
+ }
+ TypeValidator.validateProperties(typeDef, properties, true);
+
// set user, creation date, etc.
if (user == null)
user = "unknown";
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectServiceTest.java?rev=960809&r1=960808&r2=960809&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectServiceTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectServiceTest.java Tue Jul 6 06:28:36 2010
@@ -87,6 +87,7 @@ public class ObjectServiceTest extends A
private static final String TEST_DOCUMENT_MY_STRING_PROP_ID = "MyCustomDocumentStringProp";
private static final String TEST_DOCUMENT_MY_MULTI_STRING_PROP_ID = "MyCustomDocumentMultiStringProp";
private static final String TEST_DOCUMENT_MY_INT_PROP_ID = "MyCustomDocumentIntProp";
+ private static final String TEST_DOCUMENT_MY_INT_PROP_ID_MANDATORY_DEFAULT = "MyCustomDocumentIntPropMandatoryDefault";
private static final String TEST_DOCUMENT_MY_SUB_STRING_PROP_ID = "MyInheritedStringProp";
private static final String TEST_DOCUMENT_MY_SUB_INT_PROP_ID = "MyInheritedIntProp";
@@ -733,6 +734,13 @@ public class ObjectServiceTest extends A
assertNotNull(valueList);
assertTrue(valueList.contains("Apache"));
assertTrue(valueList.contains("CMIS"));
+
+ pd = props.get(TEST_DOCUMENT_MY_INT_PROP_ID_MANDATORY_DEFAULT);
+ assertNotNull(pd);
+ bi = pd.getFirstValue();
+ assertNotNull(bi);
+ assertEquals(BigInteger.valueOf(100), bi);
+
log.info("... testDefaultProperties() finished.");
}
@@ -1048,7 +1056,15 @@ public class ObjectServiceTest extends A
prop2.setDefaultValue(defVal);
propertyDefinitions.put(prop2.getId(), prop2);
+ PropertyIntegerDefinitionImpl prop3 = PropertyCreationHelper.createIntegerDefinition(
+ TEST_DOCUMENT_MY_INT_PROP_ID_MANDATORY_DEFAULT, "Test Integer Property Mandatory default");
+ prop3.setIsRequired(true);
+ List<BigInteger> defVal2 = new ArrayList<BigInteger>() {{ add(BigInteger.valueOf(100)); }};
+ prop3.setDefaultValue(defVal2);
+ propertyDefinitions.put(prop3.getId(), prop3);
+
cmisDocumentType.addCustomPropertyDefinitions(propertyDefinitions);
+
return cmisDocumentType;
}