Changing the way to serialise the type of a property
This commit is contained in:
parent
5fcc630820
commit
df1736f39b
|
@ -44,6 +44,9 @@ public final class PropertyDefinitionImpl implements PropertyDefinition {
|
||||||
private Integer max= null;
|
private Integer max= null;
|
||||||
private Integer min= null;
|
private Integer min= null;
|
||||||
private String regexp= null;
|
private String regexp= null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private Integer linkedType = null;
|
private Integer linkedType = null;
|
||||||
private String linkedClass = null;
|
private String linkedClass = null;
|
||||||
private Integer type=null;
|
private Integer type=null;
|
||||||
|
|
|
@ -0,0 +1,135 @@
|
||||||
|
package org.gcube.informationsystem.types;
|
||||||
|
|
||||||
|
import org.gcube.informationsystem.model.reference.properties.Encrypted;
|
||||||
|
import org.gcube.informationsystem.types.PropertyTypeName.BaseType;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class TypeNameTest {
|
||||||
|
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(TypeNameTest.class);
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testValidBaseType() throws Exception {
|
||||||
|
for(BaseType baseType : BaseType.values()) {
|
||||||
|
BaseType b = BaseType.getBaseTypeFromString(baseType.toString());
|
||||||
|
logger.trace("{} == {}", baseType, b);
|
||||||
|
Assert.assertTrue(baseType == b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void testInvaliBaseType() throws Exception {
|
||||||
|
try {
|
||||||
|
BaseType.getBaseTypeFromString("Map<String, String>");
|
||||||
|
}catch (IllegalArgumentException e) {
|
||||||
|
logger.debug("As expect got {} trying to convert invalid string value to {} Enum. {}", IllegalArgumentException.class.getSimpleName(), BaseType.class.getSimpleName(), e.getMessage());
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkPropertyTypeName(String value, BaseType expectedBaseType) {
|
||||||
|
// logger.debug("Going to convert {} string as {}", value, BasePropertyType.class.getSimpleName());
|
||||||
|
PropertyTypeName basePropertyType = new PropertyTypeName(value);
|
||||||
|
BaseType b = basePropertyType.getBaseType();
|
||||||
|
Assert.assertTrue(expectedBaseType == b);
|
||||||
|
Assert.assertTrue(value.compareTo(basePropertyType.toString())==0);
|
||||||
|
if(basePropertyType.isGenericType()) {
|
||||||
|
logger.debug("{} : BaseType {} - Generic {}", value, basePropertyType.getBaseType(), basePropertyType.getGenericBaseType()!=null ? basePropertyType.getGenericBaseType().toString() : basePropertyType.getGenericClassName());
|
||||||
|
}else {
|
||||||
|
logger.debug("{} == {}", value, basePropertyType.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBasePropertType() {
|
||||||
|
for(BaseType baseType : BaseType.values()) {
|
||||||
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
|
stringBuffer.append(baseType.toString());
|
||||||
|
if(baseType.ordinal()>=BaseType.PROPERTY.ordinal()) {
|
||||||
|
if(baseType == BaseType.PROPERTY) {
|
||||||
|
stringBuffer = new StringBuffer();
|
||||||
|
stringBuffer.append(Encrypted.NAME);
|
||||||
|
checkPropertyTypeName(stringBuffer.toString(), baseType);
|
||||||
|
} else {
|
||||||
|
for(BaseType b : BaseType.values()) {
|
||||||
|
if(b.ordinal()>BaseType.PROPERTY.ordinal()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
sb.append(stringBuffer);
|
||||||
|
sb.append("<");
|
||||||
|
if(baseType == BaseType.MAP) {
|
||||||
|
sb.append(BaseType.STRING.toString());
|
||||||
|
sb.append(",");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(b == BaseType.PROPERTY) {
|
||||||
|
sb.append(Encrypted.NAME);
|
||||||
|
} else {
|
||||||
|
sb.append(b.toString());
|
||||||
|
}
|
||||||
|
sb.append(">");
|
||||||
|
checkPropertyTypeName(sb.toString(), baseType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
checkPropertyTypeName(stringBuffer.toString(), baseType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void assertInvalidBasePropertyType(String value, BaseType expectedBaseType) throws Exception {
|
||||||
|
try {
|
||||||
|
checkPropertyTypeName(value, expectedBaseType);
|
||||||
|
throw new Exception(value + " should not be a valid value");
|
||||||
|
}catch (IllegalArgumentException e) {
|
||||||
|
logger.debug("{} is not a valid value as expected", value);
|
||||||
|
// This is what we want
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testInvalidBasePropertType() throws Exception {
|
||||||
|
for(BaseType baseType : BaseType.values()) {
|
||||||
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
|
stringBuffer.append(baseType.toString());
|
||||||
|
if(baseType.ordinal()>BaseType.PROPERTY.ordinal()) {
|
||||||
|
stringBuffer.append("<");
|
||||||
|
|
||||||
|
switch (baseType) {
|
||||||
|
case MAP:
|
||||||
|
// TODO
|
||||||
|
continue;
|
||||||
|
|
||||||
|
case SET: case LIST:
|
||||||
|
stringBuffer.append(BaseType.SET.toString());
|
||||||
|
stringBuffer.append("<");
|
||||||
|
// TODO
|
||||||
|
stringBuffer.append(">");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
stringBuffer.append(">");
|
||||||
|
assertInvalidBasePropertyType(stringBuffer.toString(), baseType);
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
for(BaseType b : BaseType.values()) {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
sb.append(stringBuffer);
|
||||||
|
sb.append("<");
|
||||||
|
sb.append(b.toString());
|
||||||
|
sb.append(">");
|
||||||
|
assertInvalidBasePropertyType(sb.toString(), baseType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue