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/04/16 16:00:25 UTC
svn commit: r934878 [12/13] - in
/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src:
main/java/org/apache/chemistry/opencmis/inmemory/
main/java/org/apache/chemistry/opencmis/inmemory/clientprovider/ ma...
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/TypeValidationTest.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/TypeValidationTest.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/TypeValidationTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/TypeValidationTest.java Fri Apr 16 14:00:23 2010
@@ -57,679 +57,656 @@ import org.junit.Test;
* @author Jens
*/
public class TypeValidationTest extends TestCase {
- private static final String MY_DOC_TYPE = "MyDocType1";
- private static final String STRING_DOC_TYPE = "StringDocType";
- private static final String STRING_PROP_TYPE = "StringProp";
- private static final String INT_DOC_TYPE = "IntegerDocType";
- private static final String INT_PROP_TYPE = "IntegerProp";
- private static final String DECIMAL_DOC_TYPE = "DecimalDocType";
- private static final String DECIMAL_PROP_TYPE = "DecimalProp";
- private static final String PICK_LIST_DOC_TYPE = "PickListDocType";
- private static final String PICK_LIST_PROP_DEF = "PickListProp";
- private static final String DOC_TYPE_SUPER = "SuperDocType";
- private static final String DOC_TYPE_SUB = "SubDocType";
- private static final String STRING_PROP_TYPE_SUPER = "StringPropSuper";
- private static final String STRING_PROP_TYPE_SUB = "StringPropSub";
- private static final BindingsObjectFactory FACTORY = new BindingsObjectFactoryImpl();
-
- @Before
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- @After
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- private List<PropertyData<?>> createPropertiesWithNameAndTypeId(String typeId) {
- List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>();
- properties.add(FACTORY.createPropertyIdData(PropertyIds.NAME, "Document_1"));
- properties.add(FACTORY.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, typeId));
- return properties;
- }
-
- @Test
- public void testMandatoryPropertyValidation() {
- // create properties in the same way as we would pass them to a createDocument call
- // of the ObjectService
-
- List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(MY_DOC_TYPE);
- Properties props = FACTORY.createPropertiesData(properties);
-
- // validate properties according to type
- TypeDefinition typeDef = buildMyType();
-
- // try missing mandatory Boolean property
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- fail("TypeValidator should throw CMISConstraintException if mandatory property is missing.");
- }
- catch (CmisConstraintException e) {
- assertTrue(e.getMessage().contains("mandatory properties are missing"));
- }
-
- // add missing mandatory Boolean property and try again
- properties.add(FACTORY.createPropertyBooleanData("BooleanProp", true));
- props = FACTORY.createPropertiesData(properties);
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- }
- catch (CmisConstraintException e) {
- fail("TypeValidator should not throw CMISConstraintException if mandatory property is present.");
- }
- }
-
- @Test
- public void testStringPropertyValidation() {
- TypeDefinition typeDef = buildTypeWithStringProp(); // we only have one
-
- List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(STRING_DOC_TYPE);
- properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE,
- "A String property with quite a long value exceeding the max. length."));
- Properties props = FACTORY.createPropertiesData(properties);
-
- // try exceeding string length
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- fail("TypeValidator should throw CMISConstraintException if max string length is exceeded");
- }
- catch (Exception e) {
- assertTrue(e instanceof CmisConstraintException);
- }
-
- properties = createPropertiesWithNameAndTypeId(STRING_DOC_TYPE);
- properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE,"short val"));
- props = FACTORY.createPropertiesData(properties);
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- }
- catch (Exception e) {
- fail("TypeValidator should not throw exception if string length is valid" + e);
- }
- }
-
- @Test
- public void testIntegerPropertyValidation() {
-
- TypeDefinition typeDef = buildTypeWithIntegerProp();
-
- List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(INT_DOC_TYPE);
- properties.add(FACTORY.createPropertyIntegerData(INT_PROP_TYPE, BigInteger.valueOf(-100))); // try wrong value
- Properties props = FACTORY.createPropertiesData(properties);
-
- // try exceeding string length
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- fail("TypeValidator should throw CMISConstraintException if integer value is out of range");
- }
- catch (Exception e) {
- assertTrue(e instanceof CmisConstraintException);
- }
-
- properties = createPropertiesWithNameAndTypeId(INT_DOC_TYPE);
- properties.add(FACTORY.createPropertyIntegerData(INT_PROP_TYPE, BigInteger.valueOf(1))); // try correct value
- props = FACTORY.createPropertiesData(properties);
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- }
- catch (Exception e) {
- fail("TypeValidator should not throw exception if integer value is valid. " + e);
- }
-
- }
-
- @Test
- public void testDecimalPropertyValidation() {
- TypeDefinition typeDef = buildTypeWithDecimalProp();
-
- List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(DECIMAL_DOC_TYPE);
- properties.add(FACTORY.createPropertyDecimalData(DECIMAL_PROP_TYPE, BigDecimal.valueOf(-11.11)));
- Properties props = FACTORY.createPropertiesData(properties);
-
- // try exceeding string length
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- fail("TypeValidator should throw CMISConstraintException if decimal value is out of range");
- }
- catch (Exception e) {
- assertTrue(e instanceof CmisConstraintException);
- }
-
- properties = createPropertiesWithNameAndTypeId(DECIMAL_DOC_TYPE);
- properties.add(FACTORY.createPropertyDecimalData(DECIMAL_PROP_TYPE, BigDecimal.valueOf(1.23)));
- props = FACTORY.createPropertiesData(properties);
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- }
- catch (Exception e) {
- fail("TypeValidator should not throw exception if decimal value is valid. " + e);
- }
- }
-
- @Test
- public void testPickListValidationSingleValue() {
- TypeDefinition typeDef =buildTypeWithPickList(Cardinality.SINGLE);
-
- List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
- properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, "pink"));
- Properties props = FACTORY.createPropertiesData(properties);
-
- // try wrong value
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- fail("TypeValidator should throw CMISConstraintException if choice value is not in list of valid values");
- }
- catch (Exception e) {
- assertTrue(e instanceof CmisConstraintException);
- }
-
- properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
- properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, "blue"));
- props = FACTORY.createPropertiesData(properties);
-
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- }
- catch (Exception e) {
- fail("TypeValidator should not throw CMISConstraintException if choice value is in list of valid values"
- + e);
- }
- }
-
- @Test
- public void testPickListValidationMultiValue() {
- TypeDefinition typeDef =buildTypeWithPickList(Cardinality.MULTI);
-
- List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
- List<String> propValues = new ArrayList<String>();
- propValues.add("red");
- propValues.add("pink");
- properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
- Properties props = FACTORY.createPropertiesData(properties);
-
- // try wrong value
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- fail("TypeValidator should throw CMISConstraintException if choice value is not in list of valid values");
- }
- catch (Exception e) {
- assertTrue(e instanceof CmisConstraintException);
- }
-
- properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
- propValues = new ArrayList<String>();
- propValues.add("red");
- propValues.add("green");
- properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
- props = FACTORY.createPropertiesData(properties);
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- }
- catch (Exception e) {
- fail("TypeValidator should not throw CMISConstraintException if choice value is in list of valid values"
- + e);
- }
- }
-
- @Test
- public void testPickListValidationMultiUsingMultipleValueLists() {
- TypeDefinition typeDef = buildTypeWithMultiPickList();
-
- List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
- List<String> propValues = new ArrayList<String>();
- propValues.add("red");
- propValues.add("green");
- propValues.add("pink");
- properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
- Properties props = FACTORY.createPropertiesData(properties);
-
- // try wrong value
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- fail("TypeValidator should throw CMISConstraintException if choice value is not in list of valid values");
- }
- catch (Exception e) {
- assertTrue(e instanceof CmisConstraintException);
- }
-
- properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
- propValues = new ArrayList<String>();
- propValues.add("red");
- propValues.add("green");
- propValues.add("blue");
- properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
- props = FACTORY.createPropertiesData(properties);
-
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- }
- catch (Exception e) {
- fail("TypeValidator should not throw CMISConstraintException if choice value is in list of valid values"
- + e);
- }
- }
-
- @Test
- public void testHierachicalPickListValidationSingleValue() {
- TypeDefinition typeDef = buildTypeWithHierachicalPickList(Cardinality.SINGLE);
-
- List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
- properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, "frankfurt"));
- Properties props = FACTORY.createPropertiesData(properties);
-
- // try wrong value
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- fail("TypeValidator should throw CMISConstraintException if choice value is not in list of valid values");
- }
- catch (Exception e) {
- assertTrue(e instanceof CmisConstraintException);
- }
-
- properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
- properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, "munich"));
- props = FACTORY.createPropertiesData(properties);
-
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- }
- catch (Exception e) {
- fail("TypeValidator should not throw CMISConstraintException if choice value is in list of valid values"
- + e);
- }
- }
-
- @Test
- public void testHierachicalPickListValidationMultiValue() {
- TypeDefinition typeDef = buildTypeWithHierachicalPickList(Cardinality.MULTI);
-
- List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
- List<String> propValues = new ArrayList<String>();
- propValues.add("stuttgart");
- propValues.add("hintertupfingen");
- properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
- Properties props = FACTORY.createPropertiesData(properties);
-
- // try wrong value
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- fail("TypeValidator should throw CMISConstraintException if choice value is not in list of valid values");
- }
- catch (Exception e) {
- assertTrue(e instanceof CmisConstraintException);
- }
-
- properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
- propValues = new ArrayList<String>();
- propValues.add("munich");
- propValues.add("walldorf");
- properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
- props = FACTORY.createPropertiesData(properties);
-
- try {
- TypeValidator.validateProperties(typeDef, props, true);
- }
- catch (Exception e) {
- fail("TypeValidator should not throw CMISConstraintException if choice value is in list of valid values"
- + e);
- }
- }
-
- @Test
- public void testInheritedPropertyValidation() {
- TypeManager tm = buildInheritedTypes();
- TypeDefinition superType = tm.getTypeById(DOC_TYPE_SUPER).getTypeDefinition();
- TypeDefinition subType = tm.getTypeById(DOC_TYPE_SUB).getTypeDefinition();;
-
- List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(DOC_TYPE_SUB);
- properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE_SUB,
- "A String property with quite a long value exceeding the max. length."));
- Properties props = FACTORY.createPropertiesData(properties);
-
- // try exceeding string length on org property
- try {
- TypeValidator.validateProperties(superType, props, true);
- fail("TypeValidator should throw CMISConstraintException if max string length is exceeded");
- }
- catch (Exception e) {
- assertTrue(e instanceof CmisConstraintException);
- }
-
- // try exceeding string length on inherited property
- properties = createPropertiesWithNameAndTypeId(DOC_TYPE_SUB);
- properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE_SUPER,
- "A String property with quite a long value exceeding the max. length."));
- props = FACTORY.createPropertiesData(properties);
-
- // try exceeding string length
- try {
- TypeValidator.validateProperties(subType, props, true);
- fail("TypeValidator should throw CMISConstraintException if max string length is exceeded");
- }
- catch (Exception e) {
- assertTrue(e instanceof CmisConstraintException);
- }
-
- properties = createPropertiesWithNameAndTypeId(DOC_TYPE_SUB);
- properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE_SUPER, "super val"));
- properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE_SUB, "sub val"));
- props = FACTORY.createPropertiesData(properties);
- try {
- TypeValidator.validateProperties(subType, props, true);
- }
- catch (Exception e) {
- fail("TypeValidator should not throw exception if string length is valid" + e);
- }
- }
-
- /**
- * create sample type
- *
- * @return type definition of sample type
- */
- private static InMemoryDocumentTypeDefinition buildMyType() {
- // always add CMIS default types
-
- InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(MY_DOC_TYPE,
- "Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- // create a boolean property definition
-
- Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
-
- PropertyDefinition<Boolean> prop = PropertyCreationHelper.createBooleanDefinition(
- "BooleanProp", "Sample Boolean Property");
- ((PropertyBooleanDefinitionImpl) prop).setIsRequired(true);
- propertyDefinitions.put(prop.getId(), prop);
-
- prop = PropertyCreationHelper.createBooleanMultiDefinition("BooleanPropMV",
- "Sample Boolean multi-value Property");
- propertyDefinitions.put(prop.getId(), prop);
-
- PropertyDateTimeDefinitionImpl prop2 = PropertyCreationHelper.createDateTimeDefinition(
- "DateTimeProp", "Sample DateTime Property");
- propertyDefinitions.put(prop2.getId(), prop2);
-
- prop2 = PropertyCreationHelper.createDateTimeMultiDefinition("DateTimePropMV",
- "Sample DateTime multi-value Property");
- propertyDefinitions.put(prop2.getId(), prop2);
-
- PropertyDecimalDefinitionImpl prop3 = PropertyCreationHelper.createDecimalDefinition(
- "DecimalProp", "Sample Decimal Property");
- propertyDefinitions.put(prop3.getId(), prop3);
-
- prop3 = PropertyCreationHelper.createDecimalDefinition("DecimalPropMV",
- "Sample Decimal multi-value Property");
- propertyDefinitions.put(prop3.getId(), prop3);
-
- PropertyHtmlDefinitionImpl prop4 = PropertyCreationHelper.createHtmlDefinition("HtmlProp",
- "Sample Html Property");
- propertyDefinitions.put(prop4.getId(), prop4);
-
- prop4 = PropertyCreationHelper.createHtmlDefinition("HtmlPropMV",
- "Sample Html multi-value Property");
- propertyDefinitions.put(prop4.getId(), prop4);
-
- PropertyIdDefinitionImpl prop5 = PropertyCreationHelper.createIdDefinition("IdProp",
- "Sample Id Property");
- propertyDefinitions.put(prop5.getId(), prop5);
-
- prop5 = PropertyCreationHelper.createIdDefinition("IdPropMV",
- "Sample Id Html multi-value Property");
- propertyDefinitions.put(prop5.getId(), prop5);
-
- PropertyIntegerDefinitionImpl prop6 = PropertyCreationHelper.createIntegerDefinition(
- "IntProp", "Sample Int Property");
- propertyDefinitions.put(prop6.getId(), prop6);
-
- prop6 = PropertyCreationHelper.createIntegerDefinition("IntPropMV",
- "Sample Int multi-value Property");
- propertyDefinitions.put(prop6.getId(), prop6);
-
- PropertyStringDefinitionImpl prop7 = PropertyCreationHelper.createStringDefinition(
- "StringProp", "Sample String Property");
- propertyDefinitions.put(prop7.getId(), prop7);
-
- PropertyUriDefinitionImpl prop8 = PropertyCreationHelper.createUriDefinition("UriProp",
- "Sample Uri Property");
- propertyDefinitions.put(prop8.getId(), prop8);
-
- prop8 = PropertyCreationHelper.createUriDefinition("UriPropMV",
- "Sample Uri multi-value Property");
- propertyDefinitions.put(prop8.getId(), prop8);
-
- PropertyStringDefinitionImpl prop9 = PropertyCreationHelper.createStringDefinition(
- PICK_LIST_PROP_DEF, "Sample Pick List Property");
-
- PropertyCreationHelper.addElemToPicklist(prop9, "red");
- PropertyCreationHelper.addElemToPicklist(prop9, "green");
- PropertyCreationHelper.addElemToPicklist(prop9, "blue");
- PropertyCreationHelper.addElemToPicklist(prop9, "black");
- PropertyCreationHelper.setDefaultValue(prop9, "blue");
-
- cmisType.setPropertyDefinitions(propertyDefinitions);
-
- return cmisType;
- }
-
- private static InMemoryDocumentTypeDefinition buildTypeWithStringProp() {
- InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(STRING_DOC_TYPE,
- "String Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- // create a String property definition
-
- PropertyStringDefinitionImpl propDef = PropertyCreationHelper.createStringDefinition(
- STRING_PROP_TYPE, "Sample String Property");
- propDef.setMaxLength(BigInteger.valueOf(10));
- propertyDefinitions.put(propDef.getId(), propDef);
-
- cmisType.setPropertyDefinitions(propertyDefinitions);
-
- return cmisType;
- }
-
- private static InMemoryDocumentTypeDefinition buildTypeWithIntegerProp() {
- InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(INT_DOC_TYPE,
- "Int Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- // create a String property definition
-
- PropertyIntegerDefinitionImpl propDef = PropertyCreationHelper.createIntegerDefinition(
- INT_PROP_TYPE, "Sample Integer Property");
- propDef.setMinValue(BigInteger.valueOf(-1));
- propDef.setMaxValue(BigInteger.valueOf(1));
- propertyDefinitions.put(propDef.getId(), propDef);
-
- cmisType.setPropertyDefinitions(propertyDefinitions);
-
- return cmisType;
- }
-
- private static InMemoryDocumentTypeDefinition buildTypeWithDecimalProp() {
- InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(DECIMAL_DOC_TYPE,
- "Decimal Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- // create a String property definition
-
- PropertyDecimalDefinitionImpl propDef = PropertyCreationHelper.createDecimalDefinition(
- DECIMAL_PROP_TYPE, "Sample Decimal Property");
- propDef.setMinValue(BigDecimal.valueOf(-1.5));
- propDef.setMaxValue(BigDecimal.valueOf(1.5));
- propertyDefinitions.put(propDef.getId(), propDef);
-
- cmisType.setPropertyDefinitions(propertyDefinitions);
-
- return cmisType;
- }
-
- public static InMemoryDocumentTypeDefinition buildTypeWithPickList(Cardinality cardinality) {
- InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(PICK_LIST_DOC_TYPE,
- "PickList Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- // create a String property definition
-
- PropertyStringDefinitionImpl propDef = PropertyCreationHelper.createStringDefinition(
- PICK_LIST_PROP_DEF, "Sample PickList (choice) Property");
- List<Choice<String>> choiceList = new ArrayList<Choice<String>>();
- ChoiceImpl<String> elem = new ChoiceImpl<String>();
- elem.setValue(Collections.singletonList("red"));
- elem.setDisplayName("Red");
- choiceList.add(elem);
- elem = new ChoiceImpl<String>();
- elem.setValue(Collections.singletonList("green"));
- elem.setDisplayName("Green");
- choiceList.add(elem);
- elem = new ChoiceImpl<String>();
- elem.setValue(Collections.singletonList("blue"));
- elem.setDisplayName("Blue");
- choiceList.add(elem);
- elem = new ChoiceImpl<String>();
- elem.setValue(Collections.singletonList("black"));
- elem.setDisplayName("Black");
- choiceList.add(elem);
- propDef.setChoices(choiceList);
- propDef.setDefaultValue(Collections.singletonList("blue"));
- propDef.setCardinality(cardinality);
- propertyDefinitions.put(propDef.getId(), propDef);
- cmisType.setPropertyDefinitions(propertyDefinitions);
-
- return cmisType;
- }
-
- public static InMemoryDocumentTypeDefinition buildTypeWithMultiPickList() {
- InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(PICK_LIST_DOC_TYPE,
- "PickList Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- // create a String property definition
-
- PropertyStringDefinitionImpl propDef = PropertyCreationHelper.createStringDefinition(
- PICK_LIST_PROP_DEF, "Sample PickList (choice) Property");
- List<Choice<String>> choiceList = new ArrayList<Choice<String>>();
- ChoiceImpl<String> elem = new ChoiceImpl<String>();
- List<String> valueList = new ArrayList<String>();
- valueList.add("red");
- valueList.add("green");
- valueList.add("blue");
- elem.setValue(valueList);
- elem.setDisplayName("RGB");
- choiceList.add(elem);
-
- elem = new ChoiceImpl<String>();
- valueList = new ArrayList<String>();
- valueList.add("cyan");
- valueList.add("magenta");
- valueList.add("yellow");
- valueList.add("black");
- elem.setValue(valueList);
- elem.setDisplayName("CMYK");
- choiceList.add(elem);
-
- propDef.setChoices(choiceList);
- // propDef.setDefaultValue(...);
- propDef.setCardinality(Cardinality.MULTI);
- propertyDefinitions.put(propDef.getId(), propDef);
- cmisType.setPropertyDefinitions(propertyDefinitions);
-
- return cmisType;
- }
-
- public static InMemoryDocumentTypeDefinition buildTypeWithHierachicalPickList(
- Cardinality cardinality) {
- InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(PICK_LIST_DOC_TYPE,
- "PickList Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- // create a String property definition
-
- // Create a two-level pick list with an outer property list state and an inner
- // list of city
- PropertyStringDefinitionImpl propDef = PropertyCreationHelper.createStringDefinition(
- PICK_LIST_PROP_DEF, "Sample PickList (choice) Property");
- List<Choice<String>> choiceListOuter = new ArrayList<Choice<String>>();
-
- ChoiceImpl<String> elemOuter = new ChoiceImpl<String>();
- elemOuter.setDisplayName("Bavaria");
- List<Choice<String>> choiceListInner = new ArrayList<Choice<String>>();
- ChoiceImpl<String> elemInner = new ChoiceImpl<String>();
- elemInner.setDisplayName("Munich");
- elemInner.setValue(Collections.singletonList("munich"));
- choiceListInner.add(elemInner);
- elemInner = new ChoiceImpl<String>();
- elemInner.setDisplayName("Ingolstadt");
- elemInner.setValue(Collections.singletonList("ingolstadt"));
- choiceListInner.add(elemInner);
- elemInner = new ChoiceImpl<String>();
- elemInner.setDisplayName("Passau");
- elemInner.setValue(Collections.singletonList("passau"));
- choiceListInner.add(elemInner);
- elemOuter.setChoice(choiceListInner);
- choiceListOuter.add(elemOuter);
-
- elemOuter = new ChoiceImpl<String>();
- elemOuter.setDisplayName("Baden Wurtemberg");
- choiceListInner = new ArrayList<Choice<String>>();
- elemInner = new ChoiceImpl<String>();
- elemInner.setDisplayName("Stuttgart");
- elemInner.setValue(Collections.singletonList("stuttgart"));
- choiceListInner.add(elemInner);
- elemInner = new ChoiceImpl<String>();
- elemInner.setDisplayName("Karlsruhe");
- elemInner.setValue(Collections.singletonList("karlsruhe"));
- choiceListInner.add(elemInner);
- elemInner = new ChoiceImpl<String>();
- elemInner.setDisplayName("Walldorf");
- elemInner.setValue(Collections.singletonList("walldorf"));
- choiceListInner.add(elemInner);
- elemOuter.setChoice(choiceListInner);
- choiceListOuter.add(elemOuter);
-
- propDef.setChoices(choiceListOuter);
- propDef.setCardinality(cardinality);
- propertyDefinitions.put(propDef.getId(), propDef);
- cmisType.setPropertyDefinitions(propertyDefinitions);
-
- return cmisType;
- }
-
- private static TypeManager buildInheritedTypes() {
-
- TypeManager tm = new TypeManager();
- tm.initTypeSystem(null); // create CMIS default types
-
- // create super type
- InMemoryDocumentTypeDefinition cmisSuperType = new InMemoryDocumentTypeDefinition(DOC_TYPE_SUPER,
- "Document Type With a child", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- // create a String property definition
- PropertyStringDefinitionImpl propDef = PropertyCreationHelper.createStringDefinition(
- STRING_PROP_TYPE_SUPER, "Sample String Property SuperType");
- propDef.setMaxLength(BigInteger.valueOf(10));
- propertyDefinitions.put(propDef.getId(), propDef);
- cmisSuperType.setPropertyDefinitions(propertyDefinitions);
-
- // create sub type
- InMemoryDocumentTypeDefinition cmisSubType = new InMemoryDocumentTypeDefinition(DOC_TYPE_SUB,
- "Document Type With a parent", cmisSuperType);
-
- propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- // create a String property definition
- propDef = PropertyCreationHelper.createStringDefinition(
- STRING_PROP_TYPE_SUB, "Sample String Property Subtype");
- propDef.setMaxLength(BigInteger.valueOf(20));
- propertyDefinitions.put(propDef.getId(), propDef);
- cmisSubType.setPropertyDefinitions(propertyDefinitions);
-
- tm.addTypeDefinition(cmisSuperType);
- tm.addTypeDefinition(cmisSubType);
+ private static final String MY_DOC_TYPE = "MyDocType1";
+ private static final String STRING_DOC_TYPE = "StringDocType";
+ private static final String STRING_PROP_TYPE = "StringProp";
+ private static final String INT_DOC_TYPE = "IntegerDocType";
+ private static final String INT_PROP_TYPE = "IntegerProp";
+ private static final String DECIMAL_DOC_TYPE = "DecimalDocType";
+ private static final String DECIMAL_PROP_TYPE = "DecimalProp";
+ private static final String PICK_LIST_DOC_TYPE = "PickListDocType";
+ private static final String PICK_LIST_PROP_DEF = "PickListProp";
+ private static final String DOC_TYPE_SUPER = "SuperDocType";
+ private static final String DOC_TYPE_SUB = "SubDocType";
+ private static final String STRING_PROP_TYPE_SUPER = "StringPropSuper";
+ private static final String STRING_PROP_TYPE_SUB = "StringPropSub";
+ private static final BindingsObjectFactory FACTORY = new BindingsObjectFactoryImpl();
+
+ @Before
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ @After
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ private List<PropertyData<?>> createPropertiesWithNameAndTypeId(String typeId) {
+ List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>();
+ properties.add(FACTORY.createPropertyIdData(PropertyIds.NAME, "Document_1"));
+ properties.add(FACTORY.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, typeId));
+ return properties;
+ }
+
+ @Test
+ public void testMandatoryPropertyValidation() {
+ // create properties in the same way as we would pass them to a
+ // createDocument call
+ // of the ObjectService
+
+ List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(MY_DOC_TYPE);
+ Properties props = FACTORY.createPropertiesData(properties);
+
+ // validate properties according to type
+ TypeDefinition typeDef = buildMyType();
+
+ // try missing mandatory Boolean property
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ fail("TypeValidator should throw CMISConstraintException if mandatory property is missing.");
+ } catch (CmisConstraintException e) {
+ assertTrue(e.getMessage().contains("mandatory properties are missing"));
+ }
+
+ // add missing mandatory Boolean property and try again
+ properties.add(FACTORY.createPropertyBooleanData("BooleanProp", true));
+ props = FACTORY.createPropertiesData(properties);
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ } catch (CmisConstraintException e) {
+ fail("TypeValidator should not throw CMISConstraintException if mandatory property is present.");
+ }
+ }
+
+ @Test
+ public void testStringPropertyValidation() {
+ TypeDefinition typeDef = buildTypeWithStringProp(); // we only have one
+
+ List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(STRING_DOC_TYPE);
+ properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE,
+ "A String property with quite a long value exceeding the max. length."));
+ Properties props = FACTORY.createPropertiesData(properties);
+
+ // try exceeding string length
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ fail("TypeValidator should throw CMISConstraintException if max string length is exceeded");
+ } catch (Exception e) {
+ assertTrue(e instanceof CmisConstraintException);
+ }
+
+ properties = createPropertiesWithNameAndTypeId(STRING_DOC_TYPE);
+ properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE, "short val"));
+ props = FACTORY.createPropertiesData(properties);
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ } catch (Exception e) {
+ fail("TypeValidator should not throw exception if string length is valid" + e);
+ }
+ }
+
+ @Test
+ public void testIntegerPropertyValidation() {
+
+ TypeDefinition typeDef = buildTypeWithIntegerProp();
+
+ List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(INT_DOC_TYPE);
+ properties.add(FACTORY.createPropertyIntegerData(INT_PROP_TYPE, BigInteger.valueOf(-100))); // try
+ // wrong
+ // value
+ Properties props = FACTORY.createPropertiesData(properties);
+
+ // try exceeding string length
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ fail("TypeValidator should throw CMISConstraintException if integer value is out of range");
+ } catch (Exception e) {
+ assertTrue(e instanceof CmisConstraintException);
+ }
+
+ properties = createPropertiesWithNameAndTypeId(INT_DOC_TYPE);
+ properties.add(FACTORY.createPropertyIntegerData(INT_PROP_TYPE, BigInteger.valueOf(1))); // try
+ // correct
+ // value
+ props = FACTORY.createPropertiesData(properties);
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ } catch (Exception e) {
+ fail("TypeValidator should not throw exception if integer value is valid. " + e);
+ }
+
+ }
+
+ @Test
+ public void testDecimalPropertyValidation() {
+ TypeDefinition typeDef = buildTypeWithDecimalProp();
+
+ List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(DECIMAL_DOC_TYPE);
+ properties.add(FACTORY.createPropertyDecimalData(DECIMAL_PROP_TYPE, BigDecimal.valueOf(-11.11)));
+ Properties props = FACTORY.createPropertiesData(properties);
+
+ // try exceeding string length
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ fail("TypeValidator should throw CMISConstraintException if decimal value is out of range");
+ } catch (Exception e) {
+ assertTrue(e instanceof CmisConstraintException);
+ }
+
+ properties = createPropertiesWithNameAndTypeId(DECIMAL_DOC_TYPE);
+ properties.add(FACTORY.createPropertyDecimalData(DECIMAL_PROP_TYPE, BigDecimal.valueOf(1.23)));
+ props = FACTORY.createPropertiesData(properties);
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ } catch (Exception e) {
+ fail("TypeValidator should not throw exception if decimal value is valid. " + e);
+ }
+ }
+
+ @Test
+ public void testPickListValidationSingleValue() {
+ TypeDefinition typeDef = buildTypeWithPickList(Cardinality.SINGLE);
+
+ List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
+ properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, "pink"));
+ Properties props = FACTORY.createPropertiesData(properties);
+
+ // try wrong value
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ fail("TypeValidator should throw CMISConstraintException if choice value is not in list of valid values");
+ } catch (Exception e) {
+ assertTrue(e instanceof CmisConstraintException);
+ }
+
+ properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
+ properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, "blue"));
+ props = FACTORY.createPropertiesData(properties);
+
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ } catch (Exception e) {
+ fail("TypeValidator should not throw CMISConstraintException if choice value is in list of valid values"
+ + e);
+ }
+ }
+
+ @Test
+ public void testPickListValidationMultiValue() {
+ TypeDefinition typeDef = buildTypeWithPickList(Cardinality.MULTI);
+
+ List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
+ List<String> propValues = new ArrayList<String>();
+ propValues.add("red");
+ propValues.add("pink");
+ properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
+ Properties props = FACTORY.createPropertiesData(properties);
+
+ // try wrong value
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ fail("TypeValidator should throw CMISConstraintException if choice value is not in list of valid values");
+ } catch (Exception e) {
+ assertTrue(e instanceof CmisConstraintException);
+ }
+
+ properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
+ propValues = new ArrayList<String>();
+ propValues.add("red");
+ propValues.add("green");
+ properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
+ props = FACTORY.createPropertiesData(properties);
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ } catch (Exception e) {
+ fail("TypeValidator should not throw CMISConstraintException if choice value is in list of valid values"
+ + e);
+ }
+ }
+
+ @Test
+ public void testPickListValidationMultiUsingMultipleValueLists() {
+ TypeDefinition typeDef = buildTypeWithMultiPickList();
+
+ List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
+ List<String> propValues = new ArrayList<String>();
+ propValues.add("red");
+ propValues.add("green");
+ propValues.add("pink");
+ properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
+ Properties props = FACTORY.createPropertiesData(properties);
+
+ // try wrong value
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ fail("TypeValidator should throw CMISConstraintException if choice value is not in list of valid values");
+ } catch (Exception e) {
+ assertTrue(e instanceof CmisConstraintException);
+ }
+
+ properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
+ propValues = new ArrayList<String>();
+ propValues.add("red");
+ propValues.add("green");
+ propValues.add("blue");
+ properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
+ props = FACTORY.createPropertiesData(properties);
+
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ } catch (Exception e) {
+ fail("TypeValidator should not throw CMISConstraintException if choice value is in list of valid values"
+ + e);
+ }
+ }
+
+ @Test
+ public void testHierachicalPickListValidationSingleValue() {
+ TypeDefinition typeDef = buildTypeWithHierachicalPickList(Cardinality.SINGLE);
+
+ List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
+ properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, "frankfurt"));
+ Properties props = FACTORY.createPropertiesData(properties);
+
+ // try wrong value
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ fail("TypeValidator should throw CMISConstraintException if choice value is not in list of valid values");
+ } catch (Exception e) {
+ assertTrue(e instanceof CmisConstraintException);
+ }
+
+ properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
+ properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, "munich"));
+ props = FACTORY.createPropertiesData(properties);
+
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ } catch (Exception e) {
+ fail("TypeValidator should not throw CMISConstraintException if choice value is in list of valid values"
+ + e);
+ }
+ }
+
+ @Test
+ public void testHierachicalPickListValidationMultiValue() {
+ TypeDefinition typeDef = buildTypeWithHierachicalPickList(Cardinality.MULTI);
+
+ List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
+ List<String> propValues = new ArrayList<String>();
+ propValues.add("stuttgart");
+ propValues.add("hintertupfingen");
+ properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
+ Properties props = FACTORY.createPropertiesData(properties);
+
+ // try wrong value
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ fail("TypeValidator should throw CMISConstraintException if choice value is not in list of valid values");
+ } catch (Exception e) {
+ assertTrue(e instanceof CmisConstraintException);
+ }
+
+ properties = createPropertiesWithNameAndTypeId(PICK_LIST_DOC_TYPE);
+ propValues = new ArrayList<String>();
+ propValues.add("munich");
+ propValues.add("walldorf");
+ properties.add(FACTORY.createPropertyStringData(PICK_LIST_PROP_DEF, propValues));
+ props = FACTORY.createPropertiesData(properties);
+
+ try {
+ TypeValidator.validateProperties(typeDef, props, true);
+ } catch (Exception e) {
+ fail("TypeValidator should not throw CMISConstraintException if choice value is in list of valid values"
+ + e);
+ }
+ }
+
+ @Test
+ public void testInheritedPropertyValidation() {
+ TypeManager tm = buildInheritedTypes();
+ TypeDefinition superType = tm.getTypeById(DOC_TYPE_SUPER).getTypeDefinition();
+ TypeDefinition subType = tm.getTypeById(DOC_TYPE_SUB).getTypeDefinition();
+ ;
+
+ List<PropertyData<?>> properties = createPropertiesWithNameAndTypeId(DOC_TYPE_SUB);
+ properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE_SUB,
+ "A String property with quite a long value exceeding the max. length."));
+ Properties props = FACTORY.createPropertiesData(properties);
+
+ // try exceeding string length on org property
+ try {
+ TypeValidator.validateProperties(superType, props, true);
+ fail("TypeValidator should throw CMISConstraintException if max string length is exceeded");
+ } catch (Exception e) {
+ assertTrue(e instanceof CmisConstraintException);
+ }
+
+ // try exceeding string length on inherited property
+ properties = createPropertiesWithNameAndTypeId(DOC_TYPE_SUB);
+ properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE_SUPER,
+ "A String property with quite a long value exceeding the max. length."));
+ props = FACTORY.createPropertiesData(properties);
+
+ // try exceeding string length
+ try {
+ TypeValidator.validateProperties(subType, props, true);
+ fail("TypeValidator should throw CMISConstraintException if max string length is exceeded");
+ } catch (Exception e) {
+ assertTrue(e instanceof CmisConstraintException);
+ }
+
+ properties = createPropertiesWithNameAndTypeId(DOC_TYPE_SUB);
+ properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE_SUPER, "super val"));
+ properties.add(FACTORY.createPropertyStringData(STRING_PROP_TYPE_SUB, "sub val"));
+ props = FACTORY.createPropertiesData(properties);
+ try {
+ TypeValidator.validateProperties(subType, props, true);
+ } catch (Exception e) {
+ fail("TypeValidator should not throw exception if string length is valid" + e);
+ }
+ }
+
+ /**
+ * create sample type
+ *
+ * @return type definition of sample type
+ */
+ private static InMemoryDocumentTypeDefinition buildMyType() {
+ // always add CMIS default types
+
+ InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(MY_DOC_TYPE,
+ "Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ // create a boolean property definition
+
+ Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+
+ PropertyDefinition<Boolean> prop = PropertyCreationHelper.createBooleanDefinition("BooleanProp",
+ "Sample Boolean Property");
+ ((PropertyBooleanDefinitionImpl) prop).setIsRequired(true);
+ propertyDefinitions.put(prop.getId(), prop);
+
+ prop = PropertyCreationHelper.createBooleanMultiDefinition("BooleanPropMV",
+ "Sample Boolean multi-value Property");
+ propertyDefinitions.put(prop.getId(), prop);
+
+ PropertyDateTimeDefinitionImpl prop2 = PropertyCreationHelper.createDateTimeDefinition("DateTimeProp",
+ "Sample DateTime Property");
+ propertyDefinitions.put(prop2.getId(), prop2);
+
+ prop2 = PropertyCreationHelper.createDateTimeMultiDefinition("DateTimePropMV",
+ "Sample DateTime multi-value Property");
+ propertyDefinitions.put(prop2.getId(), prop2);
+
+ PropertyDecimalDefinitionImpl prop3 = PropertyCreationHelper.createDecimalDefinition("DecimalProp",
+ "Sample Decimal Property");
+ propertyDefinitions.put(prop3.getId(), prop3);
+
+ prop3 = PropertyCreationHelper.createDecimalDefinition("DecimalPropMV", "Sample Decimal multi-value Property");
+ propertyDefinitions.put(prop3.getId(), prop3);
+
+ PropertyHtmlDefinitionImpl prop4 = PropertyCreationHelper.createHtmlDefinition("HtmlProp",
+ "Sample Html Property");
+ propertyDefinitions.put(prop4.getId(), prop4);
+
+ prop4 = PropertyCreationHelper.createHtmlDefinition("HtmlPropMV", "Sample Html multi-value Property");
+ propertyDefinitions.put(prop4.getId(), prop4);
+
+ PropertyIdDefinitionImpl prop5 = PropertyCreationHelper.createIdDefinition("IdProp", "Sample Id Property");
+ propertyDefinitions.put(prop5.getId(), prop5);
+
+ prop5 = PropertyCreationHelper.createIdDefinition("IdPropMV", "Sample Id Html multi-value Property");
+ propertyDefinitions.put(prop5.getId(), prop5);
+
+ PropertyIntegerDefinitionImpl prop6 = PropertyCreationHelper.createIntegerDefinition("IntProp",
+ "Sample Int Property");
+ propertyDefinitions.put(prop6.getId(), prop6);
+
+ prop6 = PropertyCreationHelper.createIntegerDefinition("IntPropMV", "Sample Int multi-value Property");
+ propertyDefinitions.put(prop6.getId(), prop6);
+
+ PropertyStringDefinitionImpl prop7 = PropertyCreationHelper.createStringDefinition("StringProp",
+ "Sample String Property");
+ propertyDefinitions.put(prop7.getId(), prop7);
+
+ PropertyUriDefinitionImpl prop8 = PropertyCreationHelper.createUriDefinition("UriProp", "Sample Uri Property");
+ propertyDefinitions.put(prop8.getId(), prop8);
+
+ prop8 = PropertyCreationHelper.createUriDefinition("UriPropMV", "Sample Uri multi-value Property");
+ propertyDefinitions.put(prop8.getId(), prop8);
+
+ PropertyStringDefinitionImpl prop9 = PropertyCreationHelper.createStringDefinition(PICK_LIST_PROP_DEF,
+ "Sample Pick List Property");
+
+ PropertyCreationHelper.addElemToPicklist(prop9, "red");
+ PropertyCreationHelper.addElemToPicklist(prop9, "green");
+ PropertyCreationHelper.addElemToPicklist(prop9, "blue");
+ PropertyCreationHelper.addElemToPicklist(prop9, "black");
+ PropertyCreationHelper.setDefaultValue(prop9, "blue");
+
+ cmisType.setPropertyDefinitions(propertyDefinitions);
+
+ return cmisType;
+ }
+
+ private static InMemoryDocumentTypeDefinition buildTypeWithStringProp() {
+ InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(STRING_DOC_TYPE,
+ "String Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ // create a String property definition
+
+ PropertyStringDefinitionImpl propDef = PropertyCreationHelper.createStringDefinition(STRING_PROP_TYPE,
+ "Sample String Property");
+ propDef.setMaxLength(BigInteger.valueOf(10));
+ propertyDefinitions.put(propDef.getId(), propDef);
+
+ cmisType.setPropertyDefinitions(propertyDefinitions);
+
+ return cmisType;
+ }
+
+ private static InMemoryDocumentTypeDefinition buildTypeWithIntegerProp() {
+ InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(INT_DOC_TYPE,
+ "Int Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ // create a String property definition
+
+ PropertyIntegerDefinitionImpl propDef = PropertyCreationHelper.createIntegerDefinition(INT_PROP_TYPE,
+ "Sample Integer Property");
+ propDef.setMinValue(BigInteger.valueOf(-1));
+ propDef.setMaxValue(BigInteger.valueOf(1));
+ propertyDefinitions.put(propDef.getId(), propDef);
+
+ cmisType.setPropertyDefinitions(propertyDefinitions);
+
+ return cmisType;
+ }
+
+ private static InMemoryDocumentTypeDefinition buildTypeWithDecimalProp() {
+ InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(DECIMAL_DOC_TYPE,
+ "Decimal Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ // create a String property definition
+
+ PropertyDecimalDefinitionImpl propDef = PropertyCreationHelper.createDecimalDefinition(DECIMAL_PROP_TYPE,
+ "Sample Decimal Property");
+ propDef.setMinValue(BigDecimal.valueOf(-1.5));
+ propDef.setMaxValue(BigDecimal.valueOf(1.5));
+ propertyDefinitions.put(propDef.getId(), propDef);
+
+ cmisType.setPropertyDefinitions(propertyDefinitions);
+
+ return cmisType;
+ }
+
+ public static InMemoryDocumentTypeDefinition buildTypeWithPickList(Cardinality cardinality) {
+ InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(PICK_LIST_DOC_TYPE,
+ "PickList Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ // create a String property definition
+
+ PropertyStringDefinitionImpl propDef = PropertyCreationHelper.createStringDefinition(PICK_LIST_PROP_DEF,
+ "Sample PickList (choice) Property");
+ List<Choice<String>> choiceList = new ArrayList<Choice<String>>();
+ ChoiceImpl<String> elem = new ChoiceImpl<String>();
+ elem.setValue(Collections.singletonList("red"));
+ elem.setDisplayName("Red");
+ choiceList.add(elem);
+ elem = new ChoiceImpl<String>();
+ elem.setValue(Collections.singletonList("green"));
+ elem.setDisplayName("Green");
+ choiceList.add(elem);
+ elem = new ChoiceImpl<String>();
+ elem.setValue(Collections.singletonList("blue"));
+ elem.setDisplayName("Blue");
+ choiceList.add(elem);
+ elem = new ChoiceImpl<String>();
+ elem.setValue(Collections.singletonList("black"));
+ elem.setDisplayName("Black");
+ choiceList.add(elem);
+ propDef.setChoices(choiceList);
+ propDef.setDefaultValue(Collections.singletonList("blue"));
+ propDef.setCardinality(cardinality);
+ propertyDefinitions.put(propDef.getId(), propDef);
+ cmisType.setPropertyDefinitions(propertyDefinitions);
+
+ return cmisType;
+ }
+
+ public static InMemoryDocumentTypeDefinition buildTypeWithMultiPickList() {
+ InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(PICK_LIST_DOC_TYPE,
+ "PickList Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ // create a String property definition
+
+ PropertyStringDefinitionImpl propDef = PropertyCreationHelper.createStringDefinition(PICK_LIST_PROP_DEF,
+ "Sample PickList (choice) Property");
+ List<Choice<String>> choiceList = new ArrayList<Choice<String>>();
+ ChoiceImpl<String> elem = new ChoiceImpl<String>();
+ List<String> valueList = new ArrayList<String>();
+ valueList.add("red");
+ valueList.add("green");
+ valueList.add("blue");
+ elem.setValue(valueList);
+ elem.setDisplayName("RGB");
+ choiceList.add(elem);
+
+ elem = new ChoiceImpl<String>();
+ valueList = new ArrayList<String>();
+ valueList.add("cyan");
+ valueList.add("magenta");
+ valueList.add("yellow");
+ valueList.add("black");
+ elem.setValue(valueList);
+ elem.setDisplayName("CMYK");
+ choiceList.add(elem);
+
+ propDef.setChoices(choiceList);
+ // propDef.setDefaultValue(...);
+ propDef.setCardinality(Cardinality.MULTI);
+ propertyDefinitions.put(propDef.getId(), propDef);
+ cmisType.setPropertyDefinitions(propertyDefinitions);
+
+ return cmisType;
+ }
+
+ public static InMemoryDocumentTypeDefinition buildTypeWithHierachicalPickList(Cardinality cardinality) {
+ InMemoryDocumentTypeDefinition cmisType = new InMemoryDocumentTypeDefinition(PICK_LIST_DOC_TYPE,
+ "PickList Document Type for Validation", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ // create a String property definition
+
+ // Create a two-level pick list with an outer property list state and an
+ // inner
+ // list of city
+ PropertyStringDefinitionImpl propDef = PropertyCreationHelper.createStringDefinition(PICK_LIST_PROP_DEF,
+ "Sample PickList (choice) Property");
+ List<Choice<String>> choiceListOuter = new ArrayList<Choice<String>>();
+
+ ChoiceImpl<String> elemOuter = new ChoiceImpl<String>();
+ elemOuter.setDisplayName("Bavaria");
+ List<Choice<String>> choiceListInner = new ArrayList<Choice<String>>();
+ ChoiceImpl<String> elemInner = new ChoiceImpl<String>();
+ elemInner.setDisplayName("Munich");
+ elemInner.setValue(Collections.singletonList("munich"));
+ choiceListInner.add(elemInner);
+ elemInner = new ChoiceImpl<String>();
+ elemInner.setDisplayName("Ingolstadt");
+ elemInner.setValue(Collections.singletonList("ingolstadt"));
+ choiceListInner.add(elemInner);
+ elemInner = new ChoiceImpl<String>();
+ elemInner.setDisplayName("Passau");
+ elemInner.setValue(Collections.singletonList("passau"));
+ choiceListInner.add(elemInner);
+ elemOuter.setChoice(choiceListInner);
+ choiceListOuter.add(elemOuter);
+
+ elemOuter = new ChoiceImpl<String>();
+ elemOuter.setDisplayName("Baden Wurtemberg");
+ choiceListInner = new ArrayList<Choice<String>>();
+ elemInner = new ChoiceImpl<String>();
+ elemInner.setDisplayName("Stuttgart");
+ elemInner.setValue(Collections.singletonList("stuttgart"));
+ choiceListInner.add(elemInner);
+ elemInner = new ChoiceImpl<String>();
+ elemInner.setDisplayName("Karlsruhe");
+ elemInner.setValue(Collections.singletonList("karlsruhe"));
+ choiceListInner.add(elemInner);
+ elemInner = new ChoiceImpl<String>();
+ elemInner.setDisplayName("Walldorf");
+ elemInner.setValue(Collections.singletonList("walldorf"));
+ choiceListInner.add(elemInner);
+ elemOuter.setChoice(choiceListInner);
+ choiceListOuter.add(elemOuter);
+
+ propDef.setChoices(choiceListOuter);
+ propDef.setCardinality(cardinality);
+ propertyDefinitions.put(propDef.getId(), propDef);
+ cmisType.setPropertyDefinitions(propertyDefinitions);
+
+ return cmisType;
+ }
+
+ private static TypeManager buildInheritedTypes() {
+
+ TypeManager tm = new TypeManager();
+ tm.initTypeSystem(null); // create CMIS default types
+
+ // create super type
+ InMemoryDocumentTypeDefinition cmisSuperType = new InMemoryDocumentTypeDefinition(DOC_TYPE_SUPER,
+ "Document Type With a child", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ // create a String property definition
+ PropertyStringDefinitionImpl propDef = PropertyCreationHelper.createStringDefinition(STRING_PROP_TYPE_SUPER,
+ "Sample String Property SuperType");
+ propDef.setMaxLength(BigInteger.valueOf(10));
+ propertyDefinitions.put(propDef.getId(), propDef);
+ cmisSuperType.setPropertyDefinitions(propertyDefinitions);
+
+ // create sub type
+ InMemoryDocumentTypeDefinition cmisSubType = new InMemoryDocumentTypeDefinition(DOC_TYPE_SUB,
+ "Document Type With a parent", cmisSuperType);
+
+ propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ // create a String property definition
+ propDef = PropertyCreationHelper.createStringDefinition(STRING_PROP_TYPE_SUB, "Sample String Property Subtype");
+ propDef.setMaxLength(BigInteger.valueOf(20));
+ propertyDefinitions.put(propDef.getId(), propDef);
+ cmisSubType.setPropertyDefinitions(propertyDefinitions);
- return tm;
- }
+ tm.addTypeDefinition(cmisSuperType);
+ tm.addTypeDefinition(cmisSubType);
+
+ return tm;
+ }
}
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/UnitTestTypeSystemCreator.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/UnitTestTypeSystemCreator.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/UnitTestTypeSystemCreator.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/UnitTestTypeSystemCreator.java Fri Apr 16 14:00:23 2010
@@ -46,229 +46,238 @@ import org.apache.chemistry.opencmis.inm
import org.apache.chemistry.opencmis.inmemory.types.PropertyCreationHelper;
public class UnitTestTypeSystemCreator implements TypeCreator {
- static public List<TypeDefinition> singletonTypes = buildTypesList();
- public static final String COMPLEX_TYPE = "ComplexType";
- public static final String TOPLEVEL_TYPE = "DocumentTopLevel";
- public static final String LEVEL1_TYPE = "DocumentLevel1";;
- public static final String LEVEL2_TYPE = "DocumentLevel2";
- public static final String VERSION_DOCUMENT_TYPE_ID = "MyVersionedType";
- public static final String VERSION_PROPERTY_ID = "StringProp";
-
- /**
- * in the public interface of this class we return the singleton containing the required types
- * for testing
- */
- public List<TypeDefinition> createTypesList() {
- return singletonTypes;
- }
-
- public static List<TypeDefinition> getTypesList() {
- return singletonTypes;
- }
-
- static public TypeDefinition getTypeById(String typeId) {
- for (TypeDefinition typeDef : singletonTypes)
- if (typeDef.getId().equals(typeId))
- return typeDef;
- return null;
- }
-
- /**
- * create root types and a collection of sample types
- *
- * @return typesMap map filled with created types
- */
- private static List<TypeDefinition> buildTypesList() {
- // always add CMIS default types
- List<TypeDefinition> typesList = new LinkedList<TypeDefinition>();
-
- InMemoryDocumentTypeDefinition cmisType1 = new InMemoryDocumentTypeDefinition("MyDocType1",
- "My Type 1 Level 1", InMemoryDocumentTypeDefinition.getRootDocumentType());
- typesList.add(cmisType1);
-
-
- InMemoryDocumentTypeDefinition cmisType2 = new InMemoryDocumentTypeDefinition("MyDocType2",
- "My Type 2 Level 1", InMemoryDocumentTypeDefinition.getRootDocumentType());
- typesList.add(cmisType2);
-
- InMemoryDocumentTypeDefinition cmisType11 = new InMemoryDocumentTypeDefinition("MyDocType1.1",
- "My Type 3 Level 2", cmisType1);
- typesList.add(cmisType11);
-
- InMemoryDocumentTypeDefinition cmisType111 = new InMemoryDocumentTypeDefinition("MyDocType1.1.1",
- "My Type 4 Level 3", cmisType11);
- typesList.add(cmisType111);
-
- InMemoryDocumentTypeDefinition cmisType112 = new InMemoryDocumentTypeDefinition("MyDocType1.1.2",
- "My Type 5 Level 3", cmisType11);
- typesList.add(cmisType112);
-
- InMemoryDocumentTypeDefinition cmisType12 = new InMemoryDocumentTypeDefinition("MyDocType1.2",
- "My Type 6 Level 2", cmisType1);
- typesList.add(cmisType12);
-
- InMemoryDocumentTypeDefinition cmisType21 = new InMemoryDocumentTypeDefinition("MyDocType2.1",
- "My Type 7 Level 2", cmisType2);
- typesList.add(cmisType21);
-
- InMemoryDocumentTypeDefinition cmisType22 = new InMemoryDocumentTypeDefinition("MyDocType2.2",
- "My Type 8 Level 2", cmisType2);
- typesList.add(cmisType22);
- InMemoryDocumentTypeDefinition cmisType23 = new InMemoryDocumentTypeDefinition("MyDocType2.3",
- "My Type 9 Level 2", cmisType2);
- typesList.add(cmisType23);
- InMemoryDocumentTypeDefinition cmisType24 = new InMemoryDocumentTypeDefinition("MyDocType2.4",
- "My Type 10 Level 2", cmisType2);
- typesList.add(cmisType24);
- InMemoryDocumentTypeDefinition cmisType25 = new InMemoryDocumentTypeDefinition("MyDocType2.5",
- "My Type 11 Level 2", cmisType2);
- typesList.add(cmisType25);
-
- InMemoryDocumentTypeDefinition cmisType26 = new InMemoryDocumentTypeDefinition("MyDocType2.6",
- "My Type 12 Level 2", cmisType2);
- typesList.add(cmisType26);
- InMemoryDocumentTypeDefinition cmisType27 = new InMemoryDocumentTypeDefinition("MyDocType2.7",
- "My Type 13 Level 2", cmisType2);
- typesList.add(cmisType27);
- InMemoryDocumentTypeDefinition cmisType28 = new InMemoryDocumentTypeDefinition("MyDocType2.8",
- "My Type 14 Level 2", cmisType2);
- typesList.add(cmisType28);
- InMemoryDocumentTypeDefinition cmisType29 = new InMemoryDocumentTypeDefinition("MyDocType2.9",
- "My Type 15 Level 2", cmisType2);
- typesList.add(cmisType29);
-
- // create a complex type with properties
- InMemoryDocumentTypeDefinition cmisComplexType = new InMemoryDocumentTypeDefinition(COMPLEX_TYPE,
- "Complex type with properties, Level 1", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- // create a boolean property definition
-
- Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
-
- PropertyDefinition<Boolean> prop = PropertyCreationHelper.createBooleanDefinition("BooleanProp", "Sample Boolean Property");
- propertyDefinitions.put(prop.getId(), prop);
-
- prop = PropertyCreationHelper.createBooleanMultiDefinition("BooleanPropMV", "Sample Boolean multi-value Property");
- propertyDefinitions.put(prop.getId(), prop);
-
- PropertyDateTimeDefinitionImpl prop2 = PropertyCreationHelper.createDateTimeDefinition("DateTimeProp", "Sample DateTime Property");
- propertyDefinitions.put(prop2.getId(), prop2);
-
- prop2 = PropertyCreationHelper.createDateTimeMultiDefinition("DateTimePropMV", "Sample DateTime multi-value Property");
- propertyDefinitions.put(prop2.getId(), prop2);
-
- PropertyDecimalDefinitionImpl prop3 = PropertyCreationHelper.createDecimalDefinition("DecimalProp", "Sample Decimal Property");
- propertyDefinitions.put(prop3.getId(), prop3);
-
- prop3 = PropertyCreationHelper.createDecimalDefinition("DecimalPropMV", "Sample Decimal multi-value Property");
- propertyDefinitions.put(prop3.getId(), prop3);
-
- PropertyHtmlDefinitionImpl prop4 = PropertyCreationHelper.createHtmlDefinition("HtmlProp", "Sample Html Property");
- propertyDefinitions.put(prop4.getId(), prop4);
-
- prop4 = PropertyCreationHelper.createHtmlDefinition("HtmlPropMV", "Sample Html multi-value Property");
- propertyDefinitions.put(prop4.getId(), prop4);
-
- PropertyIdDefinitionImpl prop5 = PropertyCreationHelper.createIdDefinition("IdProp", "Sample Id Property");
- propertyDefinitions.put(prop5.getId(), prop5);
-
- prop5 = PropertyCreationHelper.createIdDefinition("IdPropMV", "Sample Id Html multi-value Property");
- propertyDefinitions.put(prop5.getId(), prop5);
-
- PropertyIntegerDefinitionImpl prop6 = PropertyCreationHelper.createIntegerDefinition("IntProp", "Sample Int Property");
- propertyDefinitions.put(prop6.getId(), prop6);
-
- prop6 = PropertyCreationHelper.createIntegerDefinition("IntPropMV", "Sample Int multi-value Property");
- propertyDefinitions.put(prop6.getId(), prop6);
-
- PropertyStringDefinitionImpl prop7 = PropertyCreationHelper.createStringDefinition("StringProp", "Sample String Property");
- propertyDefinitions.put(prop7.getId(), prop7);
-
- PropertyUriDefinitionImpl prop8 = PropertyCreationHelper.createUriDefinition("UriProp", "Sample Uri Property");
- propertyDefinitions.put(prop8.getId(), prop8);
-
- prop8 = PropertyCreationHelper.createUriDefinition("UriPropMV", "Sample Uri multi-value Property");
- propertyDefinitions.put(prop8.getId(), prop8);
-
- PropertyStringDefinitionImpl prop9 = PropertyCreationHelper.createStringDefinition("PickListProp", "Sample Pick List Property");
- List<Choice<String>> choiceList = new ArrayList<Choice<String>>();
- ChoiceImpl<String> elem = new ChoiceImpl<String>();
- elem.setValue(Collections.singletonList("red"));
- choiceList.add(elem);
- elem = new ChoiceImpl<String>();
- elem.setValue(Collections.singletonList("green"));
- choiceList.add(elem);
- elem = new ChoiceImpl<String>();
- elem.setValue(Collections.singletonList("blue"));
- choiceList.add(elem);
- elem = new ChoiceImpl<String>();
- elem.setValue(Collections.singletonList("black"));
- choiceList.add(elem);
- prop9.setChoices(choiceList);
- prop9.setDefaultValue(Collections.singletonList("blue"));
-
- /* try short form: * /
- PropertyCreationHelper.addElemToPicklist(prop9, "red");
- PropertyCreationHelper.addElemToPicklist(prop9, "green");
- PropertyCreationHelper.addElemToPicklist(prop9, "blue");
- PropertyCreationHelper.addElemToPicklist(prop9, "black");
- PropertyCreationHelper.setDefaultValue(prop9, "blue");
- /* */
-
- cmisComplexType.addCustomPropertyDefinitions(propertyDefinitions);
-
- // add type to types collection
- typesList.add(cmisComplexType);
-
- // create a type hierarchy with inherited properties
- InMemoryDocumentTypeDefinition cmisDocTypeTopLevel = new InMemoryDocumentTypeDefinition(TOPLEVEL_TYPE,
- "Document type with properties, Level 1", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- InMemoryDocumentTypeDefinition cmisDocTypeLevel1 = new InMemoryDocumentTypeDefinition(LEVEL1_TYPE,
- "Document type with inherited properties, Level 2", cmisDocTypeTopLevel);
-
- InMemoryDocumentTypeDefinition cmisDocTypeLevel2 = new InMemoryDocumentTypeDefinition(LEVEL2_TYPE,
- "Document type with inherited properties, Level 3", cmisDocTypeLevel1);
-
- propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- PropertyStringDefinitionImpl propTop = PropertyCreationHelper.createStringDefinition("StringPropTopLevel", "Sample String Property");
- propertyDefinitions.put(propTop.getId(), propTop);
- cmisDocTypeTopLevel.addCustomPropertyDefinitions(propertyDefinitions);
-
- propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- PropertyStringDefinitionImpl propLevel1 = PropertyCreationHelper.createStringDefinition("StringPropLevel1", "String Property Level 1");
- propertyDefinitions.put(propLevel1.getId(), propLevel1);
- cmisDocTypeLevel1.addCustomPropertyDefinitions(propertyDefinitions);
-
- propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
- PropertyStringDefinitionImpl propLevel2 = PropertyCreationHelper.createStringDefinition("StringPropLevel2", "String Property Level 2");
- propertyDefinitions.put(propLevel2.getId(), propLevel2);
- cmisDocTypeLevel2.addCustomPropertyDefinitions(propertyDefinitions);
-
-
- // create a versioned type with properties
- InMemoryDocumentTypeDefinition cmisVersionedType = new InMemoryDocumentTypeDefinition(VERSION_DOCUMENT_TYPE_ID,
- "VersionedType", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- // create a single String property definition
-
- propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
-
- PropertyStringDefinitionImpl prop1 = PropertyCreationHelper.createStringDefinition(VERSION_PROPERTY_ID, "Sample String Property");
- propertyDefinitions.put(prop1.getId(), prop1);
-
- cmisVersionedType.addCustomPropertyDefinitions(propertyDefinitions);
- cmisVersionedType.setIsVersionable(true); // make it a versionable type;
-
- // add type to types collection
- typesList.add(cmisDocTypeTopLevel);
- typesList.add(cmisDocTypeLevel1);
- typesList.add(cmisDocTypeLevel2);
- typesList.add(cmisVersionedType);
+ static public List<TypeDefinition> singletonTypes = buildTypesList();
+ public static final String COMPLEX_TYPE = "ComplexType";
+ public static final String TOPLEVEL_TYPE = "DocumentTopLevel";
+ public static final String LEVEL1_TYPE = "DocumentLevel1";;
+ public static final String LEVEL2_TYPE = "DocumentLevel2";
+ public static final String VERSION_DOCUMENT_TYPE_ID = "MyVersionedType";
+ public static final String VERSION_PROPERTY_ID = "StringProp";
+
+ /**
+ * in the public interface of this class we return the singleton containing
+ * the required types for testing
+ */
+ public List<TypeDefinition> createTypesList() {
+ return singletonTypes;
+ }
+
+ public static List<TypeDefinition> getTypesList() {
+ return singletonTypes;
+ }
+
+ static public TypeDefinition getTypeById(String typeId) {
+ for (TypeDefinition typeDef : singletonTypes)
+ if (typeDef.getId().equals(typeId))
+ return typeDef;
+ return null;
+ }
+
+ /**
+ * create root types and a collection of sample types
+ *
+ * @return typesMap map filled with created types
+ */
+ private static List<TypeDefinition> buildTypesList() {
+ // always add CMIS default types
+ List<TypeDefinition> typesList = new LinkedList<TypeDefinition>();
+
+ InMemoryDocumentTypeDefinition cmisType1 = new InMemoryDocumentTypeDefinition("MyDocType1",
+ "My Type 1 Level 1", InMemoryDocumentTypeDefinition.getRootDocumentType());
+ typesList.add(cmisType1);
+
+ InMemoryDocumentTypeDefinition cmisType2 = new InMemoryDocumentTypeDefinition("MyDocType2",
+ "My Type 2 Level 1", InMemoryDocumentTypeDefinition.getRootDocumentType());
+ typesList.add(cmisType2);
+
+ InMemoryDocumentTypeDefinition cmisType11 = new InMemoryDocumentTypeDefinition("MyDocType1.1",
+ "My Type 3 Level 2", cmisType1);
+ typesList.add(cmisType11);
+
+ InMemoryDocumentTypeDefinition cmisType111 = new InMemoryDocumentTypeDefinition("MyDocType1.1.1",
+ "My Type 4 Level 3", cmisType11);
+ typesList.add(cmisType111);
+
+ InMemoryDocumentTypeDefinition cmisType112 = new InMemoryDocumentTypeDefinition("MyDocType1.1.2",
+ "My Type 5 Level 3", cmisType11);
+ typesList.add(cmisType112);
+
+ InMemoryDocumentTypeDefinition cmisType12 = new InMemoryDocumentTypeDefinition("MyDocType1.2",
+ "My Type 6 Level 2", cmisType1);
+ typesList.add(cmisType12);
+
+ InMemoryDocumentTypeDefinition cmisType21 = new InMemoryDocumentTypeDefinition("MyDocType2.1",
+ "My Type 7 Level 2", cmisType2);
+ typesList.add(cmisType21);
+
+ InMemoryDocumentTypeDefinition cmisType22 = new InMemoryDocumentTypeDefinition("MyDocType2.2",
+ "My Type 8 Level 2", cmisType2);
+ typesList.add(cmisType22);
+ InMemoryDocumentTypeDefinition cmisType23 = new InMemoryDocumentTypeDefinition("MyDocType2.3",
+ "My Type 9 Level 2", cmisType2);
+ typesList.add(cmisType23);
+ InMemoryDocumentTypeDefinition cmisType24 = new InMemoryDocumentTypeDefinition("MyDocType2.4",
+ "My Type 10 Level 2", cmisType2);
+ typesList.add(cmisType24);
+ InMemoryDocumentTypeDefinition cmisType25 = new InMemoryDocumentTypeDefinition("MyDocType2.5",
+ "My Type 11 Level 2", cmisType2);
+ typesList.add(cmisType25);
+
+ InMemoryDocumentTypeDefinition cmisType26 = new InMemoryDocumentTypeDefinition("MyDocType2.6",
+ "My Type 12 Level 2", cmisType2);
+ typesList.add(cmisType26);
+ InMemoryDocumentTypeDefinition cmisType27 = new InMemoryDocumentTypeDefinition("MyDocType2.7",
+ "My Type 13 Level 2", cmisType2);
+ typesList.add(cmisType27);
+ InMemoryDocumentTypeDefinition cmisType28 = new InMemoryDocumentTypeDefinition("MyDocType2.8",
+ "My Type 14 Level 2", cmisType2);
+ typesList.add(cmisType28);
+ InMemoryDocumentTypeDefinition cmisType29 = new InMemoryDocumentTypeDefinition("MyDocType2.9",
+ "My Type 15 Level 2", cmisType2);
+ typesList.add(cmisType29);
+
+ // create a complex type with properties
+ InMemoryDocumentTypeDefinition cmisComplexType = new InMemoryDocumentTypeDefinition(COMPLEX_TYPE,
+ "Complex type with properties, Level 1", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ // create a boolean property definition
+
+ Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+
+ PropertyDefinition<Boolean> prop = PropertyCreationHelper.createBooleanDefinition("BooleanProp",
+ "Sample Boolean Property");
+ propertyDefinitions.put(prop.getId(), prop);
+
+ prop = PropertyCreationHelper.createBooleanMultiDefinition("BooleanPropMV",
+ "Sample Boolean multi-value Property");
+ propertyDefinitions.put(prop.getId(), prop);
+
+ PropertyDateTimeDefinitionImpl prop2 = PropertyCreationHelper.createDateTimeDefinition("DateTimeProp",
+ "Sample DateTime Property");
+ propertyDefinitions.put(prop2.getId(), prop2);
+
+ prop2 = PropertyCreationHelper.createDateTimeMultiDefinition("DateTimePropMV",
+ "Sample DateTime multi-value Property");
+ propertyDefinitions.put(prop2.getId(), prop2);
+
+ PropertyDecimalDefinitionImpl prop3 = PropertyCreationHelper.createDecimalDefinition("DecimalProp",
+ "Sample Decimal Property");
+ propertyDefinitions.put(prop3.getId(), prop3);
+
+ prop3 = PropertyCreationHelper.createDecimalDefinition("DecimalPropMV", "Sample Decimal multi-value Property");
+ propertyDefinitions.put(prop3.getId(), prop3);
+
+ PropertyHtmlDefinitionImpl prop4 = PropertyCreationHelper.createHtmlDefinition("HtmlProp",
+ "Sample Html Property");
+ propertyDefinitions.put(prop4.getId(), prop4);
+
+ prop4 = PropertyCreationHelper.createHtmlDefinition("HtmlPropMV", "Sample Html multi-value Property");
+ propertyDefinitions.put(prop4.getId(), prop4);
+
+ PropertyIdDefinitionImpl prop5 = PropertyCreationHelper.createIdDefinition("IdProp", "Sample Id Property");
+ propertyDefinitions.put(prop5.getId(), prop5);
+
+ prop5 = PropertyCreationHelper.createIdDefinition("IdPropMV", "Sample Id Html multi-value Property");
+ propertyDefinitions.put(prop5.getId(), prop5);
+
+ PropertyIntegerDefinitionImpl prop6 = PropertyCreationHelper.createIntegerDefinition("IntProp",
+ "Sample Int Property");
+ propertyDefinitions.put(prop6.getId(), prop6);
+
+ prop6 = PropertyCreationHelper.createIntegerDefinition("IntPropMV", "Sample Int multi-value Property");
+ propertyDefinitions.put(prop6.getId(), prop6);
+
+ PropertyStringDefinitionImpl prop7 = PropertyCreationHelper.createStringDefinition("StringProp",
+ "Sample String Property");
+ propertyDefinitions.put(prop7.getId(), prop7);
+
+ PropertyUriDefinitionImpl prop8 = PropertyCreationHelper.createUriDefinition("UriProp", "Sample Uri Property");
+ propertyDefinitions.put(prop8.getId(), prop8);
+
+ prop8 = PropertyCreationHelper.createUriDefinition("UriPropMV", "Sample Uri multi-value Property");
+ propertyDefinitions.put(prop8.getId(), prop8);
+
+ PropertyStringDefinitionImpl prop9 = PropertyCreationHelper.createStringDefinition("PickListProp",
+ "Sample Pick List Property");
+ List<Choice<String>> choiceList = new ArrayList<Choice<String>>();
+ ChoiceImpl<String> elem = new ChoiceImpl<String>();
+ elem.setValue(Collections.singletonList("red"));
+ choiceList.add(elem);
+ elem = new ChoiceImpl<String>();
+ elem.setValue(Collections.singletonList("green"));
+ choiceList.add(elem);
+ elem = new ChoiceImpl<String>();
+ elem.setValue(Collections.singletonList("blue"));
+ choiceList.add(elem);
+ elem = new ChoiceImpl<String>();
+ elem.setValue(Collections.singletonList("black"));
+ choiceList.add(elem);
+ prop9.setChoices(choiceList);
+ prop9.setDefaultValue(Collections.singletonList("blue"));
+
+ /*
+ * try short form: / PropertyCreationHelper.addElemToPicklist(prop9,
+ * "red"); PropertyCreationHelper.addElemToPicklist(prop9, "green");
+ * PropertyCreationHelper.addElemToPicklist(prop9, "blue");
+ * PropertyCreationHelper.addElemToPicklist(prop9, "black");
+ * PropertyCreationHelper.setDefaultValue(prop9, "blue"); /
+ */
+
+ cmisComplexType.addCustomPropertyDefinitions(propertyDefinitions);
+
+ // add type to types collection
+ typesList.add(cmisComplexType);
+
+ // create a type hierarchy with inherited properties
+ InMemoryDocumentTypeDefinition cmisDocTypeTopLevel = new InMemoryDocumentTypeDefinition(TOPLEVEL_TYPE,
+ "Document type with properties, Level 1", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ InMemoryDocumentTypeDefinition cmisDocTypeLevel1 = new InMemoryDocumentTypeDefinition(LEVEL1_TYPE,
+ "Document type with inherited properties, Level 2", cmisDocTypeTopLevel);
+
+ InMemoryDocumentTypeDefinition cmisDocTypeLevel2 = new InMemoryDocumentTypeDefinition(LEVEL2_TYPE,
+ "Document type with inherited properties, Level 3", cmisDocTypeLevel1);
+
+ propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ PropertyStringDefinitionImpl propTop = PropertyCreationHelper.createStringDefinition("StringPropTopLevel",
+ "Sample String Property");
+ propertyDefinitions.put(propTop.getId(), propTop);
+ cmisDocTypeTopLevel.addCustomPropertyDefinitions(propertyDefinitions);
+
+ propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ PropertyStringDefinitionImpl propLevel1 = PropertyCreationHelper.createStringDefinition("StringPropLevel1",
+ "String Property Level 1");
+ propertyDefinitions.put(propLevel1.getId(), propLevel1);
+ cmisDocTypeLevel1.addCustomPropertyDefinitions(propertyDefinitions);
+
+ propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+ PropertyStringDefinitionImpl propLevel2 = PropertyCreationHelper.createStringDefinition("StringPropLevel2",
+ "String Property Level 2");
+ propertyDefinitions.put(propLevel2.getId(), propLevel2);
+ cmisDocTypeLevel2.addCustomPropertyDefinitions(propertyDefinitions);
+
+ // create a versioned type with properties
+ InMemoryDocumentTypeDefinition cmisVersionedType = new InMemoryDocumentTypeDefinition(VERSION_DOCUMENT_TYPE_ID,
+ "VersionedType", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ // create a single String property definition
+
+ propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+
+ PropertyStringDefinitionImpl prop1 = PropertyCreationHelper.createStringDefinition(VERSION_PROPERTY_ID,
+ "Sample String Property");
+ propertyDefinitions.put(prop1.getId(), prop1);
+
+ cmisVersionedType.addCustomPropertyDefinitions(propertyDefinitions);
+ cmisVersionedType.setIsVersionable(true); // make it a versionable type;
+
+ // add type to types collection
+ typesList.add(cmisDocTypeTopLevel);
+ typesList.add(cmisDocTypeLevel1);
+ typesList.add(cmisDocTypeLevel2);
+ typesList.add(cmisVersionedType);
- return typesList;
- }
+ return typesList;
+ }
}
-
-
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersionTestTypeSystemCreator.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/VersionTestTypeSystemCreator.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersionTestTypeSystemCreator.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersionTestTypeSystemCreator.java Fri Apr 16 14:00:23 2010
@@ -31,60 +31,57 @@ import org.apache.chemistry.opencmis.inm
import org.apache.chemistry.opencmis.inmemory.types.PropertyCreationHelper;
public class VersionTestTypeSystemCreator implements TypeCreator {
- static public String VERSION_TEST_DOCUMENT_TYPE_ID = "MyVersionedType";
- static public String PROPERTY_ID = "StringProp";
- static public List<TypeDefinition> singletonTypes = buildTypesList();
-
-
- /**
- * in the public interface of this class we return the singleton containing the required types
- * for testing
- */
- public List<TypeDefinition> createTypesList() {
- return singletonTypes;
- }
-
- public static List<TypeDefinition> getTypesList() {
- return singletonTypes;
- }
-
- static public TypeDefinition getTypeById(String typeId) {
- for (TypeDefinition typeDef : singletonTypes)
- if (typeDef.getId().equals(typeId))
- return typeDef;
- return null;
- }
-
- /**
- * create root types and a collection of sample types
- *
- * @return typesMap map filled with created types
- */
- private static List<TypeDefinition> buildTypesList() {
- // always add CMIS default types
- List<TypeDefinition> typesList = new LinkedList<TypeDefinition>();
-
- // create a complex type with properties
- InMemoryDocumentTypeDefinition cmisComplexType = new InMemoryDocumentTypeDefinition(VERSION_TEST_DOCUMENT_TYPE_ID,
- "VersionedType", InMemoryDocumentTypeDefinition.getRootDocumentType());
-
- // create a boolean property definition
-
- Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
-
- PropertyStringDefinitionImpl prop1 = PropertyCreationHelper.createStringDefinition(PROPERTY_ID, "Sample String Property");
- propertyDefinitions.put(prop1.getId(), prop1);
-
- cmisComplexType.addCustomPropertyDefinitions(propertyDefinitions);
- cmisComplexType.setIsVersionable(true); // make it a versionable type;
-
- // add type to types collection
- typesList.add(cmisComplexType);
-
-
- return typesList;
- }
+ static public String VERSION_TEST_DOCUMENT_TYPE_ID = "MyVersionedType";
+ static public String PROPERTY_ID = "StringProp";
+ static public List<TypeDefinition> singletonTypes = buildTypesList();
+
+ /**
+ * in the public interface of this class we return the singleton containing
+ * the required types for testing
+ */
+ public List<TypeDefinition> createTypesList() {
+ return singletonTypes;
+ }
+
+ public static List<TypeDefinition> getTypesList() {
+ return singletonTypes;
+ }
+
+ static public TypeDefinition getTypeById(String typeId) {
+ for (TypeDefinition typeDef : singletonTypes)
+ if (typeDef.getId().equals(typeId))
+ return typeDef;
+ return null;
+ }
+
+ /**
+ * create root types and a collection of sample types
+ *
+ * @return typesMap map filled with created types
+ */
+ private static List<TypeDefinition> buildTypesList() {
+ // always add CMIS default types
+ List<TypeDefinition> typesList = new LinkedList<TypeDefinition>();
+
+ // create a complex type with properties
+ InMemoryDocumentTypeDefinition cmisComplexType = new InMemoryDocumentTypeDefinition(
+ VERSION_TEST_DOCUMENT_TYPE_ID, "VersionedType", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+ // create a boolean property definition
+
+ Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+
+ PropertyStringDefinitionImpl prop1 = PropertyCreationHelper.createStringDefinition(PROPERTY_ID,
+ "Sample String Property");
+ propertyDefinitions.put(prop1.getId(), prop1);
-}
+ cmisComplexType.addCustomPropertyDefinitions(propertyDefinitions);
+ cmisComplexType.setIsVersionable(true); // make it a versionable type;
+
+ // add type to types collection
+ typesList.add(cmisComplexType);
+ return typesList;
+ }
+}