[Arakhnę-Dev] [322] * Move the Locale utility class from the SFC library to Arakhn?\195? \170 VMutil. |
[ Thread Index |
Date Index
| More arakhne.org/dev Archives
]
- To: dev@xxxxxxxxxxx
- Subject: [Arakhnę-Dev] [322] * Move the Locale utility class from the SFC library to Arakhn?\195? \170 VMutil.
- From: subversion@xxxxxxxxxxxxx
- Date: Sat, 28 Jan 2012 15:04:43 +0100
Revision: 322
Author: galland
Date: 2012-01-28 15:04:42 +0100 (Sat, 28 Jan 2012)
Log Message:
-----------
* Move the Locale utility class from the SFC library to Arakhn?\195?\170 VMutil.
Modified Paths:
--------------
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/AbstractOperatingSystemWrapper.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/Caller.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ClassLoaderFinder.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ClasspathUtil.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/DynamicURLClassLoader.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ExternalizableResource.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/FileSystem.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/LibraryLoader.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/MACNumber.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystem.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemDiskUtilWrapper.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemIdentificationType.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemInfo.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemNativeWrapper.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemUDevWrapper.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemWrapper.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ReflectionUtil.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ResourceNotFoundException.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/Resources.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ThreadServiceFinder.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ThreadServiceProvider.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/URISchemeType.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/URLHandlerUtil.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/VMCommandLine.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/Handler.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/HandlerFactory.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/URLConnection.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/Handler.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/HandlerFactory.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/URLConnection.java
trunk/arakhneVmutils/java/src/main/resources/org/arakhne/vmutil/OperatingSystem.properties
trunk/arakhneVmutils/java/src/main/resources/org/arakhne/vmutil/OperatingSystem_fr.properties
trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/CallerTest.java
trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/ClasspathUtilTest.java
trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/FileSystemTest.java
trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/ResourcesTest.java
trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/VMCommandLineTest.java
trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/file/URLConnectionTest.java
trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/resource/URLConnectionTest.java
trunk/pom.xml
Added Paths:
-----------
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/Locale.java
trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/LocaleMessageFormat.java
trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/
trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/LocaleStub.java
trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/LocaleTest.java
trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/
trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/LocaleStub.properties
trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/LocaleTest.properties
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/AbstractOperatingSystemWrapper.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/AbstractOperatingSystemWrapper.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/AbstractOperatingSystemWrapper.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/Caller.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/Caller.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/Caller.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2008 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2008 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ClassLoaderFinder.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ClassLoaderFinder.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ClassLoaderFinder.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2008 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2008 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ClasspathUtil.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ClasspathUtil.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ClasspathUtil.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2005-2010 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2005-2010 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/DynamicURLClassLoader.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/DynamicURLClassLoader.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/DynamicURLClassLoader.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2008 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2008 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ExternalizableResource.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ExternalizableResource.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ExternalizableResource.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2005-2010 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2005-2010 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/FileSystem.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/FileSystem.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/FileSystem.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/LibraryLoader.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/LibraryLoader.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/LibraryLoader.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/MACNumber.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/MACNumber.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/MACNumber.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2005-2010 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2005-2010 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystem.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystem.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystem.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2011 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2012 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
@@ -19,7 +21,7 @@
package org.arakhne.vmutil;
-import java.util.ResourceBundle;
+import org.arakhne.vmutil.locale.Locale;
/**
* This is a list of supported operating system.
@@ -328,8 +330,7 @@
if (nativeWrapper==null) {
try {
- ResourceBundle bundle = ResourceBundle.getBundle(OperatingSystem.class.getCanonicalName());
- String errorMsg = bundle.getString("NATIVE_NOT_SUPPORTED"); //$NON-NLS-1$
+ String errorMsg = Locale.getString("NATIVE_NOT_SUPPORTED"); //$NON-NLS-1$
if (errorMsg!=null && !"".equals(errorMsg)) { //$NON-NLS-1$
System.err.println(errorMsg);
}
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemDiskUtilWrapper.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemDiskUtilWrapper.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemDiskUtilWrapper.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemIdentificationType.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemIdentificationType.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemIdentificationType.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2011 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2011 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemInfo.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemInfo.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemInfo.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemNativeWrapper.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemNativeWrapper.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemNativeWrapper.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemUDevWrapper.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemUDevWrapper.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemUDevWrapper.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemWrapper.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemWrapper.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/OperatingSystemWrapper.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ReflectionUtil.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ReflectionUtil.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ReflectionUtil.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ResourceNotFoundException.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ResourceNotFoundException.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ResourceNotFoundException.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2010 Alexandre WILLAUME, Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2010 Alexandre WILLAUME, Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/Resources.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/Resources.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/Resources.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ThreadServiceFinder.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ThreadServiceFinder.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ThreadServiceFinder.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2005-2010 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2005-2010 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ThreadServiceProvider.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ThreadServiceProvider.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/ThreadServiceProvider.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2005-2010 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2005-2010 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/URISchemeType.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/URISchemeType.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/URISchemeType.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/URLHandlerUtil.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/URLHandlerUtil.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/URLHandlerUtil.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/VMCommandLine.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/VMCommandLine.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/VMCommandLine.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2004-2009 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2004-2009 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/Handler.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/Handler.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/Handler.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2010 Alexandre WILLAUME, Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2010 Alexandre WILLAUME, Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/HandlerFactory.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/HandlerFactory.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/HandlerFactory.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2010 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2010 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/URLConnection.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/URLConnection.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/file/URLConnection.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2010 Alexandre WILLAUME, Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2010 Alexandre WILLAUME, Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Added: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/Locale.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/Locale.java (rev 0)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/Locale.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -0,0 +1,578 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 2005-10, Multiagent Team,
+ * Laboratoire Systemes et Transports,
+ * Universite de Technologie de Belfort-Montbeliard.
+ * All rights reserved.
+ *
+ * Copyright (C) 2012 Stephane GALLAND, Olivier LAMOTTE.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * This program is free software; you can redistribute it and/or modify
+ */
+
+package org.arakhne.vmutil.locale;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.util.List;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Map.Entry;
+
+import org.arakhne.vmutil.Caller;
+import org.arakhne.vmutil.ClassLoaderFinder;
+
+/**
+ * This utility class permits a easier use of localized strings.
+ * <code>Locale</code> provides a means to retreive
+ * messages in the default language. Use this to construct messages
+ * displayed for end users.
+ * <p>
+ * <code>Locale</code> takes a string from a properties resource,
+ * then inserts the parameter strings into the extracted strings
+ * at the appropriate places.
+ * The pattern matching is proceeded with {@link LocaleMessageFormat}
+ * formatter. Note that <code>''</code> may represent a single quote
+ * in strings (see {@link LocaleMessageFormat} for details).
+ *
+ * FIXME: Does java.text.Normalizer may replace decodeString functions?
+ *
+ * @author $Author: galland$
+ * @author $Author: lamotte$
+ * @version $FullVersion$
+ * @mavengroupid $GroupId$
+ * @mavenartifactid $ArtifactId$
+ * @since 6.4
+ */
+public class Locale {
+
+ private static Class<?> detectResourceClass(Class<?> resource) {
+ if (resource==null) {
+ // Parameter value:
+ // 0: is always Locale.class (ie. the caller of this PRIVATE function)
+ // 1: is the third top of the trace stack ie, the first caller outside Locale.class
+ return Caller.getCallerClass(1);
+ }
+ return resource;
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ * <p>
+ * The <code>resourcePath</code> argument should be a fully
+ * qualified class name. However, for compatibility with earlier
+ * versions, Sun's Java SE Runtime Environments do not verify this,
+ * and so it is possible to access <code>PropertyResourceBundle</code>s
+ * by specifying a path name (using "/") instead of a fully
+ * qualified class name (using ".").
+ *
+ * @param resourcePath is the name (path) of the resource file, a fully qualified class name
+ * @param key is the name of the resource into the specified file
+ * @param defaultValue is the default value to replies if the resource does not contain the specified key.
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getStringWithDefaultFrom(String resourcePath, String key, String defaultValue, Object... params) {
+ // This method try to use the plugin manager class loader
+ // if it exists, otherwhise, it use the default class loader
+ return getStringWithDefaultFrom(
+ ClassLoaderFinder.findClassLoader(),
+ resourcePath, key, defaultValue, params);
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ * <p>
+ * The <code>resourcePath</code> argument should be a fully
+ * qualified class name. However, for compatibility with earlier
+ * versions, Sun's Java SE Runtime Environments do not verify this,
+ * and so it is possible to access <code>PropertyResourceBundle</code>s
+ * by specifying a path name (using "/") instead of a fully
+ * qualified class name (using ".").
+ *
+ * @param classLoader is the class loader to use, a fully qualified class name
+ * @param resourcePath is the name (path) of the resource file
+ * @param key is the name of the resource into the specified file
+ * @param defaultValue is the default value to replies if the resource does not contain the specified key.
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getStringWithDefaultFrom(ClassLoader classLoader, String resourcePath, String key, String defaultValue, Object... params) {
+
+ if (resourcePath == null) return defaultValue;
+
+ // Get the resource file
+ ResourceBundle resource = null;
+ try {
+ resource = ResourceBundle.getBundle(resourcePath,
+ java.util.Locale.getDefault(),
+ classLoader);
+ }
+ catch (MissingResourceException exep) {
+ return defaultValue;
+ }
+
+ // get the resource string
+ String result;
+
+ try {
+ result = resource.getString(key);
+ }
+ catch (Exception e) {
+ return defaultValue;
+ }
+
+ // replace the \n and \r by a real new line character
+ result = result.replaceAll("[\\n\\r]","\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ result = result.replaceAll("\\t","\t"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // replace the parameter values
+ assert(params!=null);
+ return LocaleMessageFormat.format(result, params);
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ * <p>
+ * The <code>resourcePath</code> argument should be a fully
+ * qualified class name. However, for compatibility with earlier
+ * versions, Sun's Java SE Runtime Environments do not verify this,
+ * and so it is possible to access <code>PropertyResourceBundle</code>s
+ * by specifying a path name (using "/") instead of a fully
+ * qualified class name (using ".").
+ *
+ * @param resourcePath is the name (path) of the resource file, a fully qualified class name
+ * @param key is the name of the resource into the specified file
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getStringFrom(String resourcePath, String key, Object... params) {
+ return getStringWithDefaultFrom(resourcePath, key, key, params);
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ * <p>
+ * The <code>resourcePath</code> argument should be a fully
+ * qualified class name. However, for compatibility with earlier
+ * versions, Sun's Java SE Runtime Environments do not verify this,
+ * and so it is possible to access <code>PropertyResourceBundle</code>s
+ * by specifying a path name (using "/") instead of a fully
+ * qualified class name (using ".").
+ *
+ * @param classLoader is the classLoader to use.
+ * @param resourcePath is the name (path) of the resource file, a fully qualified class name
+ * @param key is the name of the resource into the specified file
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getStringFrom(ClassLoader classLoader, String resourcePath, String key, Object... params) {
+ return getStringWithDefaultFrom(classLoader,resourcePath, key, key, params);
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ *
+ * @param resource is the name of the resource file
+ * @param key is the name of the resource into the specified file
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getString(Class<?> resource, String key, Object... params) {
+ Class<?> res = detectResourceClass(resource);
+ return getString(ClassLoaderFinder.findClassLoader(),res,key,params);
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ *
+ * @param classLoader is the class loader to use.
+ * @param resource is the name of the resource file
+ * @param key is the name of the resource into the specified file
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getString(ClassLoader classLoader, Class<?> resource, String key, Object... params) {
+ Class<?> res = detectResourceClass(resource);
+ if (res==null) return key;
+ String val = getStringWithDefaultFrom(classLoader,res.getCanonicalName(),key,null,params);
+ while ((res!=null)&&(val==null)) {
+ res = res.getSuperclass();
+ if (res!=null) {
+ val = getStringWithDefaultFrom(classLoader,res.getCanonicalName(),key,null,params);
+ }
+ }
+ if (val==null) return key;
+ return val;
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ *
+ * @param resource is the name of the resource file
+ * @param key is the name of the resource into the specified file
+ * @param defaultValue is the default value to replies if the resource does not contain the specified key.
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getStringWithDefault(Class<?> resource, String key, String defaultValue, Object... params) {
+ Class<? >res = detectResourceClass(resource);
+ return getStringWithDefault(ClassLoaderFinder.findClassLoader(),res,key,defaultValue,params);
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ *
+ * @param classLoader is the class loader to use.
+ * @param resource is the name of the resource file
+ * @param key is the name of the resource into the specified file
+ * @param defaultValue is the default value to replies if the resource does not contain the specified key.
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getStringWithDefault(ClassLoader classLoader, Class<?> resource, String key, String defaultValue, Object... params) {
+ Class<?> res = detectResourceClass(resource);
+ if (res==null) return defaultValue;
+ String val = getStringWithDefaultFrom(classLoader,res.getCanonicalName(),key,null,params);
+ while ((res!=null)&&(val==null)) {
+ res = res.getSuperclass();
+ if (res!=null) {
+ val = getStringWithDefaultFrom(classLoader,res.getCanonicalName(),key,null,params);
+ }
+ }
+ if (val==null) return defaultValue;
+ return val;
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ * <p>
+ * This function assumes the classname of the caller as the
+ * resource provider.
+ *
+ * @param key is the name of the resource into the specified file
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getString(String key, Object... params) {
+ Class<?> resource = detectResourceClass(null);
+ return getString(ClassLoaderFinder.findClassLoader(),resource,key,params);
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ * <p>
+ * This function assumes the classname of the caller as the
+ * resource provider.
+ *
+ * @param classLoader is the classLoader to use.
+ * @param key is the name of the resource into the specified file
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getString(ClassLoader classLoader, String key, Object... params) {
+ Class<?> resource = detectResourceClass(null);
+ return getString(classLoader,resource,key,params);
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ *
+ * @param key is the name of the resource into the specified file
+ * @param defaultValue is the default value to replies if the resource does not contain the specified key.
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getStringWithDefault(String key, String defaultValue, Object... params) {
+ Class<?> resource = detectResourceClass(null);
+ return getStringWithDefault(ClassLoaderFinder.findClassLoader(),resource,key,defaultValue,params);
+ }
+
+ /**
+ * Replies the text that corresponds to the specified resource.
+ *
+ * @param classLoader is the class loader to use.
+ * @param key is the name of the resource into the specified file
+ * @param defaultValue is the default value to replies if the resource does not contain the specified key.
+ * @param params is the the list of parameters which will
+ * replaces the <code>#1</code>, <code>#2</code>... into the string.
+ * @return the text that corresponds to the specified resource
+ */
+ public static String getStringWithDefault(ClassLoader classLoader, String key, String defaultValue, Object... params) {
+ Class<?> resource = detectResourceClass(null);
+ return getStringWithDefault(classLoader,resource,key,defaultValue,params);
+ }
+
+ /** Decode the specified array of bytes according to
+ * a charset selection. This function tries
+ * to decode a string from the given byte array
+ * with the following charsets (in preferred order):
+ * <ul>
+ * <li>the current charset returned by {@link Charset#defaultCharset()},</li>
+ * <li>OEM United States: IBM437,</li>
+ * <li>West European: ISO-8859-1,</li>
+ * <li>one of the charst returned by {@link Charset#availableCharsets()}.</li>
+ * </ul>
+ * <p>
+ * The IBM437 charset was added to support several specific files (Dbase files)
+ * generated from a GIS.
+ *
+ * @param bytes is the array of bytes to decode.
+ * @return the decoded string with the appropriate charset set.
+ */
+ public static String decodeString(byte[] bytes) {
+ Charset default_charset = Charset.defaultCharset();
+ Charset west_european = Charset.forName("ISO-8859-1"); //$NON-NLS-1$
+ Charset utf = Charset.forName("UTF-8"); //$NON-NLS-1$
+
+ String refBuffer = new String(bytes);
+
+ CharBuffer buffer = decodeString(bytes,default_charset,refBuffer.length());
+
+ if ((buffer==null)&&(!default_charset.equals(west_european))) {
+ buffer = decodeString(bytes,west_european,refBuffer.length());
+ }
+
+ if ((buffer==null)&&(!default_charset.equals(utf))) {
+ buffer = decodeString(bytes,utf,refBuffer.length());
+ }
+
+ if (buffer==null) {
+ // Decode until one of the available charset replied a value
+ for (Charset charset : Charset.availableCharsets().values()) {
+ buffer = decodeString(bytes,charset,refBuffer.length());
+ if (buffer!=null) break;
+ }
+ }
+ // Use the default encoding
+ if (buffer==null) return refBuffer;
+ return buffer.toString();
+ }
+
+ /** Decode the specified array of bytes with the specified charset.
+ *
+ * @param bytes is the array of bytes to decode.
+ * @param charset is the charset to use for decoding
+ * @param referenceLength is the length of the attempted result. If negative, this parameter is ignored.
+ * @return the decoded string with the appropriate charset set,
+ * or <code>null</code> if the specified charset cannot be
+ * used to decode all the characters inside the byte array.
+ */
+ private static CharBuffer decodeString(byte[] bytes, Charset charset, int referenceLength) {
+ try {
+ Charset autodetected_charset = charset;
+ CharsetDecoder decoder = charset.newDecoder();
+ CharBuffer buffer = decoder.decode(ByteBuffer.wrap(bytes));
+ if ((decoder.isAutoDetecting())&&
+ (decoder.isCharsetDetected())) {
+ autodetected_charset = decoder.detectedCharset();
+ if (charset.contains(autodetected_charset)) {
+ buffer.position(0);
+ if ((referenceLength>=0)&&(buffer.remaining()==referenceLength))
+ return buffer;
+ return null;
+ }
+ }
+ // Apply a proprietaty detection
+ buffer.position(0);
+ char c;
+ int type;
+ while (buffer.hasRemaining()) {
+ c = buffer.get();
+ type = Character.getType(c);
+ switch(type) {
+ case Character.UNASSIGNED:
+ case Character.CONTROL:
+ case Character.FORMAT:
+ case Character.PRIVATE_USE:
+ case Character.SURROGATE:
+ // Character not supported?
+ return null;
+ default:
+ }
+ }
+ buffer.position(0);
+ if ((referenceLength>=0)&&(buffer.remaining()==referenceLength))
+ return buffer;
+ }
+ catch (CharacterCodingException e) {
+ //
+ }
+ return null;
+ }
+
+ /** Decode the bytes from the specified input stream
+ * according to a charset selection. This function tries
+ * to decode a string from the given byte array
+ * with the following charsets (in preferred order):
+ * <ul>
+ * <li>the current charset returned by {@link Charset#defaultCharset()},</li>
+ * <li>OEM United States: IBM437,</li>
+ * <li>West European: ISO-8859-1,</li>
+ * <li>one of the charst returned by {@link Charset#availableCharsets()}.</li>
+ * </ul>
+ * <p>
+ * The IBM437 charset was added to support several specific files (Dbase files)
+ * generated from a GIS.
+ *
+ * @param stream is the stream to decode.
+ * @return the decoded string with the appropriate charset set.
+ * @throws IOException
+ */
+ public static String decodeString(InputStream stream) throws IOException {
+ byte[] complete_buffer = new byte[0];
+ byte[] buffer = new byte[2048];
+ int red;
+
+ while ((red=stream.read(buffer))>0) {
+ byte[] tmp = new byte[complete_buffer.length+red];
+ System.arraycopy(complete_buffer,0,tmp,0,complete_buffer.length);
+ System.arraycopy(buffer,0,tmp,complete_buffer.length,red);
+ complete_buffer = tmp;
+ tmp = null;
+ }
+
+ String s = decodeString(complete_buffer);
+ complete_buffer = null;
+ buffer = null;
+ return s;
+ }
+
+ /** Decode the bytes from the specified input stream
+ * according to a charset selection. This function tries
+ * to decode a string from the given byte array
+ * with the following charsets (in preferred order):
+ * <ul>
+ * <li>the current charset returned by {@link Charset#defaultCharset()},</li>
+ * <li>OEM United States: IBM437,</li>
+ * <li>West European: ISO-8859-1,</li>
+ * <li>one of the charst returned by {@link Charset#availableCharsets()}.</li>
+ * </ul>
+ * <p>
+ * The IBM437 charset was added to support several specific files (Dbase files)
+ * generated from a GIS.
+ * <p>
+ * This function read the input stream line by line.
+ *
+ * @param stream is the stream to decode.
+ * @param lineArray is the array of lines to fill
+ * @return <code>true</code> is the decoding was successful,
+ * otherwhise <code>false</code>
+ * @throws IOException
+ */
+ public static boolean decodeString(InputStream stream, List<String> lineArray) throws IOException {
+ // Read the complete file
+ byte[] complete_buffer = new byte[0];
+ byte[] buffer = new byte[2048];
+ int red;
+
+ while ((red=stream.read(buffer))>0) {
+ byte[] tmp = new byte[complete_buffer.length+red];
+ System.arraycopy(complete_buffer,0,tmp,0,complete_buffer.length);
+ System.arraycopy(buffer,0,tmp,complete_buffer.length,red);
+ complete_buffer = tmp;
+ tmp = null;
+ }
+
+ buffer = null;
+
+ // Get the two default charsets
+ //Charset oem_us = Charset.forName("IBM437"); //$NON-NLS-1$
+ Charset west_european = Charset.forName("ISO-8859-1"); //$NON-NLS-1$
+ Charset default_charset = Charset.defaultCharset();
+
+ // Decode with the current charset
+ boolean ok = decodeString(new ByteArrayInputStream(complete_buffer),lineArray,default_charset);
+
+ // Decode with the default oem US charset
+ /*if ((!ok)&&(!default_charset.equals(oem_us))) {
+ ok = decodeString(new ByteArrayInputStream(complete_buffer),lineArray,oem_us);
+ }*/
+
+ // Decode with the default west european charset
+ if ((!ok)&&(!default_charset.equals(west_european))) {
+ ok = decodeString(new ByteArrayInputStream(complete_buffer),lineArray,west_european);
+ }
+
+ // Decode until one of the available charset replied a value
+ if (!ok) {
+ for (Entry<String,Charset> charset : Charset.availableCharsets().entrySet()) {
+ if (decodeString(new ByteArrayInputStream(complete_buffer),lineArray,charset.getValue())) {
+ complete_buffer = null;
+ return true;
+ }
+ }
+ }
+
+ complete_buffer = null;
+ return ok;
+ }
+
+ /** Decode the bytes from the specified input stream
+ * according to a charset selection. This function tries
+ * to decode a string from the given byte array
+ * with the following charsets (in preferred order):
+ * <p>
+ * This function read the input stream line by line.
+ *
+ * @param stream is the stream to decode.
+ * @param lineArray is the array of lines to fill.
+ * @param charset is the charset to use.
+ * @return <code>true</code> is the decoding was successful,
+ * otherwhise <code>false</code>
+ * @throws IOException
+ */
+ private static boolean decodeString(InputStream stream, List<String> lineArray, Charset charset) throws IOException {
+ try {
+ BufferedReader breader = new BufferedReader(
+ new InputStreamReader(stream,charset.newDecoder()));
+
+ lineArray.clear();
+
+ String line;
+ while ((line=breader.readLine())!=null) {
+ lineArray.add(line);
+ }
+
+ return true;
+ }
+ catch(CharacterCodingException _) {
+ //
+ }
+ return false;
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/Locale.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/LocaleMessageFormat.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/LocaleMessageFormat.java (rev 0)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/LocaleMessageFormat.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -0,0 +1,326 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 2011, Multiagent Team,
+ * Laboratoire Systemes et Transports,
+ * Universite de Technologie de Belfort-Montbeliard.
+ * All rights reserved.
+ *
+ * Copyright (C) 2012 Stephane GALLAND, Olivier LAMOTTE.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * This program is free software; you can redistribute it and/or modify
+ */
+
+package org.arakhne.vmutil.locale;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.RoundingMode;
+import java.text.DecimalFormat;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.MessageFormat;
+import java.text.NumberFormat;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+/**
+ * <code>LocaleMessageFormat</code> provides a means to produce concatenated
+ * messages in a language-neutral way in the {@link Locale}
+ * utility class.
+ * <p>
+ * <code>LocaleMessageFormat</code> takes a set of objects, formats them, then
+ * inserts the formatted strings into the pattern at the appropriate places.
+ * <p>
+ * In addition to the standard JDK {@link MessageFormat}, <code>LocaleMessageFormat</code>
+ * provides the <code>FormatStyle</code> named "raw". This new style does not try
+ * to format the given data according to the locale. It simply put the
+ * not-formatted data in the result.
+ *
+ * @author $Author: galland$
+ * @version $FullVersion$
+ * @mavengroupid $GroupId$
+ * @mavenartifactid $ArtifactId$
+ * @since 6.4
+ */
+public class LocaleMessageFormat extends MessageFormat {
+
+ private static final long serialVersionUID = 6637824487735941754L;
+
+ /** String that corresponds to the raw format style.
+ */
+ public static final String RAW_FORMAT_STYLE = "raw"; //$NON-NLS-1$
+
+ /**
+ * Creates a LocaleMessageFormat with the given pattern and uses it
+ * to format the given arguments. This is equivalent to
+ * <blockquote>
+ * <code>(new {@link #LocaleMessageFormat(String) MessageFormat}(pattern)).{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}(arguments, new StringBuffer(), null).toString()</code>
+ * </blockquote>
+ *
+ * @exception IllegalArgumentException if the pattern is invalid,
+ * or if an argument in the <code>arguments</code> array
+ * is not of the type expected by the format element(s)
+ * that use it.
+ */
+ public static String format(String pattern, Object ... arguments) {
+ LocaleMessageFormat temp = new LocaleMessageFormat(pattern);
+ return temp.format(arguments);
+ }
+
+ /**
+ * @param pattern the pattern for this message format
+ * @exception IllegalArgumentException if the pattern is invalid
+ */
+ public LocaleMessageFormat(String pattern) {
+ super(pattern);
+ }
+
+ /**
+ * @param pattern the pattern for this message format
+ * @param locale the locale for this message format
+ * @exception IllegalArgumentException if the pattern is invalid
+ */
+ public LocaleMessageFormat(String pattern, Locale locale) {
+ super(pattern, locale);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void applyPattern(String pattern) {
+ super.applyPattern(pattern);
+ Format[] formats = getFormats();
+ boolean changed = false;
+ for(int i=0; i<formats.length; ++i) {
+ if (formats[i] instanceof DecimalFormat) {
+ DecimalFormat df = (DecimalFormat)formats[i];
+ if (RAW_FORMAT_STYLE.equalsIgnoreCase(df.getPositivePrefix())) {
+ formats[i] = new RawNumberFormat(
+ pattern,
+ df.getGroupingSize(),
+ df.getMinimumIntegerDigits(),
+ df.getMaximumIntegerDigits(),
+ df.getMinimumFractionDigits(),
+ df.getMaximumFractionDigits(),
+ df.getRoundingMode());
+ changed = true;
+ }
+ }
+ }
+ if (changed) {
+ setFormats(formats);
+ }
+ }
+
+ /**
+ * @author $Author: sgalland$
+ * @version $FullVersion$
+ * @mavengroupid $GroupId$
+ * @mavenartifactid $ArtifactId$
+ */
+ private static class RawNumberFormat extends NumberFormat {
+
+ private static final long serialVersionUID = 7091190928835741939L;
+
+ private static final char RAW_NEGATIVE_SIGN = '-';
+ private static final char RAW_DECIMAL_SEPARATOR = '.';
+ private static final char RAW_ZERO_DIGIT = '0';
+
+ private final boolean isUnformatted;
+ private final RoundingMode roundingMode;
+
+ /**
+ * @param pattern
+ * @param groupSize
+ * @param minInt
+ * @param maxInt
+ * @param minFrac
+ * @param maxFrac
+ * @param roundingMode
+ */
+ public RawNumberFormat(String pattern, int groupSize, int minInt, int maxInt, int minFrac, int maxFrac, RoundingMode roundingMode) {
+ super();
+ this.roundingMode = roundingMode;
+ this.isUnformatted = (groupSize==0) && (minInt==0) && (maxInt==Integer.MAX_VALUE) && (minFrac==0) && (maxFrac==0);
+ setMinimumIntegerDigits(minInt);
+ setMaximumIntegerDigits(maxInt);
+ setMinimumFractionDigits(minFrac);
+ setMaximumFractionDigits(maxFrac);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos) {
+ if (number instanceof BigInteger) {
+ return format((BigInteger)number, toAppendTo, pos);
+ }
+ if (number instanceof BigDecimal) {
+ return format((BigDecimal)number, toAppendTo, pos);
+ }
+ return super.format(number, toAppendTo, pos);
+ }
+
+ private void formatInteger(boolean negative, String number, StringBuffer toAppendTo) {
+ assert(!this.isUnformatted);
+
+ if (negative) toAppendTo.append(RAW_NEGATIVE_SIGN);
+
+ for(int c=getMinimumIntegerDigits()-number.length(); c>0; --c) {
+ toAppendTo.append(RAW_ZERO_DIGIT);
+ }
+
+ toAppendTo.append(number);
+
+ int n = getMinimumFractionDigits();
+ if (n>0) {
+ toAppendTo.append(RAW_DECIMAL_SEPARATOR);
+ for(int c=0; c<n; ++c) {
+ toAppendTo.append(RAW_ZERO_DIGIT);
+ }
+ }
+ }
+
+ private void formatDecimal(BigDecimal number, StringBuffer toAppendTo) {
+ assert(!this.isUnformatted);
+
+ boolean negative = (number.compareTo(BigDecimal.ZERO)<0);
+ int minInt = getMinimumIntegerDigits();
+ int minFrac = getMinimumFractionDigits();
+ int maxFrac = getMaximumFractionDigits();
+
+ BigDecimal n = number.setScale(maxFrac, this.roundingMode);
+
+ String rawString = n.abs().toPlainString();
+ int decimalPos = rawString.indexOf(RAW_DECIMAL_SEPARATOR);
+ String integer, decimal;
+ if (decimalPos<0) {
+ integer = rawString;
+ decimal = ""; //$NON-NLS-1$
+ }
+ else {
+ integer = rawString.substring(0, decimalPos);
+ decimal = rawString.substring(decimalPos+1);
+ }
+
+ if (negative) toAppendTo.append(RAW_NEGATIVE_SIGN);
+
+ int c = minInt - integer.length();
+ while (c>0) {
+ toAppendTo.append(RAW_ZERO_DIGIT);
+ --c;
+ }
+
+ toAppendTo.append(integer);
+
+ if (minFrac>0 || (maxFrac>0 && decimal.length()>0)) {
+ toAppendTo.append(RAW_DECIMAL_SEPARATOR);
+ toAppendTo.append(decimal);
+
+ c = minFrac - decimal.length();
+ while (c>0) {
+ toAppendTo.append(RAW_ZERO_DIGIT);
+ --c;
+ }
+ }
+ }
+
+ /**
+ * Specialization of format.
+ *
+ * @param number is the number to format.
+ * @param toAppendTo is the string buffer into which the formatting result may be appended.
+ * @param pos is on input: an alignment field, if desired. On output: the offsets of
+ * the alignment field.
+ * @return the value passed in as <code>toAppendTo</code>
+ * @throws ArithmeticException if rounding is needed with rounding
+ * mode being set to RoundingMode.UNNECESSARY
+ * @see java.text.Format#format
+ */
+ public StringBuffer format(BigInteger number, StringBuffer toAppendTo, FieldPosition pos) {
+ if (this.isUnformatted) {
+ toAppendTo.append(number.toString());
+ }
+ else {
+ formatInteger(number.signum()<0, number.abs().toString(), toAppendTo);
+ }
+ return toAppendTo;
+ }
+
+ /**
+ * Specialization of format.
+ *
+ * @param number is the number to format.
+ * @param toAppendTo is the string buffer into which the formatting result may be appended.
+ * @param pos is on input: an alignment field, if desired. On output: the offsets of
+ * the alignment field.
+ * @return the value passed in as <code>toAppendTo</code>
+ * @throws ArithmeticException if rounding is needed with rounding
+ * mode being set to RoundingMode.UNNECESSARY
+ * @see java.text.Format#format
+ */
+ public StringBuffer format(BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+ if (this.isUnformatted) {
+ toAppendTo.append(number.toPlainString());
+ }
+ else {
+ formatDecimal(number, toAppendTo);
+ }
+ return toAppendTo;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+ if (this.isUnformatted) {
+ toAppendTo.append(Double.toString(number));
+ }
+ else {
+ formatDecimal(new BigDecimal(number), toAppendTo);
+ }
+ return toAppendTo;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
+ if (this.isUnformatted) {
+ toAppendTo.append(Long.toString(number));
+ }
+ else {
+ formatInteger(number<0, Long.toString(Math.abs(number)), toAppendTo);
+ }
+ return toAppendTo;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Number parse(String source, ParsePosition parsePosition) {
+ throw new UnsupportedOperationException();
+ }
+
+ } // class RawNumberFormat
+
+}
\ No newline at end of file
Property changes on: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/locale/LocaleMessageFormat.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/Handler.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/Handler.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/Handler.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2010 Alexandre WILLAUME, Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2010 Alexandre WILLAUME, Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/HandlerFactory.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/HandlerFactory.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/HandlerFactory.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2010 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2010 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/URLConnection.java
===================================================================
--- trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/URLConnection.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/java/org/arakhne/vmutil/resource/URLConnection.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2010 Alexandre WILLAUME, Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2010 Alexandre WILLAUME, Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/resources/org/arakhne/vmutil/OperatingSystem.properties
===================================================================
--- trunk/arakhneVmutils/java/src/main/resources/org/arakhne/vmutil/OperatingSystem.properties 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/resources/org/arakhne/vmutil/OperatingSystem.properties 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,6 +1,8 @@
# $Id$
#
-# Copyright (C) 2011 Stephane GALLANDrary is free software; you can redistribute it and/or
+# Copyright (C) 2011 Stephane GALLAND.
+#
+# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/main/resources/org/arakhne/vmutil/OperatingSystem_fr.properties
===================================================================
--- trunk/arakhneVmutils/java/src/main/resources/org/arakhne/vmutil/OperatingSystem_fr.properties 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/main/resources/org/arakhne/vmutil/OperatingSystem_fr.properties 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,6 +1,8 @@
# $Id$
#
-# Copyright (C) 2011 Stephane GALLANDrary is free software; you can redistribute it and/or
+# Copyright (C) 2011 Stephane GALLAND.
+#
+# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/CallerTest.java
===================================================================
--- trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/CallerTest.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/CallerTest.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,6 +1,8 @@
/* $Id$
*
- * Copyright (C) 2007-09 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2007-09 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/ClasspathUtilTest.java
===================================================================
--- trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/ClasspathUtilTest.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/ClasspathUtilTest.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,6 +1,8 @@
/* $Id$
*
- * Copyright (C) 2007-09 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2007-09 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/FileSystemTest.java
===================================================================
--- trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/FileSystemTest.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/FileSystemTest.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,6 +1,8 @@
/* $Id$
*
- * Copyright (C) 2007-09 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2007-09 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/ResourcesTest.java
===================================================================
--- trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/ResourcesTest.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/ResourcesTest.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,6 +1,8 @@
/* $Id$
*
- * Copyright (C) 2007-09 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2007-09 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/VMCommandLineTest.java
===================================================================
--- trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/VMCommandLineTest.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/VMCommandLineTest.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,6 +1,8 @@
/* $Id$
*
- * Copyright (C) 2007-09 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2007-09 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Modified: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/file/URLConnectionTest.java
===================================================================
--- trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/file/URLConnectionTest.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/file/URLConnectionTest.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2010 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2010 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Added: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/LocaleStub.java
===================================================================
--- trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/LocaleStub.java (rev 0)
+++ trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/LocaleStub.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -0,0 +1,43 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 2005-10, Multiagent Team,
+ * Laboratoire Systemes et Transports,
+ * Universite de Technologie de Belfort-Montbeliard.
+ * All rights reserved.
+ *
+ * Copyright (C) 2012 Stephane GALLAND, Olivier LAMOTTE.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * This program is free software; you can redistribute it and/or modify
+ */
+
+package org.arakhne.vmutil.locale;
+
+/**
+ * @author $Author: galland$
+ * @version $FullVersion$
+ * @mavengroupid $GroupId$
+ * @mavenartifactid $ArtifactId$
+ */
+class LocaleStub {
+
+ /**
+ */
+ public LocaleStub() {
+ //
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/LocaleStub.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/LocaleTest.java
===================================================================
--- trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/LocaleTest.java (rev 0)
+++ trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/LocaleTest.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -0,0 +1,890 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 2005-10, Multiagent Team,
+ * Laboratoire Systemes et Transports,
+ * Universite de Technologie de Belfort-Montbeliard.
+ * All rights reserved.
+ *
+ * Copyright (C) 2012 Stephane GALLAND, Olivier LAMOTTE.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * This program is free software; you can redistribute it and/or modify
+ */
+
+package org.arakhne.vmutil.locale;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.MessageFormat;
+
+import junit.framework.TestCase;
+
+/**
+ * @author $Author: galland$
+ * @version $FullVersion$
+ * @mavengroupid $GroupId$
+ * @mavenartifactid $ArtifactId$
+ */
+public class LocaleTest extends TestCase {
+
+ private final LocaleStub tmp = new LocaleStub();
+ private static final String RESOURCE1 = "org/arakhne/vmutil/locale/LocaleTest"; //$NON-NLS-1$
+ private static final String RESOURCE2 = "org/arakhne/vmutil/locale/LocaleStub"; //$NON-NLS-1$
+ private static final String NOKEY = "NOKEY"; //$NON-NLS-1$
+ private static final String KEY1 = "ONE"; //$NON-NLS-1$
+ private static final String KEY2 = "TWO"; //$NON-NLS-1$
+ private static final String KEY3 = "THREE"; //$NON-NLS-1$
+ private static final String DEFAULT = "DEFAULT"; //$NON-NLS-1$
+ private static final String P1 = "P1"; //$NON-NLS-1$
+ private static final String P2 = "P2"; //$NON-NLS-1$
+ private static final String P3 = "P3"; //$NON-NLS-1$
+
+ /**
+ */
+ public void testGetStringWithDefaultFromStringStringStringStringArray() {
+ assert(this.tmp!=null);
+ assertEquals(
+ DEFAULT,
+ Locale.getStringWithDefaultFrom(RESOURCE1,NOKEY,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefaultFrom(RESOURCE1,KEY1,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefaultFrom(RESOURCE1,KEY1,DEFAULT,P3,P1,P2));
+
+ assertEquals(
+ DEFAULT,
+ Locale.getStringWithDefaultFrom(RESOURCE2,NOKEY,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "DEF P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefaultFrom(RESOURCE2,KEY1,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "DEF P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefaultFrom(RESOURCE2,KEY1,DEFAULT,P3,P1,P2));
+ }
+
+ /**
+ */
+ public void testGetStringWithDefaultFromClassLoaderStringStringStringStringArray() {
+ ClassLoader l = LocaleTest.class.getClassLoader();
+ assertEquals(
+ DEFAULT,
+ Locale.getStringWithDefaultFrom(l, RESOURCE1,NOKEY,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefaultFrom(l, RESOURCE1,KEY1,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefaultFrom(l, RESOURCE1,KEY1,DEFAULT,P3,P1,P2));
+
+ assertEquals(
+ DEFAULT,
+ Locale.getStringWithDefaultFrom(l, RESOURCE2,NOKEY,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "DEF P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefaultFrom(l, RESOURCE2,KEY1,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "DEF P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefaultFrom(l, RESOURCE2,KEY1,DEFAULT,P3,P1,P2));
+ }
+
+ /**
+ */
+ public void testGetStringFromStringStringStringArray() {
+ assertEquals(NOKEY,
+ Locale.getStringFrom(RESOURCE1,NOKEY,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringFrom(RESOURCE1,KEY1,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringFrom(RESOURCE1,KEY1,P3,P1,P2));
+
+ assertEquals(
+ NOKEY,
+ Locale.getStringFrom(RESOURCE2,NOKEY,P1,P2,P3));
+ assertEquals(
+ "DEF P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringFrom(RESOURCE2,KEY1,P1,P2,P3));
+ assertEquals(
+ "DEF P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringFrom(RESOURCE2,KEY1,P3,P1,P2));
+ }
+
+ /**
+ */
+ public void testGetStringFromClassLoaderStringStringStringArray() {
+ ClassLoader l = LocaleTest.class.getClassLoader();
+
+ assertEquals(NOKEY,
+ Locale.getStringFrom(l, RESOURCE1,NOKEY,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringFrom(l, RESOURCE1,KEY1,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringFrom(l, RESOURCE1,KEY1,P3,P1,P2));
+
+ assertEquals(
+ NOKEY,
+ Locale.getStringFrom(l, RESOURCE2,NOKEY,P1,P2,P3));
+ assertEquals(
+ "DEF P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringFrom(l, RESOURCE2,KEY1,P1,P2,P3));
+ assertEquals(
+ "DEF P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringFrom(l, RESOURCE2,KEY1,P3,P1,P2));
+ }
+
+ /**
+ */
+ public void testGetStringClassStringStringArray() {
+ assertEquals(NOKEY,
+ Locale.getString(LocaleTest.class,NOKEY,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getString(LocaleTest.class,KEY1,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getString(LocaleTest.class,KEY1,P3,P1,P2));
+
+ assertEquals(
+ NOKEY,
+ Locale.getString(LocaleStub.class,NOKEY,P1,P2,P3));
+ assertEquals(
+ "DEF P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getString(LocaleStub.class,KEY1,P1,P2,P3));
+ assertEquals(
+ "DEF P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getString(LocaleStub.class,KEY1,P3,P1,P2));
+ }
+
+ /**
+ */
+ public void testGetStringClassLoaderClassStringStringArray() {
+ ClassLoader l = LocaleTest.class.getClassLoader();
+
+ assertEquals(NOKEY,
+ Locale.getString(l, LocaleTest.class,NOKEY,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getString(l, LocaleTest.class,KEY1,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getString(l, LocaleTest.class,KEY1,P3,P1,P2));
+
+ assertEquals(
+ NOKEY,
+ Locale.getString(l, LocaleStub.class,NOKEY,P1,P2,P3));
+ assertEquals(
+ "DEF P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getString(l, LocaleStub.class,KEY1,P1,P2,P3));
+ assertEquals(
+ "DEF P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getString(l, LocaleStub.class,KEY1,P3,P1,P2));
+ }
+
+ /**
+ */
+ public void testGetStringWithDefaultClassStringStringStringArray() {
+ assertEquals(
+ DEFAULT,
+ Locale.getStringWithDefault(LocaleTest.class,NOKEY,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(LocaleTest.class,KEY1,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(LocaleTest.class,KEY1,DEFAULT,P3,P1,P2));
+
+ assertEquals(
+ DEFAULT,
+ Locale.getStringWithDefault(LocaleStub.class,NOKEY,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "DEF P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(LocaleStub.class,KEY1,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "DEF P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(LocaleStub.class,KEY1,DEFAULT,P3,P1,P2));
+ }
+
+ /**
+ */
+ public void testGetStringWithDefaultClassLoaderClassStringStringStringArray() {
+ ClassLoader l = LocaleTest.class.getClassLoader();
+
+ assertEquals(
+ DEFAULT,
+ Locale.getStringWithDefault(l, LocaleTest.class,NOKEY,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(l, LocaleTest.class,KEY1,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(l, LocaleTest.class,KEY1,DEFAULT,P3,P1,P2));
+
+ assertEquals(
+ DEFAULT,
+ Locale.getStringWithDefault(l, LocaleStub.class,NOKEY,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "DEF P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(l, LocaleStub.class,KEY1,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "DEF P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(l, LocaleStub.class,KEY1,DEFAULT,P3,P1,P2));
+ }
+
+ /**
+ */
+ public void testGetStringStringStringArray() {
+ assertEquals(
+ NOKEY,
+ Locale.getString(NOKEY,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getString(KEY1,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getString(KEY1,P3,P1,P2));
+ try {
+ Locale.getString(KEY2);
+ fail("expecting IllegalArgumentException"); //$NON-NLS-1$
+ }
+ catch(IllegalArgumentException _) {
+ // expected exception
+ }
+ assertEquals(
+ "(d92b87b0-efe9-4dd9-903f-7c994b8e2a9f)", //$NON-NLS-1$
+ Locale.getString(KEY3));
+ }
+
+ /**
+ */
+ public void testGetStringClassLoaderStringStringArray() {
+ ClassLoader l = LocaleTest.class.getClassLoader();
+
+ assertEquals(
+ NOKEY,
+ Locale.getString(l, NOKEY,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getString(l, KEY1,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getString(l, KEY1,P3,P1,P2));
+ try {
+ Locale.getString(l, KEY2);
+ fail("expecting IllegalArgumentException"); //$NON-NLS-1$
+ }
+ catch(IllegalArgumentException _) {
+ // expected exception
+ }
+ assertEquals(
+ "(d92b87b0-efe9-4dd9-903f-7c994b8e2a9f)", //$NON-NLS-1$
+ Locale.getString(l, KEY3));
+ }
+
+ /**
+ */
+ public void testGetStringWithDefaultStringStringStringArray() {
+ assertEquals(
+ DEFAULT,
+ Locale.getStringWithDefault(NOKEY,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(KEY1,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(KEY1,DEFAULT,P3,P1,P2));
+ try {
+ Locale.getStringWithDefault(KEY2,DEFAULT);
+ fail("expecting IllegalArgumentException"); //$NON-NLS-1$
+ }
+ catch(IllegalArgumentException _) {
+ //expected exception
+ }
+ assertEquals(
+ "(d92b87b0-efe9-4dd9-903f-7c994b8e2a9f)", //$NON-NLS-1$
+ Locale.getStringWithDefault(KEY3,DEFAULT));
+ }
+
+ /**
+ */
+ public void testGetStringWithDefaultClassLoaderStringStringStringArray() {
+ ClassLoader l = LocaleTest.class.getClassLoader();
+
+ assertEquals(
+ DEFAULT,
+ Locale.getStringWithDefault(l, NOKEY,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P1 'P2' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(l, KEY1,DEFAULT,P1,P2,P3));
+ assertEquals(
+ "ABC P3 'P1' {2}", //$NON-NLS-1$
+ Locale.getStringWithDefault(l, KEY1,DEFAULT,P3,P1,P2));
+ try {
+ Locale.getStringWithDefault(l, KEY2, DEFAULT);
+ fail("expecting IllegalArgumentException"); //$NON-NLS-1$
+ }
+ catch(IllegalArgumentException _) {
+ // expected exception
+ }
+ assertEquals(
+ "(d92b87b0-efe9-4dd9-903f-7c994b8e2a9f)", //$NON-NLS-1$
+ Locale.getStringWithDefault(l, KEY3, DEFAULT));
+ }
+
+ /**
+ */
+ public void testGetStringWithRawFormatStyle() {
+ Number data;
+ String raw, localized;
+
+ data = Double.valueOf(123.456);
+ raw = Double.toString(123.456);
+ localized = MessageFormat.format("{0}", data); //$NON-NLS-1$
+ assertEquals(
+ localized+" "+raw, //$NON-NLS-1$
+ Locale.getString("FOUR", data)); //$NON-NLS-1$
+
+ data = Double.valueOf(-123.456);
+ raw = Double.toString(-123.456);
+ localized = MessageFormat.format("{0}", data); //$NON-NLS-1$
+ assertEquals(
+ localized+" "+raw, //$NON-NLS-1$
+ Locale.getString("FOUR", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(123456);
+ raw = Long.toString(123456);
+ localized = MessageFormat.format("{0}", data); //$NON-NLS-1$
+ assertEquals(
+ localized+" "+raw, //$NON-NLS-1$
+ Locale.getString("FOUR", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(-123456);
+ raw = Long.toString(-123456);
+ localized = MessageFormat.format("{0}", data); //$NON-NLS-1$
+ assertEquals(
+ localized+" "+raw, //$NON-NLS-1$
+ Locale.getString("FOUR", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)123);
+ raw = Short.toString((short)123);
+ localized = MessageFormat.format("{0}", data); //$NON-NLS-1$
+ assertEquals(
+ localized+" "+raw, //$NON-NLS-1$
+ Locale.getString("FOUR", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)-123);
+ raw = Short.toString((short)-123);
+ localized = MessageFormat.format("{0}", data); //$NON-NLS-1$
+ assertEquals(
+ localized+" "+raw, //$NON-NLS-1$
+ Locale.getString("FOUR", data)); //$NON-NLS-1$
+
+ raw = "123456789123456789123456789.123456789"; //$NON-NLS-1$
+ data = new BigDecimal(raw);
+ localized = MessageFormat.format("{0}", data); //$NON-NLS-1$
+ assertEquals(
+ localized+" "+raw, //$NON-NLS-1$
+ Locale.getString("FOUR", data)); //$NON-NLS-1$
+
+ raw = "-123456789123456789123456789.123456789"; //$NON-NLS-1$
+ data = new BigDecimal(raw);
+ localized = MessageFormat.format("{0}", data); //$NON-NLS-1$
+ assertEquals(
+ localized+" "+raw, //$NON-NLS-1$
+ Locale.getString("FOUR", data)); //$NON-NLS-1$
+
+ raw = "123456789123456789123456789123456789"; //$NON-NLS-1$
+ data = new BigInteger(raw);
+ localized = MessageFormat.format("{0}", data); //$NON-NLS-1$
+ assertEquals(
+ localized+" "+raw, //$NON-NLS-1$
+ Locale.getString("FOUR", data)); //$NON-NLS-1$
+
+ raw = "-123456789123456789123456789123456789"; //$NON-NLS-1$
+ data = new BigInteger(raw);
+ localized = MessageFormat.format("{0}", data); //$NON-NLS-1$
+ assertEquals(
+ localized+" "+raw, //$NON-NLS-1$
+ Locale.getString("FOUR", data)); //$NON-NLS-1$
+ }
+
+ /**
+ */
+ public void testGetStringWithRawFormatStyleWithFormat1() {
+ Number data;
+
+ data = Double.valueOf(123.456);
+ assertEquals(
+ "123", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = Double.valueOf(-123.456);
+ assertEquals(
+ "-123", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(123456);
+ assertEquals(
+ "123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(-123456);
+ assertEquals(
+ "-123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)123);
+ assertEquals(
+ "123", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)-123);
+ assertEquals(
+ "-123", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456790", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456790", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = new BigInteger("123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+
+ data = new BigInteger("-123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_1", data)); //$NON-NLS-1$
+ }
+
+ /**
+ */
+ public void testGetStringWithRawFormatStyleWithFormat2() {
+ Number data;
+
+ data = Double.valueOf(123.456);
+ assertEquals(
+ "123", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = Double.valueOf(-123.456);
+ assertEquals(
+ "-123", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(123456);
+ assertEquals(
+ "123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(-123456);
+ assertEquals(
+ "-123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)123);
+ assertEquals(
+ "123", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)-123);
+ assertEquals(
+ "-123", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456790", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456790", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = new BigInteger("123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+
+ data = new BigInteger("-123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_2", data)); //$NON-NLS-1$
+ }
+
+ /**
+ */
+ public void testGetStringWithRawFormatStyleWithFormat3() {
+ Number data;
+
+ data = Double.valueOf(123.456);
+ assertEquals(
+ "123.5", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = Double.valueOf(-123.456);
+ assertEquals(
+ "-123.5", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(123456);
+ assertEquals(
+ "123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(-123456);
+ assertEquals(
+ "-123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)123);
+ assertEquals(
+ "123", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)-123);
+ assertEquals(
+ "-123", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789.1", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456790.0", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789.1", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456790.0", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = new BigInteger("123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+
+ data = new BigInteger("-123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_3", data)); //$NON-NLS-1$
+ }
+
+ /**
+ */
+ public void testGetStringWithRawFormatStyleWithFormat4() {
+ Number data;
+
+ data = Double.valueOf(123.456);
+ assertEquals(
+ "123.46", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = Double.valueOf(-123.456);
+ assertEquals(
+ "-123.46", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(123456);
+ assertEquals(
+ "123456.0", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(-123456);
+ assertEquals(
+ "-123456.0", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)123);
+ assertEquals(
+ "123.0", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)-123);
+ assertEquals(
+ "-123.0", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789.12", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789.99", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789.12", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789.99", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = new BigInteger("123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789123456789.0", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+
+ data = new BigInteger("-123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789123456789.0", //$NON-NLS-1$
+ Locale.getString("FORMAT_4", data)); //$NON-NLS-1$
+ }
+
+ /**
+ */
+ public void testGetStringWithRawFormatStyleWithFormat5() {
+ Number data;
+
+ data = Double.valueOf(123.456);
+ assertEquals(
+ "123.456", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = Double.valueOf(-123.456);
+ assertEquals(
+ "-123.456", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(123456);
+ assertEquals(
+ "123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(-123456);
+ assertEquals(
+ "-123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)123);
+ assertEquals(
+ "123", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)-123);
+ assertEquals(
+ "-123", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789.123", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789.988", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789.123", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789.988", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = new BigInteger("123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+
+ data = new BigInteger("-123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_5", data)); //$NON-NLS-1$
+ }
+
+ /**
+ */
+ public void testGetStringWithRawFormatStyleWithFormat6() {
+ Number data;
+
+ data = Double.valueOf(123.456);
+ assertEquals(
+ "123", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = Double.valueOf(-123.456);
+ assertEquals(
+ "-123", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(123456);
+ assertEquals(
+ "123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(-123456);
+ assertEquals(
+ "-123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)123);
+ assertEquals(
+ "123", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)-123);
+ assertEquals(
+ "-123", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456790", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456790", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = new BigInteger("123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+
+ data = new BigInteger("-123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_6", data)); //$NON-NLS-1$
+ }
+
+ /**
+ */
+ public void testGetStringWithRawFormatStyleWithFormat7() {
+ Number data;
+
+ data = Double.valueOf(123.456);
+ assertEquals(
+ "123", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = Double.valueOf(-123.456);
+ assertEquals(
+ "-123", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(123456);
+ assertEquals(
+ "123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = Long.valueOf(-123456);
+ assertEquals(
+ "-123456", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)123);
+ assertEquals(
+ "123", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = Short.valueOf((short)-123);
+ assertEquals(
+ "-123", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456790", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = new BigDecimal("-123456789123456789123456789.987654321"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456790", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = new BigInteger("123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+
+ data = new BigInteger("-123456789123456789123456789123456789"); //$NON-NLS-1$
+ assertEquals(
+ "-123456789123456789123456789123456789", //$NON-NLS-1$
+ Locale.getString("FORMAT_7", data)); //$NON-NLS-1$
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/locale/LocaleTest.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/resource/URLConnectionTest.java
===================================================================
--- trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/resource/URLConnectionTest.java 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/arakhneVmutils/java/src/test/java/org/arakhne/vmutil/resource/URLConnectionTest.java 2012-01-28 14:04:42 UTC (rev 322)
@@ -1,7 +1,9 @@
/*
* $Id$
*
- * Copyright (C) 2010 Stephane GALLANDibrary is free software; you can redistribute it and/or
+ * Copyright (C) 2010 Stephane GALLAND.
+ *
+ * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
Added: trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/LocaleStub.properties
===================================================================
--- trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/LocaleStub.properties (rev 0)
+++ trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/LocaleStub.properties 2012-01-28 14:04:42 UTC (rev 322)
@@ -0,0 +1,25 @@
+# $Id$
+#
+# Copyright (c) 2010, Multiagent Team,
+# Laboratoire Systemes et Transports,
+# Universite de Technologie de Belfort-Montbeliard.
+# All rights reserved.
+#
+# Copyright (c) 2012, Stephane GALLAND, Olivier LAMOTTE.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+# This program is free software; you can redistribute it and/or modify
+
+ONE = DEF {0} ''{1}'' '{2}'
\ No newline at end of file
Property changes on: trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/LocaleStub.properties
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/LocaleTest.properties
===================================================================
--- trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/LocaleTest.properties (rev 0)
+++ trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/LocaleTest.properties 2012-01-28 14:04:42 UTC (rev 322)
@@ -0,0 +1,35 @@
+# $Id$
+#
+# Copyright (c) 2010, Multiagent Team,
+# Laboratoire Systemes et Transports,
+# Universite de Technologie de Belfort-Montbeliard.
+# All rights reserved.
+#
+# Copyright (c) 2012, Stephane GALLAND, Olivier LAMOTTE.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+# This program is free software; you can redistribute it and/or modify
+
+ONE = ABC {0} ''{1}'' '{2}'
+TWO = {d92b87b0-efe9-4dd9-903f-7c994b8e2a9f}
+THREE = (d92b87b0-efe9-4dd9-903f-7c994b8e2a9f)
+FOUR = {0} {0,number,raw}
+FORMAT_1 = {0,number,raw,#}
+FORMAT_2 = {0,number,raw,#.}
+FORMAT_3 = {0,number,raw,#.#}
+FORMAT_4 = {0,number,raw,0.0#}
+FORMAT_5 = {0,number,raw,#.###}
+FORMAT_6 = {0,number,raw,#0.}
+FORMAT_7 = {0,number,raw,#0}
\ No newline at end of file
Property changes on: trunk/arakhneVmutils/java/src/test/resources/org/arakhne/vmutil/locale/LocaleTest.properties
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-12-26 12:35:42 UTC (rev 321)
+++ trunk/pom.xml 2012-01-28 14:04:42 UTC (rev 322)
@@ -12,7 +12,7 @@
<description>Java library that provides additional tools.</description>
<properties>
- <year>2011</year>
+ <year>2012</year>
<sourceEncoding>UTF-8</sourceEncoding>
</properties>
@@ -208,6 +208,15 @@
<role>Developer</role>
</roles>
</developer>
+ <developer>
+ <id>lamotte</id>
+ <name>Olivier LAMOTTE</name>
+ <email>lamotte@xxxxxxxxxxx</email>
+ <url>http://www.arakhne.org/homes/lamotte.html</url>
+ <roles>
+ <role>Developer</role>
+ </roles>
+ </developer>
</developers>
<!-- ======================================= -->