[ 
https://issues.apache.org/jira/browse/CLEREZZA-511?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Reto Bachmann-Gmür closed CLEREZZA-511.
---------------------------------------


should have closed them earlier.

> allow access to individual SimpleLiteralFactory converters 
> -----------------------------------------------------------
>
>                 Key: CLEREZZA-511
>                 URL: https://issues.apache.org/jira/browse/CLEREZZA-511
>             Project: Clerezza
>          Issue Type: Improvement
>            Reporter: Henry Story
>            Assignee: Reto Bachmann-Gmür
>
> code in Scala could do with using the converters from the 
> SimpleLiteralFactory, but when it does it is absolutely clear
> which converter is needed. Instead of just adding the converters to a hashmap 
> I suggest adding giving each one of them names.
> This is already implemented at it works
>       final static public TypeConverter<byte[]> BYTE_ARRAY_CONVERTER = new 
> ByteArrayConverter();
>       final static public TypeConverter<Boolean> BOOLEAN_CONVERTER = new 
> BooleanConverter();
>       final static public TypeConverter<Date> DATE_CONVERTER = new 
> DateConverter();
>       final static public TypeConverter<String> STRING_CONVERTER = new 
> StringConverter();
>       final static public TypeConverter<Integer> INTEGER_CONVERTER = new 
> IntegerConverter();
>       final static public TypeConverter<BigInteger> BIG_INTEGER_CONVERTER = 
> new BigIntegerConverter();
>       final static public TypeConverter<Long> LONG_CONVERTER = new 
> LongConverter();
>       final static public TypeConverter<Double> DOUBLE_CONVERTER = new 
> DoubleConverter();
>       final static public TypeConverter<UriRef> URIREF_CONVERTER = new 
> UriRefConverter();
>       final private static Map<Class<?>, TypeConverter<?>> typeConverterMap = 
> new HashMap<Class<?>, TypeConverter<?>>();
>       final static Class<? extends byte[]> byteArrayType;
>       static {
>               //what's this for?
>               Collections.addAll(decimalTypes, xsdInteger, xsdInt, xsdByte, 
> xsdShort);
>               byte[] byteArray = new byte[0];
>               byteArrayType = byteArray.getClass();
>               typeConverterMap.put(byteArrayType, BYTE_ARRAY_CONVERTER);
>               typeConverterMap.put(Date.class, DATE_CONVERTER);
>               typeConverterMap.put(Boolean.class, BOOLEAN_CONVERTER);
>               typeConverterMap.put(String.class, STRING_CONVERTER);
>               typeConverterMap.put(Integer.class, INTEGER_CONVERTER);
>               typeConverterMap.put(BigInteger.class, BIG_INTEGER_CONVERTER);
>               typeConverterMap.put(Long.class, LONG_CONVERTER);
>               typeConverterMap.put(Double.class, DOUBLE_CONVERTER);
>               typeConverterMap.put(UriRef.class, URIREF_CONVERTER);
>       }
> This then allows one to write code such as
>       implicit def string2lit(str: String) = new PlainLiteralScala(str)
>       implicit def date2lit(date: Date) = 
> DATE_CONVERTER.createTypedLiteral(date)
>       implicit def int2lit(int: Int) = 
> INTEGER_CONVERTER.createTypedLiteral(int)
>       implicit def bigint2lit(bint: BigInt) = 
> BIG_INTEGER_CONVERTER.createTypedLiteral(bint.underlying())
>       implicit def bigint2lit(bigInt: BigInteger) = 
> BIG_INTEGER_CONVERTER.createTypedLiteral(bigInt)
>       implicit def bool2lit(boolean: Boolean) = 
> BOOLEAN_CONVERTER.createTypedLiteral(boolean)
>       implicit def scalaBool2lit(boolean: scala.Boolean) = 
> BOOLEAN_CONVERTER.createTypedLiteral(boolean)
>       implicit def long2lit(long: Long) = 
> LONG_CONVERTER.createTypedLiteral(long)
>       implicit def double2lit(double: Double) = 
> DOUBLE_CONVERTER.createTypedLiteral(double)
> Saving on the hash lookup and iterations in these cases where it really is 
> not necessary

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to