diff --git a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java index 574529c49e..23866b1c73 100644 --- a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java +++ b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java @@ -189,7 +189,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean /** * @see #DEFAULT_MAX_STRING_LENGTH */ - private static final void setMaxStringLength(int length, Dialect dialect) + public static final void setMaxStringLength(int length, Dialect dialect) { int max = (dialect instanceof AlfrescoMySQLClusterNDBDialect ? DEFAULT_MAX_STRING_LENGTH_NDB : DEFAULT_MAX_STRING_LENGTH); diff --git a/source/test-java/org/alfresco/repo/domain/propval/PropertyTypeConverterTest.java b/source/test-java/org/alfresco/repo/domain/propval/PropertyTypeConverterTest.java index 9ecfe28b28..d32b5ddbc7 100644 --- a/source/test-java/org/alfresco/repo/domain/propval/PropertyTypeConverterTest.java +++ b/source/test-java/org/alfresco/repo/domain/propval/PropertyTypeConverterTest.java @@ -25,14 +25,17 @@ */ package org.alfresco.repo.domain.propval; -import static org.junit.Assert.assertEquals; - import org.alfresco.repo.domain.schema.SchemaBootstrap; import org.alfresco.test_category.OwnJVMTestsCategory; import org.apache.commons.lang.RandomStringUtils; +import org.hibernate.dialect.MySQLInnoDBDialect; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; +import static org.junit.Assert.assertEquals; + /** * @see PropertyTypeConverter * @@ -42,9 +45,23 @@ import org.junit.experimental.categories.Category; @Category(OwnJVMTestsCategory.class) public class PropertyTypeConverterTest { - + private int stringLen; + + @Before + public void setMaxStringLength() + { + stringLen = SchemaBootstrap.getMaxStringLength(); + SchemaBootstrap.setMaxStringLength(2000, new MySQLInnoDBDialect()); + } + + @After + public void resetMaxStringLength() + { + SchemaBootstrap.setMaxStringLength(stringLen, new MySQLInnoDBDialect()); + } + @Test - public void testGetPersistentType() + public void testGetPersistentTypeForStrings() { DefaultPropertyTypeConverter defaultPropertyTypeConverter = new DefaultPropertyTypeConverter(); @@ -52,12 +69,17 @@ public class PropertyTypeConverterTest PropertyValueEntity.PersistedType persistedType = PropertyValueEntity.getPersistedTypeEnum("test", defaultPropertyTypeConverter); assertEquals(PropertyValueEntity.PersistedType.STRING, persistedType); - // String value with length grater then the DB supported threshold. - String stringValue = RandomStringUtils.randomAlphanumeric(SchemaBootstrap.getMaxStringLength() + 1); - - // Check long string that was truncated (see MNT-17523 for details). + // String value with length greater than the DB supported threshold. + String stringValue = RandomStringUtils.randomAlphanumeric(2001); + // ... persisted as blobs (see MNT-17523 for details). persistedType = PropertyValueEntity.getPersistedTypeEnum(stringValue, defaultPropertyTypeConverter); assertEquals(PropertyValueEntity.PersistedType.SERIALIZABLE, persistedType); + + // String value with length less than the DB supported threshold. + stringValue = RandomStringUtils.randomAlphanumeric(1999); + // ... persisted as strings + persistedType = PropertyValueEntity.getPersistedTypeEnum(stringValue, defaultPropertyTypeConverter); + assertEquals(PropertyValueEntity.PersistedType.STRING, persistedType); } }