You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by eb...@apache.org on 2007/04/18 10:45:49 UTC
svn commit: r529919 - in /jakarta/commons/proper/configuration/trunk:
src/java/org/apache/commons/configuration/
src/test/org/apache/commons/configuration/ xdocs/
Author: ebourg
Date: Wed Apr 18 01:45:48 2007
New Revision: 529919
URL: http://svn.apache.org/viewvc?view=rev&rev=529919
Log:
DataConfiguration now supports the InetAddress type
Modified:
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/DataConfiguration.java
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/PropertyConverter.java
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestDataConfiguration.java
jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/DataConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/DataConfiguration.java?view=diff&rev=529919&r1=529918&r2=529919
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/DataConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/DataConfiguration.java Wed Apr 18 01:45:48 2007
@@ -37,8 +37,8 @@
/**
* Decorator providing additional getters for any Configuration. This extended
- * Configuration supports more types: URL, Locale, Date, Calendar, Color, as
- * well as lists and arrays for all types.
+ * Configuration supports more types: URL, Locale, Date, Calendar, Color,
+ * InetAddress, as well as lists and arrays for all types.
*
* <h4>Example</h4>
*
@@ -46,6 +46,7 @@
* <pre>
* title.color = #0000FF
* default.locales = fr,en,de
+ * remote.host = 192.168.0.53
* </pre>
*
* Usage:
@@ -58,6 +59,7 @@
*
* // retrieve a property using a generic getter
* Locale[] locales = (Locale[]) config.getArray(Locale.class, "default.locales");
+ * InetAddress host = (InetAddress) config.get(InetAddress.class, "remote.host");
* </pre>
*
* <h4>Dates</h4>
Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/PropertyConverter.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/PropertyConverter.java?view=diff&rev=529919&r1=529918&r2=529919
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/PropertyConverter.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/PropertyConverter.java Wed Apr 18 01:45:48 2007
@@ -20,10 +20,13 @@
import java.awt.Color;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.net.URL;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -39,6 +42,7 @@
import org.apache.commons.collections.iterators.SingletonIterator;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.SystemUtils;
/**
* A utility class to convert the configuration properties into any type.
@@ -145,6 +149,10 @@
{
return PropertyConverter.toColor(value);
}
+ else if (InetAddress.class.isAssignableFrom(cls))
+ {
+ return PropertyConverter.toInetAddress(value);
+ }
throw new ConversionException("The value '" + value + "' (" + value.getClass() + ") can't be converted to a " + cls.getName() + " object");
}
@@ -608,6 +616,38 @@
else
{
throw new ConversionException("The value " + value + " can't be converted to a Color");
+ }
+ }
+
+ /**
+ * Convert the specified value into an internet address.
+ *
+ * @param value the value to convert
+ * @return the converted value
+ * @throws ConversionException thrown if the value cannot be converted to a InetAddress
+ *
+ * @since 1.5
+ */
+ static InetAddress toInetAddress(Object value) throws ConversionException
+ {
+ if (value instanceof InetAddress)
+ {
+ return (InetAddress) value;
+ }
+ else if (value instanceof String)
+ {
+ try
+ {
+ return InetAddress.getByName((String) value);
+ }
+ catch (UnknownHostException e)
+ {
+ throw new ConversionException("The value " + value + " can't be converted to a InetAddress", e);
+ }
+ }
+ else
+ {
+ throw new ConversionException("The value " + value + " can't be converted to a InetAddress");
}
}
Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestDataConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestDataConfiguration.java?view=diff&rev=529919&r1=529918&r2=529919
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestDataConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestDataConfiguration.java Wed Apr 18 01:45:48 2007
@@ -21,6 +21,7 @@
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.URL;
+import java.net.InetAddress;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -289,6 +290,10 @@
conf.addProperty("calendar.list6", calendars);
conf.addProperty("calendar.list.interpolated", "${calendar.string},2004-12-31");
conf.addPropertyDirect("calendar.list7", new String[] { "2004-01-01", "2004-12-31" });
+
+ conf.addProperty("ip.string", "127.0.0.1");
+ conf.addProperty("ip.string.interpolated", "${ip.string}");
+ conf.addProperty("ip.object", InetAddress.getByName("127.0.0.1"));
}
public void testGetConfiguration()
@@ -1653,6 +1658,31 @@
ListAssert.assertEquals(new ArrayList(), conf.getCalendarList("empty"));
}
+ public void testGetInetAddress() throws Exception
+ {
+ InetAddress expected = InetAddress.getByName("127.0.0.1");
+
+ // address as string
+ assertEquals(expected, conf.get(InetAddress.class, "ip.string"));
+
+ // address object
+ assertEquals(expected, conf.get(InetAddress.class, "ip.object"));
+
+ // interpolated value
+ assertEquals(expected, conf.get(InetAddress.class, "ip.string.interpolated"));
+
+ conf.setProperty("ip.unknownhost", "123");
+ try
+ {
+ conf.get(InetAddress.class, "ip.unknownhost");
+ fail("ConversionException should be thrown for unknown hosts");
+ }
+ catch (ConversionException e)
+ {
+ // expected
+ }
+ }
+
public void testConversionException()
{
conf.addProperty("key1", new Object());
@@ -2252,6 +2282,16 @@
{
conf.getCalendarList("key2");
fail("getCalendarList didn't throw a ConversionException");
+ }
+ catch (ConversionException e)
+ {
+ // expected
+ }
+
+ try
+ {
+ conf.get(InetAddress.class, "key1");
+ fail("getInetAddress didn't throw a ConversionException");
}
catch (ConversionException e)
{
Modified: jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/xdocs/changes.xml?view=diff&rev=529919&r1=529918&r2=529919
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/changes.xml Wed Apr 18 01:45:48 2007
@@ -23,6 +23,10 @@
<body>
<release version="1.5-SNAPSHOT" date="in SVN" description="">
+ <action dev="ebourg" type="add">
+ DataConfiguration now supports the InetAddress type, properties are
+ converted to this type using the new generic getters.
+ </action>
<action dev="ebourg" type="fix">
The object getters in DataConfiguration with no default value
(i.e getURL(key)) now throw a NoSuchElementException if the flag
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org