Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)

76603: Merged V4.2-BUG-FIX (4.2.3) to HEAD-BUG-FIX (5.0BF)
      75807 : Merged DEV to V4.2-BUG-FIX (4.2.3)
         75768 : MNT-11304 : Type definition response for exif aspect using browser binding is causing some JSON parsers to fail
            - Use default boundaries only for numeric types
         75778 : MNT-11304 : Type definition response for exif aspect using browser binding is causing some JSON parsers to fail 
            - Test for the fix


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@77664 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Mark Rogers
2014-07-22 16:05:18 +00:00
parent b58dfdaebc
commit fb29bcf312
3 changed files with 125 additions and 0 deletions

View File

@@ -23,10 +23,12 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import java.io.File; import java.io.File;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@@ -100,6 +102,7 @@ import org.apache.chemistry.opencmis.commons.impl.dataobjects.CmisExtensionEleme
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl; import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ExtensionDataImpl; import org.apache.chemistry.opencmis.commons.impl.dataobjects.ExtensionDataImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertiesImpl; import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertiesImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDecimalDefinitionImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIdImpl; import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIdImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerDefinitionImpl; import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerDefinitionImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerImpl; import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerImpl;
@@ -2252,4 +2255,63 @@ public class CMISTest
AuthenticationUtil.popAuthentication(); AuthenticationUtil.popAuthentication();
} }
} }
/**
* MNT-11304: Test that Alfresco has no default boundaries for decimals
* @throws Exception
*/
@Test
public void testDecimalDefaultBoundaries() throws Exception
{
AuthenticationUtil.pushAuthentication();
AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
try
{
withCmisService(new CmisServiceCallback<Void>()
{
@Override
public Void execute(CmisService cmisService)
{
List<RepositoryInfo> repositories = cmisService.getRepositoryInfos(null);
assertTrue(repositories.size() > 0);
RepositoryInfo repo = repositories.get(0);
String repositoryId = repo.getId();
TypeDefinition decimalTypeDef = cmisService.getTypeDefinition(repositoryId, "D:tcdm:testdecimalstype", null);
PropertyDecimalDefinitionImpl floatNoBoundsTypeDef =
(PropertyDecimalDefinitionImpl)decimalTypeDef.getPropertyDefinitions().get("tcdm:float");
PropertyDecimalDefinitionImpl doubleNoBoundsTypeDef =
(PropertyDecimalDefinitionImpl)decimalTypeDef.getPropertyDefinitions().get("tcdm:double");
PropertyDecimalDefinitionImpl floatWithBoundsTypeDef =
(PropertyDecimalDefinitionImpl)decimalTypeDef.getPropertyDefinitions().get("tcdm:floatwithbounds");
PropertyDecimalDefinitionImpl doubleWithBoundsTypeDef =
(PropertyDecimalDefinitionImpl)decimalTypeDef.getPropertyDefinitions().get("tcdm:doublewithbounds");
// test that there is not default boundaries for decimals
assertNull(floatNoBoundsTypeDef.getMinValue());
assertNull(floatNoBoundsTypeDef.getMaxValue());
assertNull(doubleNoBoundsTypeDef.getMinValue());
assertNull(doubleNoBoundsTypeDef.getMaxValue());
// test for pre-defined boundaries
assertTrue(floatWithBoundsTypeDef.getMinValue().equals(BigDecimal.valueOf(-10f)));
assertTrue(floatWithBoundsTypeDef.getMaxValue().equals(BigDecimal.valueOf(10f)));
assertTrue(doubleWithBoundsTypeDef.getMinValue().equals(BigDecimal.valueOf(-10d)));
assertTrue(doubleWithBoundsTypeDef.getMaxValue().equals(BigDecimal.valueOf(10d)));
return null;
}
}, CmisVersion.CMIS_1_1);
}
finally
{
AuthenticationUtil.popAuthentication();
}
}
} }

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<model name="tcdm:myDecimalTestModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<!-- Meta-data about the model -->
<description>Test CMIS Decimal for Boundaries Model</description>
<author>SSergey</author>
<version>1.0</version>
<imports>
<!-- Import Alfresco Dictionary Definitions -->
<import uri="http://www.alfresco.org/model/dictionary/1.0"
prefix="d" />
<!-- Import Alfresco Content Domain Model Definitions -->
<import uri="http://www.alfresco.org/model/content/1.0"
prefix="cm" />
</imports>
<namespaces>
<namespace uri="http://testCMISDecimalModel/1.0/"
prefix="tcdm" />
</namespaces>
<types>
<type name="tcdm:testdecimalstype">
<title>Test Decimals Type</title>
<parent>cm:content</parent>
<properties>
<property name="tcdm:float">
<title>Float</title>
<description>Float</description>
<type>d:float</type>
</property>
<property name="tcdm:double">
<title>Double</title>
<description>Double</description>
<type>d:double</type>
</property>
<property name="tcdm:floatwithbounds">
<title>Float With Boundaries</title>
<description>Float With Boundaries</description>
<type>d:float</type>
<constraints>
<constraint type="MINMAX">
<parameter name="minValue"><value>-10</value></parameter>
<parameter name="maxValue"><value>10</value></parameter>
</constraint>
</constraints>
</property>
<property name="tcdm:doublewithbounds">
<title>Double With Boundaries</title>
<description>Double With Boundaries</description>
<type>d:double</type>
<constraints>
<constraint type="MINMAX">
<parameter name="minValue"><value>-10</value></parameter>
<parameter name="maxValue"><value>10</value></parameter>
</constraint>
</constraints>
</property>
</properties>
</type>
</types>
</model>

View File

@@ -7,6 +7,7 @@
<property name="models"> <property name="models">
<list> <list>
<value>opencmis/testcmisinteger_model.xml</value> <value>opencmis/testcmisinteger_model.xml</value>
<value>opencmis/testcmisdecimal_model.xml</value>
<value>opencmis/testcmis_item_model.xml</value> <value>opencmis/testcmis_item_model.xml</value>
<value>tenant/exampleModel.xml</value> <value>tenant/exampleModel.xml</value>
</list> </list>