From de1e940d73a2ac3aee8a821f06eec7a82dce32b9 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Fri, 11 Sep 2009 13:52:33 +0000 Subject: [PATCH] Added String-Class conversions git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@16216 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../datatype/DefaultTypeConverter.java | 26 +++++++++++++++++++ .../datatype/DefaultTypeConverterTest.java | 6 +++++ 2 files changed, 32 insertions(+) diff --git a/source/java/org/alfresco/service/cmr/repository/datatype/DefaultTypeConverter.java b/source/java/org/alfresco/service/cmr/repository/datatype/DefaultTypeConverter.java index 0436df6b42..c8fc999f11 100644 --- a/source/java/org/alfresco/service/cmr/repository/datatype/DefaultTypeConverter.java +++ b/source/java/org/alfresco/service/cmr/repository/datatype/DefaultTypeConverter.java @@ -77,6 +77,7 @@ import org.alfresco.util.VersionNumber; * @author andyh * */ +@SuppressWarnings("unchecked") public class DefaultTypeConverter { /** @@ -94,6 +95,21 @@ public class DefaultTypeConverter // From string // + INSTANCE.addConverter(String.class, Class.class, new TypeConverter.Converter() + { + public Class convert(String source) + { + try + { + return Class.forName(source); + } + catch (ClassNotFoundException e) + { + throw new TypeConversionException("Failed to convert string to class: " + source, e); + } + } + }); + INSTANCE.addConverter(String.class, Boolean.class, new TypeConverter.Converter() { public Boolean convert(String source) @@ -418,6 +434,16 @@ public class DefaultTypeConverter } }); + // From Class + + INSTANCE.addConverter(Class.class, String.class, new TypeConverter.Converter() + { + public String convert(Class source) + { + return source.getName(); + } + }); + // // Number to Subtypes and Date // diff --git a/source/java/org/alfresco/service/cmr/repository/datatype/DefaultTypeConverterTest.java b/source/java/org/alfresco/service/cmr/repository/datatype/DefaultTypeConverterTest.java index daa9ecf5bd..707d4b660a 100644 --- a/source/java/org/alfresco/service/cmr/repository/datatype/DefaultTypeConverterTest.java +++ b/source/java/org/alfresco/service/cmr/repository/datatype/DefaultTypeConverterTest.java @@ -117,6 +117,8 @@ public class DefaultTypeConverterTest extends TestCase // Period assertEquals("period", DefaultTypeConverter.INSTANCE.convert(String.class, new Period("period"))); assertEquals("period|12", DefaultTypeConverter.INSTANCE.convert(String.class, new Period("period|12"))); + // Java Class + assertEquals(this.getClass(), DefaultTypeConverter.INSTANCE.convert(Class.class, this.getClass().getName())); } public void testFromString() @@ -155,6 +157,8 @@ public class DefaultTypeConverterTest extends TestCase assertEquals(new Period("period"), DefaultTypeConverter.INSTANCE.convert(Period.class, "period")); assertEquals(new Period("period|12"), DefaultTypeConverter.INSTANCE.convert(Period.class, "period|12")); + // Java Class + assertEquals(this.getClass().getName(), DefaultTypeConverter.INSTANCE.convert(String.class, this.getClass())); } String localeStrEn = DefaultTypeConverter.INSTANCE.convert(String.class, Locale.ENGLISH); @@ -225,6 +229,8 @@ public class DefaultTypeConverterTest extends TestCase assertEquals(new BigInteger("7"), DefaultTypeConverter.INSTANCE.convert(BigInteger.class, Integer.valueOf("7"))); assertEquals(new BigDecimal("8"), DefaultTypeConverter.INSTANCE.convert(BigDecimal.class, Integer.valueOf("8"))); + assertEquals(Boolean.TRUE, DefaultTypeConverter.INSTANCE.convert(Boolean.class, Long.valueOf("1"))); + assertEquals(Boolean.FALSE, DefaultTypeConverter.INSTANCE.convert(Boolean.class, Long.valueOf("0"))); assertEquals(Byte.valueOf("1"), DefaultTypeConverter.INSTANCE.convert(Byte.class, Long.valueOf("1"))); assertEquals(Short.valueOf("2"), DefaultTypeConverter.INSTANCE.convert(Short.class, Long.valueOf("2"))); assertEquals(Integer.valueOf("3"), DefaultTypeConverter.INSTANCE.convert(Integer.class, Long.valueOf("3")));