[cal10n-dev] [GIT] Compiler assisted localization library branch, master, updated. v0.7.2-1-gb832495

added by portage for gitosis-gentoo git-noreply at pixie.qos.ch
Thu Jan 21 11:10:59 CET 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Compiler assisted localization library".

The branch, master has been updated
       via  b8324950e6bfc87673f670db82782e83e360d86e (commit)
      from  ff91eb1c05510d41e19243a039a85f4864af0648 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.qos.ch/gitweb/?p=cal10n.git;a=commit;h=b8324950e6bfc87673f670db82782e83e360d86e
http://github.com/ceki/cal10n/commit/b8324950e6bfc87673f670db82782e83e360d86e

commit b8324950e6bfc87673f670db82782e83e360d86e
Author: Ceki Gulcu <ceki at qos.ch>
Date:   Thu Jan 21 11:09:02 2010 +0100

    - crlf changes
    - updated log4j manual link to http://www.qos.ch/shop/products/log4jManual

diff --git a/.gitignore b/.gitignore
index 9539fb5..6b74944 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
-.settings
-target
-.classpath
-.project
+.settings
+target
+.classpath
+.project
 *~
\ No newline at end of file
diff --git a/LICENSE.txt b/LICENSE.txt
index 41db417..c7e86eb 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,24 +1,24 @@
-Copyright (c) 2009 QOS.ch
-All rights reserved.
-
-Permission is hereby granted, free  of charge, to any person obtaining
-a  copy  of this  software  and  associated  documentation files  (the
-"Software"), to  deal in  the Software without  restriction, including
-without limitation  the rights to  use, copy, modify,  merge, publish,
-distribute,  sublicense, and/or sell  copies of  the Software,  and to
-permit persons to whom the Software  is furnished to do so, subject to
-the following conditions:
-
-The  above  copyright  notice  and  this permission  notice  shall  be
-included in all copies or substantial portions of the Software.
-
-THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
-EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
-MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
+Copyright (c) 2009 QOS.ch
+All rights reserved.
+
+Permission is hereby granted, free  of charge, to any person obtaining
+a  copy  of this  software  and  associated  documentation files  (the
+"Software"), to  deal in  the Software without  restriction, including
+without limitation  the rights to  use, copy, modify,  merge, publish,
+distribute,  sublicense, and/or sell  copies of  the Software,  and to
+permit persons to whom the Software  is furnished to do so, subject to
+the following conditions:
+
+The  above  copyright  notice  and  this permission  notice  shall  be
+included in all copies or substantial portions of the Software.
+
+THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
diff --git a/cal10n-api/LICENSE.txt b/cal10n-api/LICENSE.txt
index 41db417..c7e86eb 100644
--- a/cal10n-api/LICENSE.txt
+++ b/cal10n-api/LICENSE.txt
@@ -1,24 +1,24 @@
-Copyright (c) 2009 QOS.ch
-All rights reserved.
-
-Permission is hereby granted, free  of charge, to any person obtaining
-a  copy  of this  software  and  associated  documentation files  (the
-"Software"), to  deal in  the Software without  restriction, including
-without limitation  the rights to  use, copy, modify,  merge, publish,
-distribute,  sublicense, and/or sell  copies of  the Software,  and to
-permit persons to whom the Software  is furnished to do so, subject to
-the following conditions:
-
-The  above  copyright  notice  and  this permission  notice  shall  be
-included in all copies or substantial portions of the Software.
-
-THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
-EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
-MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
+Copyright (c) 2009 QOS.ch
+All rights reserved.
+
+Permission is hereby granted, free  of charge, to any person obtaining
+a  copy  of this  software  and  associated  documentation files  (the
+"Software"), to  deal in  the Software without  restriction, including
+without limitation  the rights to  use, copy, modify,  merge, publish,
+distribute,  sublicense, and/or sell  copies of  the Software,  and to
+permit persons to whom the Software  is furnished to do so, subject to
+the following conditions:
+
+The  above  copyright  notice  and  this permission  notice  shall  be
+included in all copies or substantial portions of the Software.
+
+THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
diff --git a/cal10n-api/pom.xml b/cal10n-api/pom.xml
index 1e66469..899ec06 100644
--- a/cal10n-api/pom.xml
+++ b/cal10n-api/pom.xml
@@ -1,48 +1,48 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" 
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <parent>
-    <groupId>ch.qos.cal10n</groupId>
-    <artifactId>cal10n-parent</artifactId>
-    <version>0.7.2</version>
-  </parent>
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <artifactId>cal10n-api</artifactId>
-  <packaging>jar</packaging>
-  <name>Compiler assisted localization library (CAL10N) -    API</name>
-
-  <dependencies>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <configuration>
-          <archive>
-            <manifestEntries>
-              <Bundle-Version>${project.version}</Bundle-Version>
-              <Bundle-Description>${project.description}</Bundle-Description>
-              <Implementation-Version>${project.version}</Implementation-Version>
-            </manifestEntries>
-            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
-          </archive>
-        </configuration>
-        <executions>
-          <execution>
-            <id>bundle-test-jar</id>
-            <phase>package</phase>
-            <goals>
-              <goal>jar</goal>
-              <goal>test-jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <parent>
+    <groupId>ch.qos.cal10n</groupId>
+    <artifactId>cal10n-parent</artifactId>
+    <version>0.7.2</version>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>cal10n-api</artifactId>
+  <packaging>jar</packaging>
+  <name>Compiler assisted localization library (CAL10N) -    API</name>
+
+  <dependencies>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifestEntries>
+              <Bundle-Version>${project.version}</Bundle-Version>
+              <Bundle-Description>${project.description}</Bundle-Description>
+              <Implementation-Version>${project.version}</Implementation-Version>
+            </manifestEntries>
+            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+          </archive>
+        </configuration>
+        <executions>
+          <execution>
+            <id>bundle-test-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
\ No newline at end of file
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/BaseName.java b/cal10n-api/src/main/java/ch/qos/cal10n/BaseName.java
index eb78246..8218a9c 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/BaseName.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/BaseName.java
@@ -1,65 +1,65 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import ch.qos.cal10n.verifier.MessageKeyVerifier;
-
-/**
- * This annotation serves to designate the name of the resource bundle
- * corresponding to an enum type.
- * 
- * <p>
- * Typical usage is:
- * 
- * <pre>
- * &#064;BaseName(&quot;colors&quot;);
- * &#064;LocaleData( { @Locale(&quot;en&quot;), @Locale(&quot;jp&quot;) } )
- * public class enum Colors {
- *   RED, WHITE, BLUE; 
- * }
- * </pre>
- * 
- * <p>
- * In the above example, @BaseName("colors") means that there exists a family of
- * resource bundle files with the base name "colors". In conjunction with the
- * information provided in the &#64;{@link LocaleData} annotation, we can assume
- * that the files <em>colors_en.properties</em> and
- * <em>colors_jp.properties</em> exist.
- * 
- * <p>
- * Verification tools such as {@link MessageKeyVerifier} can then proceed to
- * check that the keys defined in the enum type match those in the corresponding
- * resource bundles.
- * 
- * @author Ceki G&uuml;lc&uuml;
- * 
- */
- at Retention(RetentionPolicy.RUNTIME)
- at Target(ElementType.TYPE)
-public @interface BaseName {
-  String value();
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import ch.qos.cal10n.verifier.MessageKeyVerifier;
+
+/**
+ * This annotation serves to designate the name of the resource bundle
+ * corresponding to an enum type.
+ * 
+ * <p>
+ * Typical usage is:
+ * 
+ * <pre>
+ * &#064;BaseName(&quot;colors&quot;);
+ * &#064;LocaleData( { @Locale(&quot;en&quot;), @Locale(&quot;jp&quot;) } )
+ * public class enum Colors {
+ *   RED, WHITE, BLUE; 
+ * }
+ * </pre>
+ * 
+ * <p>
+ * In the above example, @BaseName("colors") means that there exists a family of
+ * resource bundle files with the base name "colors". In conjunction with the
+ * information provided in the &#64;{@link LocaleData} annotation, we can assume
+ * that the files <em>colors_en.properties</em> and
+ * <em>colors_jp.properties</em> exist.
+ * 
+ * <p>
+ * Verification tools such as {@link MessageKeyVerifier} can then proceed to
+ * check that the keys defined in the enum type match those in the corresponding
+ * resource bundles.
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * 
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+ at Target(ElementType.TYPE)
+public @interface BaseName {
+  String value();
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/Cal10nConstants.java b/cal10n-api/src/main/java/ch/qos/cal10n/Cal10nConstants.java
index a940f1d..c2ef9b4 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/Cal10nConstants.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/Cal10nConstants.java
@@ -1,28 +1,28 @@
-package ch.qos.cal10n;
-
-/**
- * 
- * This class defines the shared constants in CAL10N.
- * 
- * @author Ceki G&uuml;lc&uuml;
- * 
- */
-public class Cal10nConstants {
-
-  final public static String MessageKeyVerifier_FQCN = "ch.qos.cal10n.verifier.MessageKeyVerifier";
-
-  final public static String CODE_URL_PREFIX = "http://cal10n.qos.ch/codes.html";
-  final public static String MISSING_BN_ANNOTATION_URL = Cal10nConstants.CODE_URL_PREFIX
-      + "#missingBaseNameAnnotation";
-
-  final public static String MISSING_LD_ANNOTATION_URL = Cal10nConstants.CODE_URL_PREFIX
-      + "#missingLDAnnotation";
-  final public static String MISSING_LD_ANNOTATION_MESSAGE = "Missing @LocaleData annotation in enum type [{0}]. Please see "
-      + MISSING_LD_ANNOTATION_URL;
-
-  final public static String MISSING_ENUM_TYPES_URL = Cal10nConstants.CODE_URL_PREFIX
-      + "#missingEnumType";
-
-  final public static String MISSING_ENUM_TYPES_MSG = "Missing <enumTypes> element. Please see "
-      + MISSING_ENUM_TYPES_URL;
-}
+package ch.qos.cal10n;
+
+/**
+ * 
+ * This class defines the shared constants in CAL10N.
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * 
+ */
+public class Cal10nConstants {
+
+  final public static String MessageKeyVerifier_FQCN = "ch.qos.cal10n.verifier.MessageKeyVerifier";
+
+  final public static String CODE_URL_PREFIX = "http://cal10n.qos.ch/codes.html";
+  final public static String MISSING_BN_ANNOTATION_URL = Cal10nConstants.CODE_URL_PREFIX
+      + "#missingBaseNameAnnotation";
+
+  final public static String MISSING_LD_ANNOTATION_URL = Cal10nConstants.CODE_URL_PREFIX
+      + "#missingLDAnnotation";
+  final public static String MISSING_LD_ANNOTATION_MESSAGE = "Missing @LocaleData annotation in enum type [{0}]. Please see "
+      + MISSING_LD_ANNOTATION_URL;
+
+  final public static String MISSING_ENUM_TYPES_URL = Cal10nConstants.CODE_URL_PREFIX
+      + "#missingEnumType";
+
+  final public static String MISSING_ENUM_TYPES_MSG = "Missing <enumTypes> element. Please see "
+      + MISSING_ENUM_TYPES_URL;
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/IMessageConveyor.java b/cal10n-api/src/main/java/ch/qos/cal10n/IMessageConveyor.java
index 02abc0e..8048480 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/IMessageConveyor.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/IMessageConveyor.java
@@ -1,77 +1,77 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n;
-
-import java.text.MessageFormat;
-
-// note that the getMessage method does not take a Locale.
-// It is supposed that the MessageConveyor instance knows
-// which locale to use.
-
-/**
- * Retrieve a localized message by its key as specified by an enum.
- * 
- * <p>
- * The strategy in retrieving messages may vary from implementation to
- * implementation.
- * 
- * @author Ceki G&uuml;lc&uuml;
- */
-public interface IMessageConveyor {
-
-  /**
-   * Retrieve a localized message by its key as specified by an enum.
-   * 
-   * <p>
-   * Note that any further arguments passed in 'args' will be interpolated using
-   * the translated message. The interpolation will be done by and according to
-   * conventions of {@link MessageFormat}.
-   * 
-   * @param <E>
-   *          an enum type
-   * @param key
-   *          an enum instance
-   * @param args
-   *          optional arguments
-   * @return The translated/localized message
-   */
-  <E extends Enum<?>> String getMessage(E key, Object... args) throws MessageConveyorException;
-
-  /**
-   * Syntactic sugar for the case where the massage is contained in a
-   * {@link MessageParameterObj}.
-   * 
-   * <p>
-   * Equivalent to calling
-   * 
-   * <pre>
-   * getMessage(mpo.getKey(), mpo.getArgs());
-   * </pre>
-   * 
-   * @see #getMessage(Enum, Object...)
-   * @param mpo
-   *          The MessageParameterObj to translate
-   * @return translated message
-   */
-  String getMessage(MessageParameterObj mpo) throws MessageConveyorException;
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n;
+
+import java.text.MessageFormat;
+
+// note that the getMessage method does not take a Locale.
+// It is supposed that the MessageConveyor instance knows
+// which locale to use.
+
+/**
+ * Retrieve a localized message by its key as specified by an enum.
+ * 
+ * <p>
+ * The strategy in retrieving messages may vary from implementation to
+ * implementation.
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ */
+public interface IMessageConveyor {
+
+  /**
+   * Retrieve a localized message by its key as specified by an enum.
+   * 
+   * <p>
+   * Note that any further arguments passed in 'args' will be interpolated using
+   * the translated message. The interpolation will be done by and according to
+   * conventions of {@link MessageFormat}.
+   * 
+   * @param <E>
+   *          an enum type
+   * @param key
+   *          an enum instance
+   * @param args
+   *          optional arguments
+   * @return The translated/localized message
+   */
+  <E extends Enum<?>> String getMessage(E key, Object... args) throws MessageConveyorException;
+
+  /**
+   * Syntactic sugar for the case where the massage is contained in a
+   * {@link MessageParameterObj}.
+   * 
+   * <p>
+   * Equivalent to calling
+   * 
+   * <pre>
+   * getMessage(mpo.getKey(), mpo.getArgs());
+   * </pre>
+   * 
+   * @see #getMessage(Enum, Object...)
+   * @param mpo
+   *          The MessageParameterObj to translate
+   * @return translated message
+   */
+  String getMessage(MessageParameterObj mpo) throws MessageConveyorException;
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/Locale.java b/cal10n-api/src/main/java/ch/qos/cal10n/Locale.java
index cd9da5d..e4f3a71 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/Locale.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/Locale.java
@@ -1,43 +1,43 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 
- * See {@link LocaleData} annotation.
- * 
- * @see LocaleData
- * 
- * @author Ceki G&uuml;lc&uuml;
- * 
- */
- at Retention(RetentionPolicy.RUNTIME)
- at Target(ElementType.TYPE)
-public @interface Locale {
-  String value();
-  String charset() default "";
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 
+ * See {@link LocaleData} annotation.
+ * 
+ * @see LocaleData
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * 
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+ at Target(ElementType.TYPE)
+public @interface Locale {
+  String value();
+  String charset() default "";
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/LocaleData.java b/cal10n-api/src/main/java/ch/qos/cal10n/LocaleData.java
index 605979d..9d5ad36 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/LocaleData.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/LocaleData.java
@@ -1,45 +1,45 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * In conjunction with the @Locale annotation, the @LocaleData annotation serves
- * to designate a list of locale names for which resource bundles exist. In
- * addition, you can specify a default charset for all locales. See the <a
- * href="http://cal10n.qos.ch/manual.html#charset">section on charsets<a> in the
- * manual for an explanation.
- * 
- * @author Ceki G&uuml;lc&uuml;
- * 
- */
- at Retention(RetentionPolicy.RUNTIME)
- at Target(ElementType.TYPE)
-public @interface LocaleData {
-  Locale[] value();
-
-  String defaultCharset() default "";
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * In conjunction with the @Locale annotation, the @LocaleData annotation serves
+ * to designate a list of locale names for which resource bundles exist. In
+ * addition, you can specify a default charset for all locales. See the <a
+ * href="http://cal10n.qos.ch/manual.html#charset">section on charsets<a> in the
+ * manual for an explanation.
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * 
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+ at Target(ElementType.TYPE)
+public @interface LocaleData {
+  Locale[] value();
+
+  String defaultCharset() default "";
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/MessageConveyor.java b/cal10n-api/src/main/java/ch/qos/cal10n/MessageConveyor.java
index ff9033e..e39831b 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/MessageConveyor.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/MessageConveyor.java
@@ -1,131 +1,131 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n;
-
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import ch.qos.cal10n.util.AnnotationExtractor;
-import ch.qos.cal10n.util.CAL10NResourceBundle;
-import ch.qos.cal10n.util.CAL10NResourceBundleFinder;
-
-/**
- * The default implementation for {@link IMessageConveyor} based on resource
- * bundles.
- * 
- * <p>
- * See also {@link #getMessage(Enum, Object...)} for details.
- * 
- * @author Ceki G&uuml;lc&uuml;
- */
-public class MessageConveyor implements IMessageConveyor {
-
-	final Locale locale;
-
-	final Map<String, CAL10NResourceBundle> cache = new ConcurrentHashMap<String, CAL10NResourceBundle>();
-
-	/**
-	 * The {@link Locale} associated with this instance.
-	 * 
-	 * @param locale
-	 */
-	public MessageConveyor(Locale locale) {
-		this.locale = locale;
-	}
-
-	/**
-	 * Given an enum as key, find the corresponding resource bundle and return
-	 * the corresponding internationalized.
-	 * 
-	 * <p>
-	 * The name of the resource bundle is defined via the {@link BaseName}
-	 * annotation whereas the locale is specified in this MessageConveyor
-	 * instance's constructor.
-	 * 
-	 * @param key
-	 *            an enum instance used as message key
-	 * 
-	 */
-	public <E extends Enum<?>> String getMessage(E key, Object... args)
-			throws MessageConveyorException {
-
-		String declararingClassName = key.getDeclaringClass().getName();
-		CAL10NResourceBundle rb = cache.get(declararingClassName);
-		if (rb == null || rb.hasChanged()) {
-			rb = lookup(key);
-			cache.put(declararingClassName, rb);
-		}
-
-		String keyAsStr = key.toString();
-		String value = rb.getString(keyAsStr);
-		if (value == null) {
-			return "No key found for " + keyAsStr;
-		} else {
-			if (args == null || args.length == 0) {
-				return value;
-			} else {
-				return MessageFormat.format(value, args);
-			}
-		}
-	}
-
-	private <E extends Enum<?>> CAL10NResourceBundle lookup(E key)
-			throws MessageConveyorException {
-		Class<?> declaringClass = key.getDeclaringClass();
-
-		String baseName = AnnotationExtractor.getBaseName(key
-				.getDeclaringClass());
-		if (baseName == null) {
-			throw new MessageConveyorException(
-					"Missing @BaseName annotation in enum type ["
-							+ key.getClass().getName() + "]. See also "
-							+ Cal10nConstants.MISSING_BN_ANNOTATION_URL);
-		}
-
-		String charset = AnnotationExtractor.getCharset(declaringClass, locale);
-		// use the declaring class' loader instead of
-		// this.getClass().getClassLoader()
-		// see also http://jira.qos.ch/browse/CAL-8
-		CAL10NResourceBundle rb = CAL10NResourceBundleFinder.getBundle(
-				declaringClass.getClassLoader(), baseName, locale, charset);
-
-		if (rb == null) {
-			throw new MessageConveyorException(
-					"Failed to locate resource bundle [" + baseName
-							+ "] for locale [" + locale + "] for enum type ["
-							+ key.getDeclaringClass().getName() + "]");
-		}
-		return rb;
-	}
-
-	public String getMessage(MessageParameterObj mpo)
-			throws MessageConveyorException {
-		if (mpo == null) {
-			throw new IllegalArgumentException(
-					"MessageParameterObj argumument cannot be null");
-		}
-		return getMessage(mpo.getKey(), mpo.getArgs());
-	}
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import ch.qos.cal10n.util.AnnotationExtractor;
+import ch.qos.cal10n.util.CAL10NResourceBundle;
+import ch.qos.cal10n.util.CAL10NResourceBundleFinder;
+
+/**
+ * The default implementation for {@link IMessageConveyor} based on resource
+ * bundles.
+ * 
+ * <p>
+ * See also {@link #getMessage(Enum, Object...)} for details.
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ */
+public class MessageConveyor implements IMessageConveyor {
+
+	final Locale locale;
+
+	final Map<String, CAL10NResourceBundle> cache = new ConcurrentHashMap<String, CAL10NResourceBundle>();
+
+	/**
+	 * The {@link Locale} associated with this instance.
+	 * 
+	 * @param locale
+	 */
+	public MessageConveyor(Locale locale) {
+		this.locale = locale;
+	}
+
+	/**
+	 * Given an enum as key, find the corresponding resource bundle and return
+	 * the corresponding internationalized.
+	 * 
+	 * <p>
+	 * The name of the resource bundle is defined via the {@link BaseName}
+	 * annotation whereas the locale is specified in this MessageConveyor
+	 * instance's constructor.
+	 * 
+	 * @param key
+	 *            an enum instance used as message key
+	 * 
+	 */
+	public <E extends Enum<?>> String getMessage(E key, Object... args)
+			throws MessageConveyorException {
+
+		String declararingClassName = key.getDeclaringClass().getName();
+		CAL10NResourceBundle rb = cache.get(declararingClassName);
+		if (rb == null || rb.hasChanged()) {
+			rb = lookup(key);
+			cache.put(declararingClassName, rb);
+		}
+
+		String keyAsStr = key.toString();
+		String value = rb.getString(keyAsStr);
+		if (value == null) {
+			return "No key found for " + keyAsStr;
+		} else {
+			if (args == null || args.length == 0) {
+				return value;
+			} else {
+				return MessageFormat.format(value, args);
+			}
+		}
+	}
+
+	private <E extends Enum<?>> CAL10NResourceBundle lookup(E key)
+			throws MessageConveyorException {
+		Class<?> declaringClass = key.getDeclaringClass();
+
+		String baseName = AnnotationExtractor.getBaseName(key
+				.getDeclaringClass());
+		if (baseName == null) {
+			throw new MessageConveyorException(
+					"Missing @BaseName annotation in enum type ["
+							+ key.getClass().getName() + "]. See also "
+							+ Cal10nConstants.MISSING_BN_ANNOTATION_URL);
+		}
+
+		String charset = AnnotationExtractor.getCharset(declaringClass, locale);
+		// use the declaring class' loader instead of
+		// this.getClass().getClassLoader()
+		// see also http://jira.qos.ch/browse/CAL-8
+		CAL10NResourceBundle rb = CAL10NResourceBundleFinder.getBundle(
+				declaringClass.getClassLoader(), baseName, locale, charset);
+
+		if (rb == null) {
+			throw new MessageConveyorException(
+					"Failed to locate resource bundle [" + baseName
+							+ "] for locale [" + locale + "] for enum type ["
+							+ key.getDeclaringClass().getName() + "]");
+		}
+		return rb;
+	}
+
+	public String getMessage(MessageParameterObj mpo)
+			throws MessageConveyorException {
+		if (mpo == null) {
+			throw new IllegalArgumentException(
+					"MessageParameterObj argumument cannot be null");
+		}
+		return getMessage(mpo.getKey(), mpo.getArgs());
+	}
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/MessageConveyorException.java b/cal10n-api/src/main/java/ch/qos/cal10n/MessageConveyorException.java
index bce3cb5..95f47ec 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/MessageConveyorException.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/MessageConveyorException.java
@@ -1,36 +1,36 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n;
-
-
-public class MessageConveyorException extends RuntimeException {
-
-  private static final long serialVersionUID = 175752418665292427L;
-
-  public MessageConveyorException(String msg) {
-    super(msg);
-  }
-  
-  public MessageConveyorException(String msg, Throwable t) {
-    super(msg, t);
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n;
+
+
+public class MessageConveyorException extends RuntimeException {
+
+  private static final long serialVersionUID = 175752418665292427L;
+
+  public MessageConveyorException(String msg) {
+    super(msg);
+  }
+  
+  public MessageConveyorException(String msg, Throwable t) {
+    super(msg, t);
+  }
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/MessageParameterObj.java b/cal10n-api/src/main/java/ch/qos/cal10n/MessageParameterObj.java
index 7dca602..b664712 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/MessageParameterObj.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/MessageParameterObj.java
@@ -1,104 +1,104 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n;
-
-import java.util.Arrays;
-
-/**
- * Holds data relevant for a deferred message lookup. This is useful when the
- * appropriate locale is <em>unknown</em> at the time or place where the message
- * key and message args are emitted. For example, a low level library might wish
- * to emit a localized message but it is only at the UI (user interface) layer
- * that the locale is known. As another example, imagine that the host where the
- * localized messages are presented to the user is in a different locale, e.g.
- * Japan, than the locale of the source host. e.g. US.
- * 
- * <p>
- * Instances of this class are intended to be immutable, subject to the
- * immutability of the supplied args.
- * 
- * @author Rick Beton
- * @author Ceki G&uuml;lc&uuml;
- * 
- */
-public class MessageParameterObj {
-
-  private final Enum<?> key;
-  private final Object[] args;
-
-  /**
-   * Constructs an instance.
-   * 
-   * @param key
-   *          the key for the localized message.
-   * @param args
-   *          any message parameters, as required.
-   */
-  public MessageParameterObj(Enum<?> key, Object... args) {
-    if (key == null) {
-      new IllegalArgumentException("Enum argument \"key\" can't be null");
-    }
-    this.key = key;
-    this.args = args;
-  }
-
-  public Enum<?> getKey() {
-    return key;
-  }
-
-  public Object[] getArgs() {
-    return args;
-  }
-
-  @Override
-  public String toString() {
-    final StringBuilder b = new StringBuilder("MessageParameterObj(");
-    b.append(key.name());
-    b.append(", ");
-    b.append(Arrays.toString(args));
-    b.append(")");
-    return b.toString();
-  }
-
-  @Override
-  public int hashCode() {
-    return key.hashCode();
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (obj == null)
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-
-    MessageParameterObj other = (MessageParameterObj) obj;
-    // key cannot be null by virtue of the check done within the constructor
-    if (!key.equals(other.key))
-      return false;
-
-    return Arrays.equals(args, other.args);
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n;
+
+import java.util.Arrays;
+
+/**
+ * Holds data relevant for a deferred message lookup. This is useful when the
+ * appropriate locale is <em>unknown</em> at the time or place where the message
+ * key and message args are emitted. For example, a low level library might wish
+ * to emit a localized message but it is only at the UI (user interface) layer
+ * that the locale is known. As another example, imagine that the host where the
+ * localized messages are presented to the user is in a different locale, e.g.
+ * Japan, than the locale of the source host. e.g. US.
+ * 
+ * <p>
+ * Instances of this class are intended to be immutable, subject to the
+ * immutability of the supplied args.
+ * 
+ * @author Rick Beton
+ * @author Ceki G&uuml;lc&uuml;
+ * 
+ */
+public class MessageParameterObj {
+
+  private final Enum<?> key;
+  private final Object[] args;
+
+  /**
+   * Constructs an instance.
+   * 
+   * @param key
+   *          the key for the localized message.
+   * @param args
+   *          any message parameters, as required.
+   */
+  public MessageParameterObj(Enum<?> key, Object... args) {
+    if (key == null) {
+      new IllegalArgumentException("Enum argument \"key\" can't be null");
+    }
+    this.key = key;
+    this.args = args;
+  }
+
+  public Enum<?> getKey() {
+    return key;
+  }
+
+  public Object[] getArgs() {
+    return args;
+  }
+
+  @Override
+  public String toString() {
+    final StringBuilder b = new StringBuilder("MessageParameterObj(");
+    b.append(key.name());
+    b.append(", ");
+    b.append(Arrays.toString(args));
+    b.append(")");
+    return b.toString();
+  }
+
+  @Override
+  public int hashCode() {
+    return key.hashCode();
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+
+    MessageParameterObj other = (MessageParameterObj) obj;
+    // key cannot be null by virtue of the check done within the constructor
+    if (!key.equals(other.key))
+      return false;
+
+    return Arrays.equals(args, other.args);
+  }
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/package.html b/cal10n-api/src/main/java/ch/qos/cal10n/package.html
index c2d3988..39842db 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/package.html
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/package.html
@@ -1,18 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-
-<html>
-<head>
-<title></title>
-</head>
-
-<body>
-
-<p>The main package of the CAL10N project.</p>
-
-<p>It contains the {@link IMessageConveyor} interface and the default
-implementation {@link MessageConveyor}.
-
- 
-</p>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+
+<html>
+<head>
+<title></title>
+</head>
+
+<body>
+
+<p>The main package of the CAL10N project.</p>
+
+<p>It contains the {@link IMessageConveyor} interface and the default
+implementation {@link MessageConveyor}.
+
+ 
+</p>
+</body>
+</html>
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/util/AnnotationExtractor.java b/cal10n-api/src/main/java/ch/qos/cal10n/util/AnnotationExtractor.java
index 0601594..45eb051 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/util/AnnotationExtractor.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/util/AnnotationExtractor.java
@@ -1,105 +1,105 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import ch.qos.cal10n.BaseName;
-import ch.qos.cal10n.Locale;
-import ch.qos.cal10n.LocaleData;
-
-/**
- * 
- * @author Ceki G&uuml;lc&uuml;
- * 
- */
-public class AnnotationExtractor {
-
-  static public <E extends Enum<?>> String getBaseName(Class<E> enumClass) {
-    BaseName rbnAnnotation = (BaseName) enumClass.getAnnotation(BaseName.class);
-    if (rbnAnnotation == null) {
-      return null;
-    }
-    return rbnAnnotation.value();
-  }
-
-  static public <E extends Enum<?>> String[] getLocaleNames(Class<E> enumClass) {
-    Locale[] localeDataArray = getLocaleData(enumClass);
-
-    if (localeDataArray == null) {
-      return null;
-    }
-
-    String[] names = new String[localeDataArray.length];
-    for (int i = 0; i < localeDataArray.length; i++) {
-      names[i] = localeDataArray[i].value();
-    }
-    return names;
-  }
-
-  static public <E extends Enum<?>> Locale[] getLocaleData(Class<E> enumClass) {
-    LocaleData localeDataArrayAnnotation = (LocaleData) enumClass
-        .getAnnotation(LocaleData.class);
-    if (localeDataArrayAnnotation == null) {
-      return null;
-    }
-    return localeDataArrayAnnotation.value();
-  }
-
-  public static String getCharset(Class<?> enumClass,
-      java.util.Locale juLocale) {
-    LocaleData localeDataArrayAnnotation = (LocaleData) enumClass
-        .getAnnotation(LocaleData.class);
-    if (localeDataArrayAnnotation == null) {
-      return "";
-    }
-    
-    String defaultCharset = localeDataArrayAnnotation.defaultCharset();
-    
-    Locale  la = findLocaleAnnotation(juLocale, localeDataArrayAnnotation);
-    String localeCharset = null;
-    if(la != null) {
-      localeCharset = la.charset();
-    }
-    if(!isEmttyString(localeCharset)) {
-      return localeCharset;
-    }
-    
-    return defaultCharset;
-  }
-
-  static Locale findLocaleAnnotation(java.util.Locale julocale, LocaleData localeDataArrayAnnotation) {
-    Locale[] localeAnnotationArray = localeDataArrayAnnotation.value();
-    if(localeAnnotationArray == null) {
-      return null;
-    }
-    for(Locale la: localeAnnotationArray) {
-      if(la.value().equals(julocale.toString())) {
-        return la;
-      }
-    }
-    
-    return null;
-  }
-  
-  static boolean isEmttyString(String s) {
-    return s == null || s.length() == 0;
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import ch.qos.cal10n.BaseName;
+import ch.qos.cal10n.Locale;
+import ch.qos.cal10n.LocaleData;
+
+/**
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * 
+ */
+public class AnnotationExtractor {
+
+  static public <E extends Enum<?>> String getBaseName(Class<E> enumClass) {
+    BaseName rbnAnnotation = (BaseName) enumClass.getAnnotation(BaseName.class);
+    if (rbnAnnotation == null) {
+      return null;
+    }
+    return rbnAnnotation.value();
+  }
+
+  static public <E extends Enum<?>> String[] getLocaleNames(Class<E> enumClass) {
+    Locale[] localeDataArray = getLocaleData(enumClass);
+
+    if (localeDataArray == null) {
+      return null;
+    }
+
+    String[] names = new String[localeDataArray.length];
+    for (int i = 0; i < localeDataArray.length; i++) {
+      names[i] = localeDataArray[i].value();
+    }
+    return names;
+  }
+
+  static public <E extends Enum<?>> Locale[] getLocaleData(Class<E> enumClass) {
+    LocaleData localeDataArrayAnnotation = (LocaleData) enumClass
+        .getAnnotation(LocaleData.class);
+    if (localeDataArrayAnnotation == null) {
+      return null;
+    }
+    return localeDataArrayAnnotation.value();
+  }
+
+  public static String getCharset(Class<?> enumClass,
+      java.util.Locale juLocale) {
+    LocaleData localeDataArrayAnnotation = (LocaleData) enumClass
+        .getAnnotation(LocaleData.class);
+    if (localeDataArrayAnnotation == null) {
+      return "";
+    }
+    
+    String defaultCharset = localeDataArrayAnnotation.defaultCharset();
+    
+    Locale  la = findLocaleAnnotation(juLocale, localeDataArrayAnnotation);
+    String localeCharset = null;
+    if(la != null) {
+      localeCharset = la.charset();
+    }
+    if(!isEmttyString(localeCharset)) {
+      return localeCharset;
+    }
+    
+    return defaultCharset;
+  }
+
+  static Locale findLocaleAnnotation(java.util.Locale julocale, LocaleData localeDataArrayAnnotation) {
+    Locale[] localeAnnotationArray = localeDataArrayAnnotation.value();
+    if(localeAnnotationArray == null) {
+      return null;
+    }
+    for(Locale la: localeAnnotationArray) {
+      if(la.value().equals(julocale.toString())) {
+        return la;
+      }
+    }
+    
+    return null;
+  }
+  
+  static boolean isEmttyString(String s) {
+    return s == null || s.length() == 0;
+  }
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/util/CAL10NResourceBundle.java b/cal10n-api/src/main/java/ch/qos/cal10n/util/CAL10NResourceBundle.java
index d584cd7..9a9d06d 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/util/CAL10NResourceBundle.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/util/CAL10NResourceBundle.java
@@ -1,114 +1,114 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.ResourceBundle;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * 
- * @author Ceki G&uuml;lc&uuml;
- *
- */
-public class CAL10NResourceBundle extends ResourceBundle {
-
-  static long CHECK_DELAY = 10 * 60 * 1000; // 10 minutes delay
-
-  Map<String, String> map = new ConcurrentHashMap<String, String>();
-  File hostFile;
-  volatile long nextCheck;
-  long lastModified;
-  CAL10NResourceBundle parent;
-  
-  public CAL10NResourceBundle(Reader r, File file)
-      throws IOException {
-    read(r);
-    this.hostFile = file;
-    nextCheck = System.currentTimeMillis() + CHECK_DELAY;
-  }
-
-  void read(Reader r) throws IOException {
-    Parser p = new Parser(r, map);
-    p.parseAndPopulate();
-  }
-
-
-  public void setParent(CAL10NResourceBundle parent) {
-    this.parent = (parent);
-    //super.setParent(parent);
-  }
-
-  public boolean hasChanged() {
-    // if the host file is unknown, no point in a check
-    if (hostFile == null) {
-      return false;
-    }
-
-    long now = System.currentTimeMillis();
-    if (now < nextCheck) {
-      return false;
-    } else {
-      nextCheck = now + CHECK_DELAY;
-      if (lastModified != hostFile.lastModified()) {
-        lastModified = hostFile.lastModified();
-        return true;
-      } else {
-        return false;
-      }
-    }
-  }
-
-  /**
-   * WARNING: Used for testing purposes. Do not invoke directly in user code.
-   */
-  public void resetCheckTimes() {
-    nextCheck = 0;
-    lastModified = 0;
-  } 
-
-  @Override
-  public Enumeration<String> getKeys() {
-    Hashtable<String, String> ht = new Hashtable<String, String>(map);
-    if(parent != null) {
-      ht.putAll(parent.map);
-    }
-    return ht.keys();
-  }
-
-  @Override
-  protected Object handleGetObject(String key) {
-    if (key == null) {
-      throw new NullPointerException();
-    }
-    Object o = map.get(key);
-    if(o == null && parent != null) {
-      o = parent.handleGetObject(key);
-    }
-    return o;
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ *
+ */
+public class CAL10NResourceBundle extends ResourceBundle {
+
+  static long CHECK_DELAY = 10 * 60 * 1000; // 10 minutes delay
+
+  Map<String, String> map = new ConcurrentHashMap<String, String>();
+  File hostFile;
+  volatile long nextCheck;
+  long lastModified;
+  CAL10NResourceBundle parent;
+  
+  public CAL10NResourceBundle(Reader r, File file)
+      throws IOException {
+    read(r);
+    this.hostFile = file;
+    nextCheck = System.currentTimeMillis() + CHECK_DELAY;
+  }
+
+  void read(Reader r) throws IOException {
+    Parser p = new Parser(r, map);
+    p.parseAndPopulate();
+  }
+
+
+  public void setParent(CAL10NResourceBundle parent) {
+    this.parent = (parent);
+    //super.setParent(parent);
+  }
+
+  public boolean hasChanged() {
+    // if the host file is unknown, no point in a check
+    if (hostFile == null) {
+      return false;
+    }
+
+    long now = System.currentTimeMillis();
+    if (now < nextCheck) {
+      return false;
+    } else {
+      nextCheck = now + CHECK_DELAY;
+      if (lastModified != hostFile.lastModified()) {
+        lastModified = hostFile.lastModified();
+        return true;
+      } else {
+        return false;
+      }
+    }
+  }
+
+  /**
+   * WARNING: Used for testing purposes. Do not invoke directly in user code.
+   */
+  public void resetCheckTimes() {
+    nextCheck = 0;
+    lastModified = 0;
+  } 
+
+  @Override
+  public Enumeration<String> getKeys() {
+    Hashtable<String, String> ht = new Hashtable<String, String>(map);
+    if(parent != null) {
+      ht.putAll(parent.map);
+    }
+    return ht.keys();
+  }
+
+  @Override
+  protected Object handleGetObject(String key) {
+    if (key == null) {
+      throw new NullPointerException();
+    }
+    Object o = map.get(key);
+    if(o == null && parent != null) {
+      o = parent.handleGetObject(key);
+    }
+    return o;
+  }
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/util/CAL10NResourceBundleFinder.java b/cal10n-api/src/main/java/ch/qos/cal10n/util/CAL10NResourceBundleFinder.java
index 031efc7..8717a86 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/util/CAL10NResourceBundleFinder.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/util/CAL10NResourceBundleFinder.java
@@ -1,126 +1,126 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Locale;
-
-public class CAL10NResourceBundleFinder {
-
-  public static CAL10NResourceBundle getBundle(ClassLoader classLoader,
-      String baseName, Locale locale, String charset) {
-
-    // same as the JDK convention
-    //
-    // It generates a path name from the candidate bundle name by replacing all
-    // "."
-    // characters with "/" and appending the string ".properties".
-    // / see also http: // tinyurl.com/ldgej8
-    baseName = baseName.replace('.', '/');
-
-    String languageAndCountryCandidate = computeLanguageAndCountryCandidate(
-        baseName, locale);
-    String languageOnlyCandidate = computeLanguageOnlyCandidate(baseName,
-        locale);
-
-    CAL10NResourceBundle cprbLanguageOnly = makePropertyResourceBundle(
-        classLoader, languageOnlyCandidate, charset);
-    CAL10NResourceBundle cprbLanguageAndCountry = null;
-
-    if (languageAndCountryCandidate != null) {
-      cprbLanguageAndCountry = makePropertyResourceBundle(classLoader,
-          languageAndCountryCandidate, charset);
-    }
-
-    if (cprbLanguageAndCountry != null) {
-      cprbLanguageAndCountry.setParent(cprbLanguageOnly);
-      return cprbLanguageAndCountry;
-    }
-    return cprbLanguageOnly;
-  }
-
-  private static CAL10NResourceBundle makePropertyResourceBundle(
-      ClassLoader classLoader, String resourceCandiate, String charset) {
-
-    CAL10NResourceBundle prb = null;
-
-    URL url = classLoader.getResource(resourceCandiate);
-    if (url != null) {
-      try {
-        InputStream in = openConnectionForUrl(url);
-
-        Reader reader = toReader(in, charset);
-        if (charset == null || charset.length() == 0)
-          reader = new InputStreamReader(in);
-        else
-          reader = new InputStreamReader(in, charset);
-
-        prb = new CAL10NResourceBundle(reader, MiscUtil.urlToFile(url));
-        in.close();
-      } catch (IOException e) {
-      }
-    }
-    return prb;
-  }
-
-  static Reader toReader(InputStream in, String charset) {
-    if (charset == null || charset.length() == 0)
-      return new InputStreamReader(in);
-    else {
-      try {
-        return new InputStreamReader(in, charset);
-      } catch (UnsupportedEncodingException e) {
-        throw new IllegalArgumentException("Failed to open reader", e);
-      }
-    }
-  }
-
-  private static String computeLanguageAndCountryCandidate(String baseName,
-      Locale locale) {
-    String language = locale.getLanguage();
-    String country = locale.getCountry();
-    if (country != null && country.length() > 0) {
-      return baseName + "_" + language + "_" + country + ".properties";
-    } else {
-      return null;
-    }
-  }
-
-  private static String computeLanguageOnlyCandidate(String baseName,
-      Locale locale) {
-    String language = locale.getLanguage();
-    return baseName + "_" + language + ".properties";
-  }
-
-  private static InputStream openConnectionForUrl(URL url) throws IOException {
-    URLConnection urlConnection = url.openConnection();
-    urlConnection.setDefaultUseCaches(false);
-    InputStream in = urlConnection.getInputStream();
-    return in;
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Locale;
+
+public class CAL10NResourceBundleFinder {
+
+  public static CAL10NResourceBundle getBundle(ClassLoader classLoader,
+      String baseName, Locale locale, String charset) {
+
+    // same as the JDK convention
+    //
+    // It generates a path name from the candidate bundle name by replacing all
+    // "."
+    // characters with "/" and appending the string ".properties".
+    // / see also http: // tinyurl.com/ldgej8
+    baseName = baseName.replace('.', '/');
+
+    String languageAndCountryCandidate = computeLanguageAndCountryCandidate(
+        baseName, locale);
+    String languageOnlyCandidate = computeLanguageOnlyCandidate(baseName,
+        locale);
+
+    CAL10NResourceBundle cprbLanguageOnly = makePropertyResourceBundle(
+        classLoader, languageOnlyCandidate, charset);
+    CAL10NResourceBundle cprbLanguageAndCountry = null;
+
+    if (languageAndCountryCandidate != null) {
+      cprbLanguageAndCountry = makePropertyResourceBundle(classLoader,
+          languageAndCountryCandidate, charset);
+    }
+
+    if (cprbLanguageAndCountry != null) {
+      cprbLanguageAndCountry.setParent(cprbLanguageOnly);
+      return cprbLanguageAndCountry;
+    }
+    return cprbLanguageOnly;
+  }
+
+  private static CAL10NResourceBundle makePropertyResourceBundle(
+      ClassLoader classLoader, String resourceCandiate, String charset) {
+
+    CAL10NResourceBundle prb = null;
+
+    URL url = classLoader.getResource(resourceCandiate);
+    if (url != null) {
+      try {
+        InputStream in = openConnectionForUrl(url);
+
+        Reader reader = toReader(in, charset);
+        if (charset == null || charset.length() == 0)
+          reader = new InputStreamReader(in);
+        else
+          reader = new InputStreamReader(in, charset);
+
+        prb = new CAL10NResourceBundle(reader, MiscUtil.urlToFile(url));
+        in.close();
+      } catch (IOException e) {
+      }
+    }
+    return prb;
+  }
+
+  static Reader toReader(InputStream in, String charset) {
+    if (charset == null || charset.length() == 0)
+      return new InputStreamReader(in);
+    else {
+      try {
+        return new InputStreamReader(in, charset);
+      } catch (UnsupportedEncodingException e) {
+        throw new IllegalArgumentException("Failed to open reader", e);
+      }
+    }
+  }
+
+  private static String computeLanguageAndCountryCandidate(String baseName,
+      Locale locale) {
+    String language = locale.getLanguage();
+    String country = locale.getCountry();
+    if (country != null && country.length() > 0) {
+      return baseName + "_" + language + "_" + country + ".properties";
+    } else {
+      return null;
+    }
+  }
+
+  private static String computeLanguageOnlyCandidate(String baseName,
+      Locale locale) {
+    String language = locale.getLanguage();
+    return baseName + "_" + language + ".properties";
+  }
+
+  private static InputStream openConnectionForUrl(URL url) throws IOException {
+    URLConnection urlConnection = url.openConnection();
+    urlConnection.setDefaultUseCaches(false);
+    InputStream in = urlConnection.getInputStream();
+    return in;
+  }
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/util/MiscUtil.java b/cal10n-api/src/main/java/ch/qos/cal10n/util/MiscUtil.java
index 6f5489d..91df36d 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/util/MiscUtil.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/util/MiscUtil.java
@@ -1,57 +1,57 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import java.io.File;
-import java.net.URL;
-import java.util.Locale;
-
-public class MiscUtil {
-
-  public static Locale toLocale(String localeName) {
-    if (localeName == null) {
-
-    }
-    if (localeName.contains("_")) {
-      String[] array = localeName.split("_");
-      return new Locale(array[0], array[1]);
-    } else {
-      return new Locale(localeName);
-    }
-  }
-  
-  public static File urlToFile(URL url) {
-    if(url.getProtocol() != "file") {
-      return null;
-    }
-    String path = url.getPath();
-    if(path == null)
-      return null;
-    File candidate = new File(path);
-    if(candidate.exists()) {
-      return candidate;
-    } else {
-     return null;
-    }
-  }
-  
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import java.io.File;
+import java.net.URL;
+import java.util.Locale;
+
+public class MiscUtil {
+
+  public static Locale toLocale(String localeName) {
+    if (localeName == null) {
+
+    }
+    if (localeName.contains("_")) {
+      String[] array = localeName.split("_");
+      return new Locale(array[0], array[1]);
+    } else {
+      return new Locale(localeName);
+    }
+  }
+  
+  public static File urlToFile(URL url) {
+    if(url.getProtocol() != "file") {
+      return null;
+    }
+    String path = url.getPath();
+    if(path == null)
+      return null;
+    File candidate = new File(path);
+    if(candidate.exists()) {
+      return candidate;
+    } else {
+     return null;
+    }
+  }
+  
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/util/Parser.java b/cal10n-api/src/main/java/ch/qos/cal10n/util/Parser.java
index 1aa0f9a..c6b5602 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/util/Parser.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/util/Parser.java
@@ -1,130 +1,130 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import java.io.Reader;
-import java.util.List;
-import java.util.Map;
-
-
-/**
- * 
- * @author Ceki G&uuml;lc&uuml;
- *
- */
-import ch.qos.cal10n.util.Token.TokenType;
-
-// Given tokens k,s,v, \, and EOL
-// ^ denoting the null token
-// here is the grammar
-
-// E = EOL | k s V |  E | ^
-// V = v EOL | v '\' Vopt
-// Vopt = EOL V
-
-public class Parser {
-
-  final Reader reader;
-  final Map<String, String> map;
-
-  List<Token> tokenList;
-  int pointer = 0;
-
-  Parser(Reader r, Map<String, String> map) {
-    this.reader = r;
-    this.map = map;
-    TokenStream ts = new TokenStream(reader);
-    tokenList = ts.tokenize();
-  }
-
-  void parseAndPopulate() {
-    E();
-  }
-
-  private void E() {
-    Token t = getNextToken();
-    if (t == null) {
-      // we are done
-      return;
-    }
-    switch (t.tokenType) {
-    case EOL:
-      break;
-    case KEY:
-      String k = t.getValue();
-      t = getNextToken();
-      if (t.tokenType != TokenType.SEPARATOR) {
-        throw new IllegalStateException("Unexpected token " + t);
-      }
-      StringBuilder buf = new StringBuilder();
-      V(buf);
-      map.put(k, buf.toString());
-      break;
-    }
-    E();
-  }
-
-  // V = v EOL | v '\' Vopt
-  // Vopt = EOL V
-  private void V(StringBuilder buf) {
-
-    Token t = getNextToken();
-    if (t.tokenType != TokenType.VALUE) {
-      throw new IllegalStateException("Unexpected token " + t);
-    }
-    buf.append(t.getValue());
-
-    t = getNextToken();
-    if (t.tokenType == TokenType.EOL) {
-      return;
-    } else if (t.tokenType == TokenType.TRAILING_BACKSLASH) {
-      Vopt(buf);
-
-    }
-  }
-
-  private void Vopt(StringBuilder buf) {
-    Token t = getNextToken();
-    if (t.tokenType != TokenType.EOL) {
-      throw new IllegalStateException("Unexpected token " + t);
-    }
-    V(buf);
-  }
-
-  private Token getNextToken() {
-    if (pointer < tokenList.size()) {
-      return (Token) tokenList.get(pointer++);
-    }
-    return null;
-  }
-
-//  private Token getCurentToken() {
-//    if (pointer < tokenList.size()) {
-//      return (Token) tokenList.get(pointer);
-//    }
-//    return null;
-//  }
-//
-//  private void advanceTokenPointer() {
-//    pointer++;
-//  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import java.io.Reader;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ *
+ */
+import ch.qos.cal10n.util.Token.TokenType;
+
+// Given tokens k,s,v, \, and EOL
+// ^ denoting the null token
+// here is the grammar
+
+// E = EOL | k s V |  E | ^
+// V = v EOL | v '\' Vopt
+// Vopt = EOL V
+
+public class Parser {
+
+  final Reader reader;
+  final Map<String, String> map;
+
+  List<Token> tokenList;
+  int pointer = 0;
+
+  Parser(Reader r, Map<String, String> map) {
+    this.reader = r;
+    this.map = map;
+    TokenStream ts = new TokenStream(reader);
+    tokenList = ts.tokenize();
+  }
+
+  void parseAndPopulate() {
+    E();
+  }
+
+  private void E() {
+    Token t = getNextToken();
+    if (t == null) {
+      // we are done
+      return;
+    }
+    switch (t.tokenType) {
+    case EOL:
+      break;
+    case KEY:
+      String k = t.getValue();
+      t = getNextToken();
+      if (t.tokenType != TokenType.SEPARATOR) {
+        throw new IllegalStateException("Unexpected token " + t);
+      }
+      StringBuilder buf = new StringBuilder();
+      V(buf);
+      map.put(k, buf.toString());
+      break;
+    }
+    E();
+  }
+
+  // V = v EOL | v '\' Vopt
+  // Vopt = EOL V
+  private void V(StringBuilder buf) {
+
+    Token t = getNextToken();
+    if (t.tokenType != TokenType.VALUE) {
+      throw new IllegalStateException("Unexpected token " + t);
+    }
+    buf.append(t.getValue());
+
+    t = getNextToken();
+    if (t.tokenType == TokenType.EOL) {
+      return;
+    } else if (t.tokenType == TokenType.TRAILING_BACKSLASH) {
+      Vopt(buf);
+
+    }
+  }
+
+  private void Vopt(StringBuilder buf) {
+    Token t = getNextToken();
+    if (t.tokenType != TokenType.EOL) {
+      throw new IllegalStateException("Unexpected token " + t);
+    }
+    V(buf);
+  }
+
+  private Token getNextToken() {
+    if (pointer < tokenList.size()) {
+      return (Token) tokenList.get(pointer++);
+    }
+    return null;
+  }
+
+//  private Token getCurentToken() {
+//    if (pointer < tokenList.size()) {
+//      return (Token) tokenList.get(pointer);
+//    }
+//    return null;
+//  }
+//
+//  private void advanceTokenPointer() {
+//    pointer++;
+//  }
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/util/Token.java b/cal10n-api/src/main/java/ch/qos/cal10n/util/Token.java
index 0f96852..0c633d0 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/util/Token.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/util/Token.java
@@ -1,99 +1,99 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-/**
- * 
- * @author Ceki G&uuml;lc&uuml;
- *
- */
-public class Token {
-
-  final static Token EOL = new Token(TokenType.EOL);
-  final static Token TRAILING_BACKSLASH = new Token(TokenType.TRAILING_BACKSLASH);
-  
-  enum TokenType {
-    KEY,
-    SEPARATOR,
-    VALUE,
-    TRAILING_BACKSLASH,
-    EOL;
-  }
-  
-  final TokenType tokenType;
-  final String value;
-  
-
-  Token(TokenType tokenType) {
-    this(tokenType, null);
-  }
-  
-  Token(TokenType tokenType, String value) {
-    this.tokenType = tokenType;
-    this.value = value;
-  }
-  
-  
-  public TokenType getTokenType() {
-    return tokenType;
-  }
-
-  public String getValue() {
-    return value;
-  }
-
-  public String toString() {
-    if (value == null) {
-      return "Token(" + tokenType + ")";
-    } else {
-      return "Token(" + tokenType + ", \"" + value + "\")";
-    }
-  }
-
-  @Override
-  public int hashCode() {
-    return tokenType.hashCode();
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (obj == null)
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    Token other = (Token) obj;
-    
-    if (!tokenType.equals(other.tokenType))
-      return false;
-    
-    if (value == null) {
-      if (other.value != null)
-        return false;
-    } else if (!value.equals(other.value))
-      return false;
-    return true;
-  }
-  
-  
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+/**
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ *
+ */
+public class Token {
+
+  final static Token EOL = new Token(TokenType.EOL);
+  final static Token TRAILING_BACKSLASH = new Token(TokenType.TRAILING_BACKSLASH);
+  
+  enum TokenType {
+    KEY,
+    SEPARATOR,
+    VALUE,
+    TRAILING_BACKSLASH,
+    EOL;
+  }
+  
+  final TokenType tokenType;
+  final String value;
+  
+
+  Token(TokenType tokenType) {
+    this(tokenType, null);
+  }
+  
+  Token(TokenType tokenType, String value) {
+    this.tokenType = tokenType;
+    this.value = value;
+  }
+  
+  
+  public TokenType getTokenType() {
+    return tokenType;
+  }
+
+  public String getValue() {
+    return value;
+  }
+
+  public String toString() {
+    if (value == null) {
+      return "Token(" + tokenType + ")";
+    } else {
+      return "Token(" + tokenType + ", \"" + value + "\")";
+    }
+  }
+
+  @Override
+  public int hashCode() {
+    return tokenType.hashCode();
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    Token other = (Token) obj;
+    
+    if (!tokenType.equals(other.tokenType))
+      return false;
+    
+    if (value == null) {
+      if (other.value != null)
+        return false;
+    } else if (!value.equals(other.value))
+      return false;
+    return true;
+  }
+  
+  
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/util/TokenStream.java b/cal10n-api/src/main/java/ch/qos/cal10n/util/TokenStream.java
index 32ecf0f..ebcfb4a 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/util/TokenStream.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/util/TokenStream.java
@@ -1,178 +1,178 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.List;
-
-import ch.qos.cal10n.MessageConveyorException;
-import ch.qos.cal10n.util.Token.TokenType;
-
-/**
- * 
- * @author Ceki G&uuml;lc&uuml;
- *
- */
-public class TokenStream {
-
-  enum State {
-    START, COMMENT, KEY, SEPARATOR, VAL, TRAILING_BACKSLASH;
-  }
-
-  BufferedReader lineReader;
-  State state = State.START;
-
-  TokenStream(Reader reader) {
-    this.lineReader = new BufferedReader(reader);
-  }
-
-  List<Token> tokenize() {
-    List<Token> tokenList = new ArrayList<Token>();
-
-    while (true) {
-      String currentLine;
-      try {
-        currentLine = lineReader.readLine();
-      } catch (IOException e) {
-        throw new MessageConveyorException("Failed to read input stream", e);
-      }
-      if (currentLine == null) {
-        break;
-      }
-      if(state != State.TRAILING_BACKSLASH) {
-        state = State.START;
-      }
-      tokenizeLine(tokenList, currentLine);
-      tokenList.add(Token.EOL);
-    }
-
-    return tokenList;
-  }
-
-  private void tokenizeLine(List<Token> tokenList, String line) {
-    int len = line.length();
-    StringBuffer buf = new StringBuffer();
-
-    for (int pointer = 0; pointer < len; pointer++) {
-      char c = line.charAt(pointer);
-      switch (state) {
-      case START:
-        if (isWhiteSpace(c)) {
-          // same sate
-        } else if (c == '#') {
-          state = State.COMMENT;
-          return;
-        } else if (isNonWhiteSpaceSeparator(c)) {
-          state = State.SEPARATOR;
-          buf.append(c);
-        } else {
-          state = State.KEY;
-          buf.append(c);
-        }
-        break;
-
-      case KEY:
-        if (isWhiteSpace(c) || isNonWhiteSpaceSeparator(c)) {
-          tokenList.add(new Token(TokenType.KEY, buf.toString()));
-          buf.setLength(0);
-          buf.append(c);
-          state = State.SEPARATOR;
-        } else {
-          buf.append(c);
-        }
-        break;
-        
-      case SEPARATOR:
-
-        if (isWhiteSpace(c) || isNonWhiteSpaceSeparator(c)) {
-          buf.append(c);
-        } else {
-          tokenList.add(new Token(TokenType.SEPARATOR, buf.toString()));
-          buf.setLength(0);
-          buf.append(c);
-          state = State.VAL;
-        } 
-        break;
-
-      case VAL:
-        if(c == '\\') {
-          if(isTrailingBackSlash(line, pointer+1)) {
-            tokenList.add(new Token(TokenType.VALUE, buf.toString()));
-            buf.setLength(0);
-            state = State.TRAILING_BACKSLASH;
-            tokenList.add(Token.TRAILING_BACKSLASH);
-            return;
-          } else {
-            buf.append(c);
-          }
-        } else {
-          buf.append(c);
-        }
-        break;
-        
-      case TRAILING_BACKSLASH:
-        if (!isWhiteSpace(c)) {
-          buf.append(c);
-          state = State.VAL;
-        }
-      }
-    }
-    
-    if(state == State.VAL) {
-      tokenList.add(new Token(TokenType.VALUE, buf.toString()));
-      buf.setLength(0);
-    }
-  }
-  
-  boolean isTrailingBackSlash(String line, int next) {
-    int len = line.length();
-    for(int i = next; i < len; i++) {
-      char c = line.charAt(i);
-      if(!isWhiteSpace(c)) 
-        return false;
-    }
-    return true; 
-  }
-
-  boolean isWhiteSpace(char c) {
-    switch (c) {
-    case ' ':
-    case '\t':
-      return true;
-    default:
-      return false;
-    }
-  }
-
-  boolean isNonWhiteSpaceSeparator(char c) {
-    switch (c) {
-    case ':':
-    case '=':
-      return true;
-    default:
-      return false;
-    }
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+
+import ch.qos.cal10n.MessageConveyorException;
+import ch.qos.cal10n.util.Token.TokenType;
+
+/**
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ *
+ */
+public class TokenStream {
+
+  enum State {
+    START, COMMENT, KEY, SEPARATOR, VAL, TRAILING_BACKSLASH;
+  }
+
+  BufferedReader lineReader;
+  State state = State.START;
+
+  TokenStream(Reader reader) {
+    this.lineReader = new BufferedReader(reader);
+  }
+
+  List<Token> tokenize() {
+    List<Token> tokenList = new ArrayList<Token>();
+
+    while (true) {
+      String currentLine;
+      try {
+        currentLine = lineReader.readLine();
+      } catch (IOException e) {
+        throw new MessageConveyorException("Failed to read input stream", e);
+      }
+      if (currentLine == null) {
+        break;
+      }
+      if(state != State.TRAILING_BACKSLASH) {
+        state = State.START;
+      }
+      tokenizeLine(tokenList, currentLine);
+      tokenList.add(Token.EOL);
+    }
+
+    return tokenList;
+  }
+
+  private void tokenizeLine(List<Token> tokenList, String line) {
+    int len = line.length();
+    StringBuffer buf = new StringBuffer();
+
+    for (int pointer = 0; pointer < len; pointer++) {
+      char c = line.charAt(pointer);
+      switch (state) {
+      case START:
+        if (isWhiteSpace(c)) {
+          // same sate
+        } else if (c == '#') {
+          state = State.COMMENT;
+          return;
+        } else if (isNonWhiteSpaceSeparator(c)) {
+          state = State.SEPARATOR;
+          buf.append(c);
+        } else {
+          state = State.KEY;
+          buf.append(c);
+        }
+        break;
+
+      case KEY:
+        if (isWhiteSpace(c) || isNonWhiteSpaceSeparator(c)) {
+          tokenList.add(new Token(TokenType.KEY, buf.toString()));
+          buf.setLength(0);
+          buf.append(c);
+          state = State.SEPARATOR;
+        } else {
+          buf.append(c);
+        }
+        break;
+        
+      case SEPARATOR:
+
+        if (isWhiteSpace(c) || isNonWhiteSpaceSeparator(c)) {
+          buf.append(c);
+        } else {
+          tokenList.add(new Token(TokenType.SEPARATOR, buf.toString()));
+          buf.setLength(0);
+          buf.append(c);
+          state = State.VAL;
+        } 
+        break;
+
+      case VAL:
+        if(c == '\\') {
+          if(isTrailingBackSlash(line, pointer+1)) {
+            tokenList.add(new Token(TokenType.VALUE, buf.toString()));
+            buf.setLength(0);
+            state = State.TRAILING_BACKSLASH;
+            tokenList.add(Token.TRAILING_BACKSLASH);
+            return;
+          } else {
+            buf.append(c);
+          }
+        } else {
+          buf.append(c);
+        }
+        break;
+        
+      case TRAILING_BACKSLASH:
+        if (!isWhiteSpace(c)) {
+          buf.append(c);
+          state = State.VAL;
+        }
+      }
+    }
+    
+    if(state == State.VAL) {
+      tokenList.add(new Token(TokenType.VALUE, buf.toString()));
+      buf.setLength(0);
+    }
+  }
+  
+  boolean isTrailingBackSlash(String line, int next) {
+    int len = line.length();
+    for(int i = next; i < len; i++) {
+      char c = line.charAt(i);
+      if(!isWhiteSpace(c)) 
+        return false;
+    }
+    return true; 
+  }
+
+  boolean isWhiteSpace(char c) {
+    switch (c) {
+    case ' ':
+    case '\t':
+      return true;
+    default:
+      return false;
+    }
+  }
+
+  boolean isNonWhiteSpaceSeparator(char c) {
+    switch (c) {
+    case ':':
+    case '=':
+      return true;
+    default:
+      return false;
+    }
+  }
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/util/package.html b/cal10n-api/src/main/java/ch/qos/cal10n/util/package.html
index d1d3592..3ff3a8d 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/util/package.html
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/util/package.html
@@ -1,16 +1,16 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-
-<html>
-<head>
-<title></title>
-</head>
-
-<body>
-
-<p>Package containing utility classes, used internally by the CAL10N
-project.</p>
-
- 
-</p>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+
+<html>
+<head>
+<title></title>
+</head>
+
+<body>
+
+<p>Package containing utility classes, used internally by the CAL10N
+project.</p>
+
+ 
+</p>
+</body>
+</html>
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/verifier/Cal10nError.java b/cal10n-api/src/main/java/ch/qos/cal10n/verifier/Cal10nError.java
index 14ff09a..a0e9e5e 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/verifier/Cal10nError.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/verifier/Cal10nError.java
@@ -1,101 +1,101 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.verifier;
-
-import java.util.Locale;
-
-/**
- * 
- * Aggregates various parameters of a verification error in a single place
- * (class).
- * 
- * @author Ceki G&uuml;lc&uuml;
- */
-public class Cal10nError {
-
-  enum ErrorType {
-    // MISSING_LOCALE_NAMES_ANNOTATION
-
-    MISSING_BN_ANNOTATION, FAILED_TO_FIND_RB, EMPTY_RB, EMPTY_ENUM, ABSENT_IN_RB, ABSENT_IN_ENUM;
-  }
-
-  final ErrorType errorType;
-  final String key;
-  final Locale locale;
-  final Class<?> enumClass;
-  final String enumClassName;
-  final String baseName;
-
-  Cal10nError(ErrorType errorType, String key, Class<?> enumClass,
-      Locale locale, String baseName) {
-    this.errorType = errorType;
-    this.key = key;
-    this.enumClass = enumClass;
-    this.enumClassName = enumClass.getName();
-    this.locale = locale;
-    this.baseName = baseName;
-  }
-
-  public ErrorType getErrorType() {
-    return errorType;
-  }
-
-  public String getKey() {
-    return key;
-  }
-
-  public Locale getLocale() {
-    return locale;
-  }
-
-  public Class<?> getEnumClass() {
-    return enumClass;
-  }
-
-  @Override
-  public String toString() {
-    switch (errorType) {
-    case MISSING_BN_ANNOTATION:
-      return "Missing @BaseName annotation in enum type ["
-          + enumClassName + "]";
-    case FAILED_TO_FIND_RB:
-      return "Failed to locate resource bundle [" + baseName
-          + "] for locale [" + locale + "] for enum type [" + enumClassName
-          + "]";
-    case EMPTY_RB:
-      return "Empty resource bundle named [" + baseName
-          + "] for locale [" + locale + "]";
-    case EMPTY_ENUM:
-      return "Empty enum type [" + enumClassName + "]";
-    case ABSENT_IN_ENUM:
-      return "Key [" + key + "] present in resource bundle named ["
-          + baseName + "] for locale [" + locale
-          + "] but absent in enum type [" + enumClassName + "]";
-    case ABSENT_IN_RB:
-      return "Key [" + key + "] present in enum type [" + enumClassName
-          + "] but absent in resource bundle named [" + baseName
-          + "] for locale [" + locale + "]";
-    default:
-      throw new IllegalStateException("Impossible to reach here");
-    }
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.verifier;
+
+import java.util.Locale;
+
+/**
+ * 
+ * Aggregates various parameters of a verification error in a single place
+ * (class).
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ */
+public class Cal10nError {
+
+  enum ErrorType {
+    // MISSING_LOCALE_NAMES_ANNOTATION
+
+    MISSING_BN_ANNOTATION, FAILED_TO_FIND_RB, EMPTY_RB, EMPTY_ENUM, ABSENT_IN_RB, ABSENT_IN_ENUM;
+  }
+
+  final ErrorType errorType;
+  final String key;
+  final Locale locale;
+  final Class<?> enumClass;
+  final String enumClassName;
+  final String baseName;
+
+  Cal10nError(ErrorType errorType, String key, Class<?> enumClass,
+      Locale locale, String baseName) {
+    this.errorType = errorType;
+    this.key = key;
+    this.enumClass = enumClass;
+    this.enumClassName = enumClass.getName();
+    this.locale = locale;
+    this.baseName = baseName;
+  }
+
+  public ErrorType getErrorType() {
+    return errorType;
+  }
+
+  public String getKey() {
+    return key;
+  }
+
+  public Locale getLocale() {
+    return locale;
+  }
+
+  public Class<?> getEnumClass() {
+    return enumClass;
+  }
+
+  @Override
+  public String toString() {
+    switch (errorType) {
+    case MISSING_BN_ANNOTATION:
+      return "Missing @BaseName annotation in enum type ["
+          + enumClassName + "]";
+    case FAILED_TO_FIND_RB:
+      return "Failed to locate resource bundle [" + baseName
+          + "] for locale [" + locale + "] for enum type [" + enumClassName
+          + "]";
+    case EMPTY_RB:
+      return "Empty resource bundle named [" + baseName
+          + "] for locale [" + locale + "]";
+    case EMPTY_ENUM:
+      return "Empty enum type [" + enumClassName + "]";
+    case ABSENT_IN_ENUM:
+      return "Key [" + key + "] present in resource bundle named ["
+          + baseName + "] for locale [" + locale
+          + "] but absent in enum type [" + enumClassName + "]";
+    case ABSENT_IN_RB:
+      return "Key [" + key + "] present in enum type [" + enumClassName
+          + "] but absent in resource bundle named [" + baseName
+          + "] for locale [" + locale + "]";
+    default:
+      throw new IllegalStateException("Impossible to reach here");
+    }
+  }
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/verifier/ErrorFactory.java b/cal10n-api/src/main/java/ch/qos/cal10n/verifier/ErrorFactory.java
index 3a3476c..3aae35b 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/verifier/ErrorFactory.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/verifier/ErrorFactory.java
@@ -1,51 +1,51 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.verifier;
-
-import java.util.Locale;
-
-import ch.qos.cal10n.verifier.Cal10nError.ErrorType;
-
-/**
- * Simplifies the creation of {@link Cal10nError} instances.
- * 
- * @author Ceki G&uuml;lc&uuml;
- * 
- */
-public class ErrorFactory {
-
-  final Locale locale;
-  final Class<?> enumClass;
-  final String resourceBundleName;
-
-  public ErrorFactory(Class<?> enumClass, Locale locale,
-      String resourceBundleName) {
-    this.locale = locale;
-    this.enumClass = enumClass;
-    this.resourceBundleName = resourceBundleName;
-  }
-
-  Cal10nError buildError(ErrorType errorType, String key) {
-    return new Cal10nError(errorType, key, enumClass, locale,
-        resourceBundleName);
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.verifier;
+
+import java.util.Locale;
+
+import ch.qos.cal10n.verifier.Cal10nError.ErrorType;
+
+/**
+ * Simplifies the creation of {@link Cal10nError} instances.
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * 
+ */
+public class ErrorFactory {
+
+  final Locale locale;
+  final Class<?> enumClass;
+  final String resourceBundleName;
+
+  public ErrorFactory(Class<?> enumClass, Locale locale,
+      String resourceBundleName) {
+    this.locale = locale;
+    this.enumClass = enumClass;
+    this.resourceBundleName = resourceBundleName;
+  }
+
+  Cal10nError buildError(ErrorType errorType, String key) {
+    return new Cal10nError(errorType, key, enumClass, locale,
+        resourceBundleName);
+  }
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/verifier/IMessageKeyVerifier.java b/cal10n-api/src/main/java/ch/qos/cal10n/verifier/IMessageKeyVerifier.java
index bb960c9..61f9380 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/verifier/IMessageKeyVerifier.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/verifier/IMessageKeyVerifier.java
@@ -1,79 +1,79 @@
-package ch.qos.cal10n.verifier;
-
-import java.util.List;
-import java.util.Locale;
-
-/**
- * An interface for verifying that given an enum type, the keys match those
- * found in the corresponding resource bundles.
- * 
- * <p>
- * See also {@link MessageKeyVerifier} for a concrete implementation.
- * 
- * @author Ceki G&uuml;lc&uuml;
- * 
- */
-public interface IMessageKeyVerifier {
-
-  // WARNING:
-  // WARNING: The name of this class is referenced in String form
-  // to do class loader tricks. Do not change the name of this class
-  // without looking at the maven-cal10n-plugin.
-
-  /**
-   * Get the of enum type that this verifier is related to to.
-   * 
-   * @return
-   */
-  public Class<? extends Enum<?>> getEnumType();
-
-  /**
-   * Get the name of enum type to this verifier is related to to.
-   * 
-   * @return
-   */
-  public String getEnumTypeAsStr();
-
-  /**
-   * Verify that the keys defined in the enumClass match those found in the
-   * resource bundle corresponding to a certain locale
-   * 
-   * @param locale
-   * @return
-   */
-  public List<Cal10nError> verify(Locale locale);
-
-  /**
-   * Verify that the keys defined in the enumClass match those found in the
-   * corresponding resource bundle for all locales declared in the enum type
-   * via the &#64;{@link LocaleData} annotation.
-   * 
-   * @param locale
-   * @return
-   */
-  public List<Cal10nError> verifyAllLocales();
-
-  /**
-   * Same as {@link #verify(Locale)} except that the return type is
-   * List<String>.
-   * 
-   * @param locale
-   * @return
-   */
-  public List<String> typeIsolatedVerify(Locale locale);
-
-  /**
-   * Get the locales specified in the enumType (via annotations)
-   * 
-   * @return
-   */
-  public String[] getLocaleNames();
-
-  /**
-   * Get the base name for the resource bundle family as specified in the enumType (via
-   * annotations)
-   * 
-   * @return
-   */
-  public String getBaseName();
+package ch.qos.cal10n.verifier;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * An interface for verifying that given an enum type, the keys match those
+ * found in the corresponding resource bundles.
+ * 
+ * <p>
+ * See also {@link MessageKeyVerifier} for a concrete implementation.
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * 
+ */
+public interface IMessageKeyVerifier {
+
+  // WARNING:
+  // WARNING: The name of this class is referenced in String form
+  // to do class loader tricks. Do not change the name of this class
+  // without looking at the maven-cal10n-plugin.
+
+  /**
+   * Get the of enum type that this verifier is related to to.
+   * 
+   * @return
+   */
+  public Class<? extends Enum<?>> getEnumType();
+
+  /**
+   * Get the name of enum type to this verifier is related to to.
+   * 
+   * @return
+   */
+  public String getEnumTypeAsStr();
+
+  /**
+   * Verify that the keys defined in the enumClass match those found in the
+   * resource bundle corresponding to a certain locale
+   * 
+   * @param locale
+   * @return
+   */
+  public List<Cal10nError> verify(Locale locale);
+
+  /**
+   * Verify that the keys defined in the enumClass match those found in the
+   * corresponding resource bundle for all locales declared in the enum type
+   * via the &#64;{@link LocaleData} annotation.
+   * 
+   * @param locale
+   * @return
+   */
+  public List<Cal10nError> verifyAllLocales();
+
+  /**
+   * Same as {@link #verify(Locale)} except that the return type is
+   * List<String>.
+   * 
+   * @param locale
+   * @return
+   */
+  public List<String> typeIsolatedVerify(Locale locale);
+
+  /**
+   * Get the locales specified in the enumType (via annotations)
+   * 
+   * @return
+   */
+  public String[] getLocaleNames();
+
+  /**
+   * Get the base name for the resource bundle family as specified in the enumType (via
+   * annotations)
+   * 
+   * @return
+   */
+  public String getBaseName();
 }
\ No newline at end of file
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/verifier/MessageKeyVerifier.java b/cal10n-api/src/main/java/ch/qos/cal10n/verifier/MessageKeyVerifier.java
index ab0978e..212655f 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/verifier/MessageKeyVerifier.java
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/verifier/MessageKeyVerifier.java
@@ -1,181 +1,181 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n.verifier;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.ResourceBundle;
-import java.util.Set;
-
-import ch.qos.cal10n.Cal10nConstants;
-import ch.qos.cal10n.util.AnnotationExtractor;
-import ch.qos.cal10n.util.CAL10NResourceBundleFinder;
-import ch.qos.cal10n.util.MiscUtil;
-import ch.qos.cal10n.verifier.Cal10nError.ErrorType;
-
-/**
- * Given an enum class, verify that the resource bundles corresponding to a
- * given locale contains the correct keys.
- * 
- * @author Ceki Gulcu
- */
-public class MessageKeyVerifier implements IMessageKeyVerifier {
-
-  Class<? extends Enum<?>> enumType;
-  String enumTypeAsStr;
-
-  public MessageKeyVerifier(Class<? extends Enum<?>> enumClass) {
-    this.enumType = enumClass;
-    this.enumTypeAsStr = enumClass.getName();
-  }
-
-  @SuppressWarnings("unchecked")
-  public MessageKeyVerifier(String enumTypeAsStr) {
-    this.enumTypeAsStr = enumTypeAsStr;
-    String errMsg = "Failed to find enum class [" + enumTypeAsStr + "]";
-    try {
-      this.enumType = (Class<? extends Enum<?>>) Class.forName(enumTypeAsStr);
-    } catch (ClassNotFoundException e) {
-      throw new IllegalStateException(errMsg, e);
-    } catch (NoClassDefFoundError e) {
-      throw new IllegalStateException(errMsg, e);
-    }
-  }
-
-  public Class<? extends Enum<?>> getEnumType() {
-    return enumType;
-  }
-
-  public String getEnumTypeAsStr() {
-    return enumTypeAsStr;
-  }
-
-  public List<Cal10nError> verify(Locale locale) {
-    List<Cal10nError> errorList = new ArrayList<Cal10nError>();
-
-    String baseName = AnnotationExtractor.getBaseName(enumType);
-
-    if (baseName == null) {
-      errorList.add(new Cal10nError(ErrorType.MISSING_BN_ANNOTATION, "",
-          enumType, locale, ""));
-      // no point in continuing
-      return errorList;
-    }
-
-    String charset = AnnotationExtractor.getCharset(enumType, Locale.FRENCH);
-    ResourceBundle rb = CAL10NResourceBundleFinder.getBundle(this.getClass()
-        .getClassLoader(), baseName, locale, charset);
-
-    ErrorFactory errorFactory = new ErrorFactory(enumType, locale, baseName);
-
-    if (rb == null) {
-      errorList.add(errorFactory.buildError(ErrorType.FAILED_TO_FIND_RB, ""));
-   // no point in continuing
-      return errorList;
-    }
-    
-    Set<String> rbKeySet = buildKeySetFromEnumeration(rb.getKeys());
-
-    if (rbKeySet.size() == 0) {
-      errorList.add(errorFactory.buildError(ErrorType.EMPTY_RB, ""));
-    }
-
-    Enum<?>[] enumArray = enumType.getEnumConstants();
-    if (enumArray == null || enumArray.length == 0) {
-      errorList.add(errorFactory.buildError(ErrorType.EMPTY_ENUM, ""));
-    }
-
-    if (errorList.size() != 0) {
-      return errorList;
-    }
-
-    for (Enum<?> e : enumArray) {
-      String enumKey = e.toString();
-      if (rbKeySet.contains(enumKey)) {
-        rbKeySet.remove(enumKey);
-      } else {
-        errorList.add(errorFactory.buildError(ErrorType.ABSENT_IN_RB, enumKey));
-      }
-    }
-
-    for (String rbKey : rbKeySet) {
-      errorList.add(errorFactory.buildError(ErrorType.ABSENT_IN_ENUM, rbKey));
-    }
-    return errorList;
-  }
-
-  private Set<String> buildKeySetFromEnumeration(Enumeration<String> e) {
-    Set<String> set = new HashSet<String>();
-    while (e.hasMoreElements()) {
-      String s = e.nextElement();
-      set.add(s);
-    }
-    return set;
-  }
-
-  public List<String> typeIsolatedVerify(Locale locale) {
-    List<Cal10nError> errorList = verify(locale);
-    List<String> strList = new ArrayList<String>();
-    for (Cal10nError error : errorList) {
-      strList.add(error.toString());
-    }
-    return strList;
-  }
-
-  /***
-   * Verify all declared locales in one step.
-   */
-  public List<Cal10nError> verifyAllLocales() {
-    List<Cal10nError> errorList = new ArrayList<Cal10nError>();
-
-    String[] localeNameArray = getLocaleNames();
-
-    if (localeNameArray == null || localeNameArray.length == 0) {
-      String errMsg = MessageFormat.format(Cal10nConstants.MISSING_LD_ANNOTATION_MESSAGE, enumTypeAsStr);
-      throw new IllegalStateException(errMsg);
-    }
-    for (String localeName : localeNameArray) {
-      Locale locale = MiscUtil.toLocale(localeName);
-      System.out.println(locale);
-      List<Cal10nError> tmpList = verify(locale);
-      errorList.addAll(tmpList);
-    }
-
-    return errorList;
-  }
-
-  public String[] getLocaleNames() {
-    String[] localeNameArray = AnnotationExtractor.getLocaleNames(enumType);
-    return localeNameArray;
-  }
-
-  public String getBaseName() {
-    String rbName = AnnotationExtractor.getBaseName(enumType);
-    return rbName;
-  }
-
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n.verifier;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.Set;
+
+import ch.qos.cal10n.Cal10nConstants;
+import ch.qos.cal10n.util.AnnotationExtractor;
+import ch.qos.cal10n.util.CAL10NResourceBundleFinder;
+import ch.qos.cal10n.util.MiscUtil;
+import ch.qos.cal10n.verifier.Cal10nError.ErrorType;
+
+/**
+ * Given an enum class, verify that the resource bundles corresponding to a
+ * given locale contains the correct keys.
+ * 
+ * @author Ceki Gulcu
+ */
+public class MessageKeyVerifier implements IMessageKeyVerifier {
+
+  Class<? extends Enum<?>> enumType;
+  String enumTypeAsStr;
+
+  public MessageKeyVerifier(Class<? extends Enum<?>> enumClass) {
+    this.enumType = enumClass;
+    this.enumTypeAsStr = enumClass.getName();
+  }
+
+  @SuppressWarnings("unchecked")
+  public MessageKeyVerifier(String enumTypeAsStr) {
+    this.enumTypeAsStr = enumTypeAsStr;
+    String errMsg = "Failed to find enum class [" + enumTypeAsStr + "]";
+    try {
+      this.enumType = (Class<? extends Enum<?>>) Class.forName(enumTypeAsStr);
+    } catch (ClassNotFoundException e) {
+      throw new IllegalStateException(errMsg, e);
+    } catch (NoClassDefFoundError e) {
+      throw new IllegalStateException(errMsg, e);
+    }
+  }
+
+  public Class<? extends Enum<?>> getEnumType() {
+    return enumType;
+  }
+
+  public String getEnumTypeAsStr() {
+    return enumTypeAsStr;
+  }
+
+  public List<Cal10nError> verify(Locale locale) {
+    List<Cal10nError> errorList = new ArrayList<Cal10nError>();
+
+    String baseName = AnnotationExtractor.getBaseName(enumType);
+
+    if (baseName == null) {
+      errorList.add(new Cal10nError(ErrorType.MISSING_BN_ANNOTATION, "",
+          enumType, locale, ""));
+      // no point in continuing
+      return errorList;
+    }
+
+    String charset = AnnotationExtractor.getCharset(enumType, Locale.FRENCH);
+    ResourceBundle rb = CAL10NResourceBundleFinder.getBundle(this.getClass()
+        .getClassLoader(), baseName, locale, charset);
+
+    ErrorFactory errorFactory = new ErrorFactory(enumType, locale, baseName);
+
+    if (rb == null) {
+      errorList.add(errorFactory.buildError(ErrorType.FAILED_TO_FIND_RB, ""));
+   // no point in continuing
+      return errorList;
+    }
+    
+    Set<String> rbKeySet = buildKeySetFromEnumeration(rb.getKeys());
+
+    if (rbKeySet.size() == 0) {
+      errorList.add(errorFactory.buildError(ErrorType.EMPTY_RB, ""));
+    }
+
+    Enum<?>[] enumArray = enumType.getEnumConstants();
+    if (enumArray == null || enumArray.length == 0) {
+      errorList.add(errorFactory.buildError(ErrorType.EMPTY_ENUM, ""));
+    }
+
+    if (errorList.size() != 0) {
+      return errorList;
+    }
+
+    for (Enum<?> e : enumArray) {
+      String enumKey = e.toString();
+      if (rbKeySet.contains(enumKey)) {
+        rbKeySet.remove(enumKey);
+      } else {
+        errorList.add(errorFactory.buildError(ErrorType.ABSENT_IN_RB, enumKey));
+      }
+    }
+
+    for (String rbKey : rbKeySet) {
+      errorList.add(errorFactory.buildError(ErrorType.ABSENT_IN_ENUM, rbKey));
+    }
+    return errorList;
+  }
+
+  private Set<String> buildKeySetFromEnumeration(Enumeration<String> e) {
+    Set<String> set = new HashSet<String>();
+    while (e.hasMoreElements()) {
+      String s = e.nextElement();
+      set.add(s);
+    }
+    return set;
+  }
+
+  public List<String> typeIsolatedVerify(Locale locale) {
+    List<Cal10nError> errorList = verify(locale);
+    List<String> strList = new ArrayList<String>();
+    for (Cal10nError error : errorList) {
+      strList.add(error.toString());
+    }
+    return strList;
+  }
+
+  /***
+   * Verify all declared locales in one step.
+   */
+  public List<Cal10nError> verifyAllLocales() {
+    List<Cal10nError> errorList = new ArrayList<Cal10nError>();
+
+    String[] localeNameArray = getLocaleNames();
+
+    if (localeNameArray == null || localeNameArray.length == 0) {
+      String errMsg = MessageFormat.format(Cal10nConstants.MISSING_LD_ANNOTATION_MESSAGE, enumTypeAsStr);
+      throw new IllegalStateException(errMsg);
+    }
+    for (String localeName : localeNameArray) {
+      Locale locale = MiscUtil.toLocale(localeName);
+      System.out.println(locale);
+      List<Cal10nError> tmpList = verify(locale);
+      errorList.addAll(tmpList);
+    }
+
+    return errorList;
+  }
+
+  public String[] getLocaleNames() {
+    String[] localeNameArray = AnnotationExtractor.getLocaleNames(enumType);
+    return localeNameArray;
+  }
+
+  public String getBaseName() {
+    String rbName = AnnotationExtractor.getBaseName(enumType);
+    return rbName;
+  }
+
+}
diff --git a/cal10n-api/src/main/java/ch/qos/cal10n/verifier/package.html b/cal10n-api/src/main/java/ch/qos/cal10n/verifier/package.html
index 493d9fc..7c3e9e7 100644
--- a/cal10n-api/src/main/java/ch/qos/cal10n/verifier/package.html
+++ b/cal10n-api/src/main/java/ch/qos/cal10n/verifier/package.html
@@ -1,12 +1,12 @@
-<html>
-  <head>
-    <title></title>
-  </head>
-  
-  <body>
-  
-    <p>Support classes for verifying that there are no message code
-    mis-matches between resource bundles and the corresponding enum type.</p>
-    
-  </body>
-</html>
+<html>
+  <head>
+    <title></title>
+  </head>
+  
+  <body>
+  
+    <p>Support classes for verifying that there are no message code
+    mis-matches between resource bundles and the corresponding enum type.</p>
+    
+  </body>
+</html>
diff --git a/cal10n-api/src/main/resources/META-INF/MANIFEST.MF b/cal10n-api/src/main/resources/META-INF/MANIFEST.MF
index ddc930d..ecc7032 100644
--- a/cal10n-api/src/main/resources/META-INF/MANIFEST.MF
+++ b/cal10n-api/src/main/resources/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
-Implementation-Title: cal10n-api
-Bundle-ManifestVersion: 2
-Bundle-SymbolicName: cal10n.api
-Bundle-Name: cal10n-api
-Bundle-Vendor: qos.ch
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Implementation-Title: cal10n-api
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: cal10n.api
+Bundle-Name: cal10n-api
+Bundle-Vendor: qos.ch
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Export-Package: ch.qos.cal10n;version=${project.version}
\ No newline at end of file
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/AllCal10nTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/AllCal10nTest.java
index bd250d5..b6d029d 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/AllCal10nTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/AllCal10nTest.java
@@ -1,35 +1,35 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
- at RunWith(Suite.class)
- at SuiteClasses( { ch.qos.cal10n.PackageTest.class,
-    ch.qos.cal10n.util.PackageTest.class,
-    ch.qos.cal10n.verifier.PackageTest.class })
-public class AllCal10nTest {
-
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+ at RunWith(Suite.class)
+ at SuiteClasses( { ch.qos.cal10n.PackageTest.class,
+    ch.qos.cal10n.util.PackageTest.class,
+    ch.qos.cal10n.verifier.PackageTest.class })
+public class AllCal10nTest {
+
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/Cal10nTestConstants.java b/cal10n-api/src/test/java/ch/qos/cal10n/Cal10nTestConstants.java
index 828ed4c..0d72f78 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/Cal10nTestConstants.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/Cal10nTestConstants.java
@@ -1,6 +1,6 @@
-package ch.qos.cal10n;
-
-public class Cal10nTestConstants {
-
-  public static String TEST_CLASSES = "target/test-classes/";
-}
+package ch.qos.cal10n;
+
+public class Cal10nTestConstants {
+
+  public static String TEST_CLASSES = "target/test-classes/";
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorPerftest.java b/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorPerftest.java
index 163067c..ba91089 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorPerftest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorPerftest.java
@@ -1,58 +1,58 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n;
-
-import java.util.Locale;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import ch.qos.cal10n.sample.Colors;
-
-// with caching ~300 nanos per translation
-// without caching 149'963 nanos or 149 micros per translation
-
-public class MessageConveyorPerftest {
-
-  static int RUN_LENGTH = 100 *1000;
-  public String s;
-  
-  double loop() {
-    long start = System.nanoTime();
- 
-    IMessageConveyor mc = new MessageConveyor(Locale.ENGLISH);
-    for(int i = 0; i < RUN_LENGTH; i++) {
-      s = mc.getMessage(Colors.BLUE);
-    }
-    long end = System.nanoTime();
-    return (end - start) * 1.0 / RUN_LENGTH;
-  }
-  
-  @Ignore
-  @Test
-  public void perfTest() {
-    loop();
-    loop();
-    
-    System.out.println("avg = "+loop());
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n;
+
+import java.util.Locale;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import ch.qos.cal10n.sample.Colors;
+
+// with caching ~300 nanos per translation
+// without caching 149'963 nanos or 149 micros per translation
+
+public class MessageConveyorPerftest {
+
+  static int RUN_LENGTH = 100 *1000;
+  public String s;
+  
+  double loop() {
+    long start = System.nanoTime();
+ 
+    IMessageConveyor mc = new MessageConveyor(Locale.ENGLISH);
+    for(int i = 0; i < RUN_LENGTH; i++) {
+      s = mc.getMessage(Colors.BLUE);
+    }
+    long end = System.nanoTime();
+    return (end - start) * 1.0 / RUN_LENGTH;
+  }
+  
+  @Ignore
+  @Test
+  public void perfTest() {
+    loop();
+    loop();
+    
+    System.out.println("avg = "+loop());
+  }
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorReloadTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorReloadTest.java
index 8d3c289..5c32611 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorReloadTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorReloadTest.java
@@ -1,61 +1,61 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.sample.Colors;
-import ch.qos.cal10n.util.CAL10NResourceBundle;
-import ch.qos.cal10n.util.MiscUtil;
-
-public class MessageConveyorReloadTest {
-
-  
-  @Test
-  public void bundleReload() throws IOException, InterruptedException {
-    ClassLoader classLoader = this.getClass().getClassLoader();
-    String resourceCandidate =  "colors" + "_" + "en" + ".properties";
-    URL url = classLoader.getResource(resourceCandidate);
-    assertNotNull("the problem is in this test, not the code tested", url);
-
-    MessageConveyor mc = new MessageConveyor(new Locale("en"));
-    mc.getMessage(Colors.BLUE);
-    
-    CAL10NResourceBundle initalRB = mc.cache.get(Colors.BLUE.getDeclaringClass().getName());
-    initalRB.resetCheckTimes();
-    File file =  MiscUtil.urlToFile(url);
-    file.setLastModified(System.currentTimeMillis()+60*60*1000);
-    mc.getMessage(Colors.BLUE);
-    ResourceBundle other = mc.cache.get(Colors.BLUE.getDeclaringClass().getName());
-    assertTrue(initalRB != other);
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.sample.Colors;
+import ch.qos.cal10n.util.CAL10NResourceBundle;
+import ch.qos.cal10n.util.MiscUtil;
+
+public class MessageConveyorReloadTest {
+
+  
+  @Test
+  public void bundleReload() throws IOException, InterruptedException {
+    ClassLoader classLoader = this.getClass().getClassLoader();
+    String resourceCandidate =  "colors" + "_" + "en" + ".properties";
+    URL url = classLoader.getResource(resourceCandidate);
+    assertNotNull("the problem is in this test, not the code tested", url);
+
+    MessageConveyor mc = new MessageConveyor(new Locale("en"));
+    mc.getMessage(Colors.BLUE);
+    
+    CAL10NResourceBundle initalRB = mc.cache.get(Colors.BLUE.getDeclaringClass().getName());
+    initalRB.resetCheckTimes();
+    File file =  MiscUtil.urlToFile(url);
+    file.setLastModified(System.currentTimeMillis()+60*60*1000);
+    mc.getMessage(Colors.BLUE);
+    ResourceBundle other = mc.cache.get(Colors.BLUE.getDeclaringClass().getName());
+    assertTrue(initalRB != other);
+  }
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorTest.java
index 8c43211..fdd4df3 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/MessageConveyorTest.java
@@ -1,115 +1,115 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import java.util.Locale;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.sample.Colors;
-import ch.qos.cal10n.sample.Minimal;
-import ch.qos.cal10n.sample.Host.OtherColors;
-
-public class MessageConveyorTest {
-
-  @Test
-  public void smoke_EN() {
-    MessageConveyor rbbmc = new MessageConveyor(Locale.UK);
-    String val;
-
-    val = rbbmc.getMessage(Colors.BLUE);
-    assertEquals("violets are blue", val);
-
-    val = rbbmc.getMessage(Colors.GREEN, "apples");
-    assertEquals("apples are green", val);
-  }
-
-  // see http://jira.qos.ch/browse/CAL-1
-  @Test
-  public void nestedEnum_EN() {
-    MessageConveyor rbbmc = new MessageConveyor(Locale.UK);
-    String val;
-
-    val = rbbmc.getMessage(Colors.RED);
-    assertEquals("roses are red", val);
-
-    val = rbbmc.getMessage(OtherColors.RED);
-    assertEquals("roses are red", val);
-
-    val = rbbmc.getMessage(OtherColors.BLUE);
-    assertEquals("violets are blue", val);
-  }
-
-  @Test
-  public void smoke_FR() {
-    MessageConveyor rbbmc = new MessageConveyor(Locale.FRANCE);
-    String val;
-
-    val = rbbmc.getMessage(Colors.BLUE);
-    assertEquals("les violettes sont bleues", val);
-
-    // lemon=citron in french. This illustrates the problem of
-    // translating the parameters of a message
-    val = rbbmc.getMessage(Colors.GREEN, "pommes");
-    assertEquals("les pommes sont verts", val);
-  }
-
-  @Test
-  public void mpo() {
-    MessageConveyor rbbmc = new MessageConveyor(Locale.UK);
-    MessageParameterObj mpo;
-    String val;
-
-    mpo = new MessageParameterObj(Colors.BLUE);
-    val = rbbmc.getMessage(mpo);
-    assertEquals("violets are blue", val);
-
-    mpo = new MessageParameterObj(Colors.GREEN, "apples");
-    val = rbbmc.getMessage(mpo);
-    assertEquals("apples are green", val);
-  }
-
-  @Test
-  public void failedRBLookup() {
-
-    MessageConveyor mc = new MessageConveyor(Locale.CHINA);
-    try {
-      mc.getMessage(Colors.BLUE);
-      fail("missing exception");
-    } catch (MessageConveyorException e) {
-      assertEquals(
-          "Failed to locate resource bundle [colors] for locale [zh_CN] for enum type [ch.qos.cal10n.sample.Colors]",
-          e.getMessage());
-    }
-  }
-  
-  @Test
-  public void minimal() {
-    MessageConveyor mc = new MessageConveyor(Locale.ENGLISH);
-    assertEquals("A", mc.getMessage(Minimal.A));
-  }
-  
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.util.Locale;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.sample.Colors;
+import ch.qos.cal10n.sample.Minimal;
+import ch.qos.cal10n.sample.Host.OtherColors;
+
+public class MessageConveyorTest {
+
+  @Test
+  public void smoke_EN() {
+    MessageConveyor rbbmc = new MessageConveyor(Locale.UK);
+    String val;
+
+    val = rbbmc.getMessage(Colors.BLUE);
+    assertEquals("violets are blue", val);
+
+    val = rbbmc.getMessage(Colors.GREEN, "apples");
+    assertEquals("apples are green", val);
+  }
+
+  // see http://jira.qos.ch/browse/CAL-1
+  @Test
+  public void nestedEnum_EN() {
+    MessageConveyor rbbmc = new MessageConveyor(Locale.UK);
+    String val;
+
+    val = rbbmc.getMessage(Colors.RED);
+    assertEquals("roses are red", val);
+
+    val = rbbmc.getMessage(OtherColors.RED);
+    assertEquals("roses are red", val);
+
+    val = rbbmc.getMessage(OtherColors.BLUE);
+    assertEquals("violets are blue", val);
+  }
+
+  @Test
+  public void smoke_FR() {
+    MessageConveyor rbbmc = new MessageConveyor(Locale.FRANCE);
+    String val;
+
+    val = rbbmc.getMessage(Colors.BLUE);
+    assertEquals("les violettes sont bleues", val);
+
+    // lemon=citron in french. This illustrates the problem of
+    // translating the parameters of a message
+    val = rbbmc.getMessage(Colors.GREEN, "pommes");
+    assertEquals("les pommes sont verts", val);
+  }
+
+  @Test
+  public void mpo() {
+    MessageConveyor rbbmc = new MessageConveyor(Locale.UK);
+    MessageParameterObj mpo;
+    String val;
+
+    mpo = new MessageParameterObj(Colors.BLUE);
+    val = rbbmc.getMessage(mpo);
+    assertEquals("violets are blue", val);
+
+    mpo = new MessageParameterObj(Colors.GREEN, "apples");
+    val = rbbmc.getMessage(mpo);
+    assertEquals("apples are green", val);
+  }
+
+  @Test
+  public void failedRBLookup() {
+
+    MessageConveyor mc = new MessageConveyor(Locale.CHINA);
+    try {
+      mc.getMessage(Colors.BLUE);
+      fail("missing exception");
+    } catch (MessageConveyorException e) {
+      assertEquals(
+          "Failed to locate resource bundle [colors] for locale [zh_CN] for enum type [ch.qos.cal10n.sample.Colors]",
+          e.getMessage());
+    }
+  }
+  
+  @Test
+  public void minimal() {
+    MessageConveyor mc = new MessageConveyor(Locale.ENGLISH);
+    assertEquals("A", mc.getMessage(Minimal.A));
+  }
+  
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/PackageTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/PackageTest.java
index be736c8..ba26071 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/PackageTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/PackageTest.java
@@ -1,32 +1,32 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
- at RunWith(Suite.class)
- at SuiteClasses( { MessageConveyorTest.class, MessageConveyorReloadTest.class })
-public class PackageTest {
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+ at RunWith(Suite.class)
+ at SuiteClasses( { MessageConveyorTest.class, MessageConveyorReloadTest.class })
+public class PackageTest {
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/sample/Colors.java b/cal10n-api/src/test/java/ch/qos/cal10n/sample/Colors.java
index a620261..1b3d790 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/sample/Colors.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/sample/Colors.java
@@ -1,37 +1,37 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n.sample;
-
-import ch.qos.cal10n.BaseName;
-import ch.qos.cal10n.Locale;
-import ch.qos.cal10n.LocaleData;
-
- at BaseName("colors")
- at LocaleData( { @Locale("en_UK"), @Locale("fr") })
-public enum Colors {
-  // sub-class for testing purposes
-  RED {
-
-  },
-  BLUE, GREEN;
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n.sample;
+
+import ch.qos.cal10n.BaseName;
+import ch.qos.cal10n.Locale;
+import ch.qos.cal10n.LocaleData;
+
+ at BaseName("colors")
+ at LocaleData( { @Locale("en_UK"), @Locale("fr") })
+public enum Colors {
+  // sub-class for testing purposes
+  RED {
+
+  },
+  BLUE, GREEN;
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/sample/Countries.java b/cal10n-api/src/test/java/ch/qos/cal10n/sample/Countries.java
index 785b1a9..ea3ab6a 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/sample/Countries.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/sample/Countries.java
@@ -1,39 +1,39 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.sample;
-
-import ch.qos.cal10n.Locale;
-import ch.qos.cal10n.BaseName;
-import ch.qos.cal10n.LocaleData;
-
- at BaseName("countries")
- at LocaleData({
-  @Locale("en"),
-  @Locale("fr")
-  })
-public enum Countries {
-  CH,  // Switzerland (Confederation Helvetique)
-  CN,  // China
-  FR,  // France
-  US,  // United States
-  UK;  // United Kingdom
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.sample;
+
+import ch.qos.cal10n.Locale;
+import ch.qos.cal10n.BaseName;
+import ch.qos.cal10n.LocaleData;
+
+ at BaseName("countries")
+ at LocaleData({
+  @Locale("en"),
+  @Locale("fr")
+  })
+public enum Countries {
+  CH,  // Switzerland (Confederation Helvetique)
+  CN,  // China
+  FR,  // France
+  US,  // United States
+  UK;  // United Kingdom
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/sample/Furnitures.java b/cal10n-api/src/test/java/ch/qos/cal10n/sample/Furnitures.java
index fe6ea23..be5410c 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/sample/Furnitures.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/sample/Furnitures.java
@@ -1,37 +1,37 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.sample;
-
-import ch.qos.cal10n.Locale;
-import ch.qos.cal10n.BaseName;
-import ch.qos.cal10n.LocaleData;
-
- at BaseName("furnitures")
- at LocaleData({
-  @Locale("en_UK"),
-  @Locale("fr")
-  })
-public enum Furnitures {
-  TABLE,
-  CHAIR,
-  SOFA;
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.sample;
+
+import ch.qos.cal10n.Locale;
+import ch.qos.cal10n.BaseName;
+import ch.qos.cal10n.LocaleData;
+
+ at BaseName("furnitures")
+ at LocaleData({
+  @Locale("en_UK"),
+  @Locale("fr")
+  })
+public enum Furnitures {
+  TABLE,
+  CHAIR,
+  SOFA;
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/sample/Host.java b/cal10n-api/src/test/java/ch/qos/cal10n/sample/Host.java
index 6d73380..5e92130 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/sample/Host.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/sample/Host.java
@@ -1,15 +1,15 @@
-package ch.qos.cal10n.sample;
-
-import ch.qos.cal10n.BaseName;
-
-public class Host {
-
-  @BaseName("colors")
-  public enum OtherColors {
-    RED {
-      
-    },
-    BLUE, 
-    GREEN;
-  }
-}
+package ch.qos.cal10n.sample;
+
+import ch.qos.cal10n.BaseName;
+
+public class Host {
+
+  @BaseName("colors")
+  public enum OtherColors {
+    RED {
+      
+    },
+    BLUE, 
+    GREEN;
+  }
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/sample/Minimal.java b/cal10n-api/src/test/java/ch/qos/cal10n/sample/Minimal.java
index a17911b..df63bdc 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/sample/Minimal.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/sample/Minimal.java
@@ -1,36 +1,36 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.sample;
-
-import ch.qos.cal10n.BaseName;
-
-/**
- * The most minimal enum that CAL10N supports.  
- 
- * @author Ceki G&uuml;lc&uuml;
- *
- */
-
- at BaseName("minimal")
-public enum Minimal {
-  A;
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.sample;
+
+import ch.qos.cal10n.BaseName;
+
+/**
+ * The most minimal enum that CAL10N supports.  
+ 
+ * @author Ceki G&uuml;lc&uuml;
+ *
+ */
+
+ at BaseName("minimal")
+public enum Minimal {
+  A;
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/util/AnnotationExtractorTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/util/AnnotationExtractorTest.java
index 6959476..c700d09 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/util/AnnotationExtractorTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/util/AnnotationExtractorTest.java
@@ -1,49 +1,49 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Arrays;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.util.AnnotationExtractor;
-
-
-public class AnnotationExtractorTest {
-
-  @Test
-  public void resourcceBundleName() {
-    String result = AnnotationExtractor.getBaseName(Fruit.class);
-    assertEquals("fruits", result);
-  }
-  
-  @Test
-  public void localeNames() {
-    String[] result = AnnotationExtractor.getLocaleNames(Fruit.class);
-    assertTrue(Arrays.equals(new String[] {"fr", "en"}, result));
-  }
-  
-  
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.util.AnnotationExtractor;
+
+
+public class AnnotationExtractorTest {
+
+  @Test
+  public void resourcceBundleName() {
+    String result = AnnotationExtractor.getBaseName(Fruit.class);
+    assertEquals("fruits", result);
+  }
+  
+  @Test
+  public void localeNames() {
+    String[] result = AnnotationExtractor.getLocaleNames(Fruit.class);
+    assertTrue(Arrays.equals(new String[] {"fr", "en"}, result));
+  }
+  
+  
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/util/Fruit.java b/cal10n-api/src/test/java/ch/qos/cal10n/util/Fruit.java
index f2515fb..da0bbaa 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/util/Fruit.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/util/Fruit.java
@@ -1,32 +1,32 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import ch.qos.cal10n.Locale;
-import ch.qos.cal10n.BaseName;
-import ch.qos.cal10n.LocaleData;
-
- at BaseName("fruits")
- at LocaleData(defaultCharset="", value = { @Locale("fr"), @Locale(value = "en", charset = "UTF8") })
-public enum Fruit {
-  APPLE, ORANGE;
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import ch.qos.cal10n.Locale;
+import ch.qos.cal10n.BaseName;
+import ch.qos.cal10n.LocaleData;
+
+ at BaseName("fruits")
+ at LocaleData(defaultCharset="", value = { @Locale("fr"), @Locale(value = "en", charset = "UTF8") })
+public enum Fruit {
+  APPLE, ORANGE;
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/util/MiscUtilTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/util/MiscUtilTest.java
index a248c16..eb1c4ac 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/util/MiscUtilTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/util/MiscUtilTest.java
@@ -1,53 +1,53 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.junit.Test;
-
-
-public class MiscUtilTest {
-  
-  @Test
-  public void urlToFile() {
-    ClassLoader classLoader = this.getClass().getClassLoader();
-    String resourceCandidate =  "colors" + "_" + "en" + ".properties";
-    URL url = classLoader.getResource(resourceCandidate);
-    assertNotNull("the problem is in this test, not the code tested", url);
-
-    File file =  MiscUtil.urlToFile(url);
-    assertNotNull(file);
-  }
-  
-  @Test
-  public void httpUrlToFile() throws MalformedURLException {
-    URL url = new URL("http://www.xyz.com");
-    File file =  MiscUtil.urlToFile(url);
-    assertNull(file);
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.junit.Test;
+
+
+public class MiscUtilTest {
+  
+  @Test
+  public void urlToFile() {
+    ClassLoader classLoader = this.getClass().getClassLoader();
+    String resourceCandidate =  "colors" + "_" + "en" + ".properties";
+    URL url = classLoader.getResource(resourceCandidate);
+    assertNotNull("the problem is in this test, not the code tested", url);
+
+    File file =  MiscUtil.urlToFile(url);
+    assertNotNull(file);
+  }
+  
+  @Test
+  public void httpUrlToFile() throws MalformedURLException {
+    URL url = new URL("http://www.xyz.com");
+    File file =  MiscUtil.urlToFile(url);
+    assertNull(file);
+  }
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/util/PackageTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/util/PackageTest.java
index 037b77f..3d14474 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/util/PackageTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/util/PackageTest.java
@@ -1,34 +1,34 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n.util;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
- at RunWith(Suite.class)
- at SuiteClasses( { AnnotationExtractorTest.class, MiscUtilTest.class,
-    TokenStreamTest.class, ParserTest.class,
-    PropertyResourceBundleFinderTest.class, ResourceBundleEncodingTest.class })
-public class PackageTest {
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n.util;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+ at RunWith(Suite.class)
+ at SuiteClasses( { AnnotationExtractorTest.class, MiscUtilTest.class,
+    TokenStreamTest.class, ParserTest.class,
+    PropertyResourceBundleFinderTest.class, ResourceBundleEncodingTest.class })
+public class PackageTest {
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/util/ParserTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/util/ParserTest.java
index a8bef1e..e14f36f 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/util/ParserTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/util/ParserTest.java
@@ -1,78 +1,78 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.Cal10nTestConstants;
-
-public class ParserTest {
-
-  Map<String, String> map = new HashMap<String, String>();
-  Map<String, String> witness = new HashMap<String, String>();
-
-  
-  @Test
-  public void smoke() throws IOException {
-    FileReader fr = new FileReader(Cal10nTestConstants.TEST_CLASSES+"/parser/smoke.properties");
-    Parser parser  = new Parser(fr, map);
-    parser.parseAndPopulate();
-    
-    witness.put("K0", "V0");
-    witness.put("K1", "V1");
-    assertEquals(witness, map);
-  }
-  
-  
-  @Test
-  public void medium() throws IOException {
-    FileReader fr = new FileReader(Cal10nTestConstants.TEST_CLASSES+"/parser/medium.properties");
-    Parser parser  = new Parser(fr, map);
-    parser.parseAndPopulate();
-    
-    witness.put("K0", "V0 X");
-    witness.put("K1", "V1");
-    assertEquals(witness, map);
-  }
-  
-  @Test
-  public void full() throws IOException {
-    FileReader fr = new FileReader(Cal10nTestConstants.TEST_CLASSES+"/parser/full.properties");
-    Parser parser  = new Parser(fr, map);
-    parser.parseAndPopulate();
-    
-    witness.put("K0", "V0 X");
-    witness.put("K1", "V1");
-    witness.put("K2", "V2 l1l2  l3");
-    witness.put("K3", "V3 \\t a");
-    assertEquals(witness, map);
-  }
-  
-
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.Cal10nTestConstants;
+
+public class ParserTest {
+
+  Map<String, String> map = new HashMap<String, String>();
+  Map<String, String> witness = new HashMap<String, String>();
+
+  
+  @Test
+  public void smoke() throws IOException {
+    FileReader fr = new FileReader(Cal10nTestConstants.TEST_CLASSES+"/parser/smoke.properties");
+    Parser parser  = new Parser(fr, map);
+    parser.parseAndPopulate();
+    
+    witness.put("K0", "V0");
+    witness.put("K1", "V1");
+    assertEquals(witness, map);
+  }
+  
+  
+  @Test
+  public void medium() throws IOException {
+    FileReader fr = new FileReader(Cal10nTestConstants.TEST_CLASSES+"/parser/medium.properties");
+    Parser parser  = new Parser(fr, map);
+    parser.parseAndPopulate();
+    
+    witness.put("K0", "V0 X");
+    witness.put("K1", "V1");
+    assertEquals(witness, map);
+  }
+  
+  @Test
+  public void full() throws IOException {
+    FileReader fr = new FileReader(Cal10nTestConstants.TEST_CLASSES+"/parser/full.properties");
+    Parser parser  = new Parser(fr, map);
+    parser.parseAndPopulate();
+    
+    witness.put("K0", "V0 X");
+    witness.put("K1", "V1");
+    witness.put("K2", "V2 l1l2  l3");
+    witness.put("K3", "V3 \\t a");
+    assertEquals(witness, map);
+  }
+  
+
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/util/PropertyResourceBundleFinderTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/util/PropertyResourceBundleFinderTest.java
index 478e5b5..2a2ea8e 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/util/PropertyResourceBundleFinderTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/util/PropertyResourceBundleFinderTest.java
@@ -1,73 +1,73 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.sample.Colors;
-
-public class PropertyResourceBundleFinderTest {
-  ResourceBundle rb;
-  String encoding;
-  
-  Class<?> enumTyoe = Colors.BLUE.getDeclaringClass();
-  
-  @Test
-  public void smoke() throws IOException {
-    encoding = AnnotationExtractor.getCharset(enumTyoe, Locale.FRENCH);
-    rb = CAL10NResourceBundleFinder.getBundle(this.getClass().getClassLoader(),
-         "colors", Locale.FRENCH, encoding);
-    assertEquals("les roses sont rouges", rb.getString("RED"));
-  }
-
-  @Test
-  public void withCountry() throws IOException {
-    encoding = AnnotationExtractor.getCharset(enumTyoe, Locale.FRENCH);
-    rb = CAL10NResourceBundleFinder.getBundle(this.getClass().getClassLoader(),
-        "colors", Locale.FRENCH, encoding);
-    assertEquals("les roses sont rouges", rb.getString("RED"));
-
-    rb = CAL10NResourceBundleFinder.getBundle(this.getClass().getClassLoader(),
-        "colors", Locale.FRANCE, encoding);
-    assertEquals("les roses sont rouges, et alors?", rb.getString("RED"));
-  }
-
-  @Test
-  public void inDirectory() throws IOException {
-    encoding = AnnotationExtractor.getCharset(enumTyoe, Locale.ENGLISH);
-    rb = CAL10NResourceBundleFinder.getBundle(this.getClass().getClassLoader(),
-        "foobar/sample", Locale.ENGLISH, encoding);
-    assertEquals("A is the first letter of the alphabet", rb.getString("A"));
-
-    rb = CAL10NResourceBundleFinder.getBundle(this.getClass().getClassLoader(),
-        "foobar.sample", Locale.ENGLISH, encoding);
-    assertEquals("A is the first letter of the alphabet", rb.getString("A"));
-  }
-  
-
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.sample.Colors;
+
+public class PropertyResourceBundleFinderTest {
+  ResourceBundle rb;
+  String encoding;
+  
+  Class<?> enumTyoe = Colors.BLUE.getDeclaringClass();
+  
+  @Test
+  public void smoke() throws IOException {
+    encoding = AnnotationExtractor.getCharset(enumTyoe, Locale.FRENCH);
+    rb = CAL10NResourceBundleFinder.getBundle(this.getClass().getClassLoader(),
+         "colors", Locale.FRENCH, encoding);
+    assertEquals("les roses sont rouges", rb.getString("RED"));
+  }
+
+  @Test
+  public void withCountry() throws IOException {
+    encoding = AnnotationExtractor.getCharset(enumTyoe, Locale.FRENCH);
+    rb = CAL10NResourceBundleFinder.getBundle(this.getClass().getClassLoader(),
+        "colors", Locale.FRENCH, encoding);
+    assertEquals("les roses sont rouges", rb.getString("RED"));
+
+    rb = CAL10NResourceBundleFinder.getBundle(this.getClass().getClassLoader(),
+        "colors", Locale.FRANCE, encoding);
+    assertEquals("les roses sont rouges, et alors?", rb.getString("RED"));
+  }
+
+  @Test
+  public void inDirectory() throws IOException {
+    encoding = AnnotationExtractor.getCharset(enumTyoe, Locale.ENGLISH);
+    rb = CAL10NResourceBundleFinder.getBundle(this.getClass().getClassLoader(),
+        "foobar/sample", Locale.ENGLISH, encoding);
+    assertEquals("A is the first letter of the alphabet", rb.getString("A"));
+
+    rb = CAL10NResourceBundleFinder.getBundle(this.getClass().getClassLoader(),
+        "foobar.sample", Locale.ENGLISH, encoding);
+    assertEquals("A is the first letter of the alphabet", rb.getString("A"));
+  }
+  
+
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/util/ResourceBundleEncodingTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/util/ResourceBundleEncodingTest.java
index 9975cae..fb8c42c 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/util/ResourceBundleEncodingTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/util/ResourceBundleEncodingTest.java
@@ -1,126 +1,126 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.Cal10nTestConstants;
-
-/**
- * 
- * @author Ceki G&uuml;lc&uuml;
- * 
- */
-public class ResourceBundleEncodingTest {
-
-  // Useful links:
-
-  // http://www.terena.org/activities/multiling/ml-docs/iso-8859.html
-
-  Map<String, String> map = new HashMap<String, String>();
-  Map<String, String> witness = new HashMap<String, String>();
-
-  // encoding for Greek "ISO8859_7"
-  @Test
-  public void greek_ISO8859_7() throws IOException {
-    FileInputStream fis = new FileInputStream(Cal10nTestConstants.TEST_CLASSES
-        + "/encodingsISO8859/a_el_GR.properties");
-    Reader reader = new InputStreamReader(fis, "ISO8859_7");
-    Parser parser = new Parser(reader, map);
-    parser.parseAndPopulate();
-
-    String alpha = "\u03b1";
-    witness.put("A", alpha);
-
-    // char alphaChar = alpha.charAt(0);
-    // System.out.println("alphaChar="+((int) alphaChar));
-    // String suspected = map.get("A");
-    // char suspectedChar = suspected.charAt(0);
-    // System.out.println("suspectedChar="+((int) suspectedChar));
-
-    assertEquals(witness, map);
-  }
-
-  // encoding for Turkish "ISO8859_3"
-  @Test
-  public void turkishISO8859_3() throws IOException {
-    FileInputStream fis = new FileInputStream(Cal10nTestConstants.TEST_CLASSES
-        + "/encodingsISO8859/a_tr_TR.properties");
-    Reader reader = new InputStreamReader(fis, "ISO8859_3");
-    Parser parser = new Parser(reader, map);
-    parser.parseAndPopulate();
-
-    // 0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
-    char sCedilla = '\u015F';
-
-    // 0xB9 0x0131 # LATIN SMALL LETTER DOTLESS I
-    char iDotless = '\u0131';
-
-    // nisan pronounced (nIshan)
-    String witnessValue = "n" + iDotless + sCedilla + "an";
-    witness.put("A", witnessValue);
-    assertEquals(witness, map);
-  }
-  
-  @Test
-  public void greek_UTF8() throws IOException {
-    FileInputStream fis = new FileInputStream(Cal10nTestConstants.TEST_CLASSES
-        + "/encodingsUTF8/a_el_GR.properties");
-    Reader reader = new InputStreamReader(fis, "UTF8");
-    Parser parser = new Parser(reader, map);
-    parser.parseAndPopulate();
-
-    String alpha = "\u03b1";
-    witness.put("A", alpha);
-
-    assertEquals(witness, map);
-  }
-  
-  @Test
-  public void turkishUTF8() throws IOException {
-    FileInputStream fis = new FileInputStream(Cal10nTestConstants.TEST_CLASSES
-        + "/encodingsUTF8/a_tr_TR.properties");
-    Reader reader = new InputStreamReader(fis, "UTF8");
-    Parser parser = new Parser(reader, map);
-    parser.parseAndPopulate();
-
-    // 0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
-    char sCedilla = '\u015F';
-
-    // 0xB9 0x0131 # LATIN SMALL LETTER DOTLESS I
-    char iDotless = '\u0131';
-
-    // nisan pronounced (nIshan)
-    String witnessValue = "n" + iDotless + sCedilla + "an";
-    witness.put("A", witnessValue);
-    assertEquals(witness, map);
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.Cal10nTestConstants;
+
+/**
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * 
+ */
+public class ResourceBundleEncodingTest {
+
+  // Useful links:
+
+  // http://www.terena.org/activities/multiling/ml-docs/iso-8859.html
+
+  Map<String, String> map = new HashMap<String, String>();
+  Map<String, String> witness = new HashMap<String, String>();
+
+  // encoding for Greek "ISO8859_7"
+  @Test
+  public void greek_ISO8859_7() throws IOException {
+    FileInputStream fis = new FileInputStream(Cal10nTestConstants.TEST_CLASSES
+        + "/encodingsISO8859/a_el_GR.properties");
+    Reader reader = new InputStreamReader(fis, "ISO8859_7");
+    Parser parser = new Parser(reader, map);
+    parser.parseAndPopulate();
+
+    String alpha = "\u03b1";
+    witness.put("A", alpha);
+
+    // char alphaChar = alpha.charAt(0);
+    // System.out.println("alphaChar="+((int) alphaChar));
+    // String suspected = map.get("A");
+    // char suspectedChar = suspected.charAt(0);
+    // System.out.println("suspectedChar="+((int) suspectedChar));
+
+    assertEquals(witness, map);
+  }
+
+  // encoding for Turkish "ISO8859_3"
+  @Test
+  public void turkishISO8859_3() throws IOException {
+    FileInputStream fis = new FileInputStream(Cal10nTestConstants.TEST_CLASSES
+        + "/encodingsISO8859/a_tr_TR.properties");
+    Reader reader = new InputStreamReader(fis, "ISO8859_3");
+    Parser parser = new Parser(reader, map);
+    parser.parseAndPopulate();
+
+    // 0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
+    char sCedilla = '\u015F';
+
+    // 0xB9 0x0131 # LATIN SMALL LETTER DOTLESS I
+    char iDotless = '\u0131';
+
+    // nisan pronounced (nIshan)
+    String witnessValue = "n" + iDotless + sCedilla + "an";
+    witness.put("A", witnessValue);
+    assertEquals(witness, map);
+  }
+  
+  @Test
+  public void greek_UTF8() throws IOException {
+    FileInputStream fis = new FileInputStream(Cal10nTestConstants.TEST_CLASSES
+        + "/encodingsUTF8/a_el_GR.properties");
+    Reader reader = new InputStreamReader(fis, "UTF8");
+    Parser parser = new Parser(reader, map);
+    parser.parseAndPopulate();
+
+    String alpha = "\u03b1";
+    witness.put("A", alpha);
+
+    assertEquals(witness, map);
+  }
+  
+  @Test
+  public void turkishUTF8() throws IOException {
+    FileInputStream fis = new FileInputStream(Cal10nTestConstants.TEST_CLASSES
+        + "/encodingsUTF8/a_tr_TR.properties");
+    Reader reader = new InputStreamReader(fis, "UTF8");
+    Parser parser = new Parser(reader, map);
+    parser.parseAndPopulate();
+
+    // 0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
+    char sCedilla = '\u015F';
+
+    // 0xB9 0x0131 # LATIN SMALL LETTER DOTLESS I
+    char iDotless = '\u0131';
+
+    // nisan pronounced (nIshan)
+    String witnessValue = "n" + iDotless + sCedilla + "an";
+    witness.put("A", witnessValue);
+    assertEquals(witness, map);
+  }
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/util/TokenStreamTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/util/TokenStreamTest.java
index bc4c055..00f1140 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/util/TokenStreamTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/util/TokenStreamTest.java
@@ -1,92 +1,92 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.util;
-
-import static org.junit.Assert.*;
-
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.Cal10nTestConstants;
-import ch.qos.cal10n.util.Token.TokenType;
-
-/**
- * 
- * @author Ceki G&uuml;lc&uuml;
- *
- */
-public class TokenStreamTest {
-
-  
-  @Test
-  public void smoke() throws FileNotFoundException {
-    FileReader fr = new FileReader(Cal10nTestConstants.TEST_CLASSES+"/parser/smoke.properties");
-    TokenStream ts = new TokenStream(fr);
-    List<Token> tokenList = ts.tokenize();
-    
-    List<Token> witness = new ArrayList<Token>();
-    witness.add(new Token(TokenType.KEY, "K0"));
-    witness.add(new Token(TokenType.SEPARATOR, "="));
-    witness.add(new Token(TokenType.VALUE, "V0"));
-    witness.add(Token.EOL);
-
-    witness.add(new Token(TokenType.KEY, "K1"));
-    witness.add(new Token(TokenType.SEPARATOR, "="));
-    witness.add(new Token(TokenType.VALUE, "V1"));
-    witness.add(Token.EOL);
-    assertEquals(witness, tokenList);
-  }
-  
-  @Test
-  public void medium() throws FileNotFoundException {
-    FileReader fr = new FileReader(Cal10nTestConstants.TEST_CLASSES+"/parser/medium.properties");
-    TokenStream ts = new TokenStream(fr);
-    List<Token> tokenList = ts.tokenize();
-    
-   // K0=V0 \
-   //  X
-   // # comment
-   // K1=V1
-    
-    
-    List<Token> witness = new ArrayList<Token>();
-    witness.add(new Token(TokenType.KEY, "K0"));
-    witness.add(new Token(TokenType.SEPARATOR, "="));
-    witness.add(new Token(TokenType.VALUE, "V0 "));
-    witness.add(Token.TRAILING_BACKSLASH);
-    witness.add(Token.EOL);
-    witness.add(new Token(TokenType.VALUE, "X"));
-    witness.add(Token.EOL);
-    witness.add(Token.EOL);
-    
-    witness.add(new Token(TokenType.KEY, "K1"));
-    witness.add(new Token(TokenType.SEPARATOR, "="));
-    witness.add(new Token(TokenType.VALUE, "V1"));
-    witness.add(Token.EOL);
-    assertEquals(witness, tokenList);
-  }
-
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.util;
+
+import static org.junit.Assert.*;
+
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.Cal10nTestConstants;
+import ch.qos.cal10n.util.Token.TokenType;
+
+/**
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ *
+ */
+public class TokenStreamTest {
+
+  
+  @Test
+  public void smoke() throws FileNotFoundException {
+    FileReader fr = new FileReader(Cal10nTestConstants.TEST_CLASSES+"/parser/smoke.properties");
+    TokenStream ts = new TokenStream(fr);
+    List<Token> tokenList = ts.tokenize();
+    
+    List<Token> witness = new ArrayList<Token>();
+    witness.add(new Token(TokenType.KEY, "K0"));
+    witness.add(new Token(TokenType.SEPARATOR, "="));
+    witness.add(new Token(TokenType.VALUE, "V0"));
+    witness.add(Token.EOL);
+
+    witness.add(new Token(TokenType.KEY, "K1"));
+    witness.add(new Token(TokenType.SEPARATOR, "="));
+    witness.add(new Token(TokenType.VALUE, "V1"));
+    witness.add(Token.EOL);
+    assertEquals(witness, tokenList);
+  }
+  
+  @Test
+  public void medium() throws FileNotFoundException {
+    FileReader fr = new FileReader(Cal10nTestConstants.TEST_CLASSES+"/parser/medium.properties");
+    TokenStream ts = new TokenStream(fr);
+    List<Token> tokenList = ts.tokenize();
+    
+   // K0=V0 \
+   //  X
+   // # comment
+   // K1=V1
+    
+    
+    List<Token> witness = new ArrayList<Token>();
+    witness.add(new Token(TokenType.KEY, "K0"));
+    witness.add(new Token(TokenType.SEPARATOR, "="));
+    witness.add(new Token(TokenType.VALUE, "V0 "));
+    witness.add(Token.TRAILING_BACKSLASH);
+    witness.add(Token.EOL);
+    witness.add(new Token(TokenType.VALUE, "X"));
+    witness.add(Token.EOL);
+    witness.add(Token.EOL);
+    
+    witness.add(new Token(TokenType.KEY, "K1"));
+    witness.add(new Token(TokenType.SEPARATOR, "="));
+    witness.add(new Token(TokenType.VALUE, "V1"));
+    witness.add(Token.EOL);
+    assertEquals(witness, tokenList);
+  }
+
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MessageKeyVerifierTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MessageKeyVerifierTest.java
index c8ab126..f1bedc3 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MessageKeyVerifierTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MessageKeyVerifierTest.java
@@ -1,78 +1,78 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n.verifier;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import java.util.List;
-import java.util.Locale;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.sample.Colors;
-import ch.qos.cal10n.sample.Countries;
-import ch.qos.cal10n.sample.Minimal;
-
-/**
- * 
- * @author Ceki G&uuml;lc&uuml;
- */
-public class MessageKeyVerifierTest {
-
-  @Test
-  public void smoke() {
-    IMessageKeyVerifier miv = new MessageKeyVerifier(Colors.class);
-    List<Cal10nError> errorList = miv.verify(Locale.UK);
-    assertEquals(0, errorList.size());
-  }
-
-  @Test
-  public void withErrors_UK() {
-    IMessageKeyVerifier miv = new MessageKeyVerifier(Countries.class);
-    List<Cal10nError> errorList = miv.verify(Locale.UK);
-    assertEquals(2, errorList.size());
-    assertEquals("CH", errorList.get(0).getKey());
-    assertEquals("BR", errorList.get(1).getKey());
-  }
-
-  @Test
-  public void withErrors_FR() {
-    IMessageKeyVerifier miv = new MessageKeyVerifier(Countries.class);
-    List<Cal10nError> errorList = miv.verify(Locale.FRANCE);
-    assertEquals(3, errorList.size());
-    assertEquals("CH", errorList.get(0).getKey());
-    assertEquals("CN", errorList.get(1).getKey());
-    assertEquals("BR", errorList.get(2).getKey());
-  }
-
-  @Test
-  public void all() {
-    IMessageKeyVerifier mcv = new MessageKeyVerifier(Minimal.class);
-    try {
-      mcv.verifyAllLocales();
-      fail("an emum without LocaleData cannot be verifiied in one step");
-    } catch (IllegalStateException e) {
-    }
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n.verifier;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+import java.util.Locale;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.sample.Colors;
+import ch.qos.cal10n.sample.Countries;
+import ch.qos.cal10n.sample.Minimal;
+
+/**
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ */
+public class MessageKeyVerifierTest {
+
+  @Test
+  public void smoke() {
+    IMessageKeyVerifier miv = new MessageKeyVerifier(Colors.class);
+    List<Cal10nError> errorList = miv.verify(Locale.UK);
+    assertEquals(0, errorList.size());
+  }
+
+  @Test
+  public void withErrors_UK() {
+    IMessageKeyVerifier miv = new MessageKeyVerifier(Countries.class);
+    List<Cal10nError> errorList = miv.verify(Locale.UK);
+    assertEquals(2, errorList.size());
+    assertEquals("CH", errorList.get(0).getKey());
+    assertEquals("BR", errorList.get(1).getKey());
+  }
+
+  @Test
+  public void withErrors_FR() {
+    IMessageKeyVerifier miv = new MessageKeyVerifier(Countries.class);
+    List<Cal10nError> errorList = miv.verify(Locale.FRANCE);
+    assertEquals(3, errorList.size());
+    assertEquals("CH", errorList.get(0).getKey());
+    assertEquals("CN", errorList.get(1).getKey());
+    assertEquals("BR", errorList.get(2).getKey());
+  }
+
+  @Test
+  public void all() {
+    IMessageKeyVerifier mcv = new MessageKeyVerifier(Minimal.class);
+    try {
+      mcv.verifyAllLocales();
+      fail("an emum without LocaleData cannot be verifiied in one step");
+    } catch (IllegalStateException e) {
+    }
+  }
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MyAllInOneColorVerificationTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MyAllInOneColorVerificationTest.java
index 680bf90..a89f78e 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MyAllInOneColorVerificationTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MyAllInOneColorVerificationTest.java
@@ -1,49 +1,49 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.verifier;
-
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.List;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.sample.Colors;
-
-/**
- * 
- * @author Ceki G&uuml;lc&uuml;
- *
- */
-public class MyAllInOneColorVerificationTest {
-
-
-  @Test
-  public void all() {
-    IMessageKeyVerifier mcv = new MessageKeyVerifier(Colors.class);
-    List<Cal10nError> errorList = mcv.verifyAllLocales();
-    System.out.println(errorList);
-    assertEquals(0, errorList.size());
-  }
-
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.verifier;
+
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.sample.Colors;
+
+/**
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ *
+ */
+public class MyAllInOneColorVerificationTest {
+
+
+  @Test
+  public void all() {
+    IMessageKeyVerifier mcv = new MessageKeyVerifier(Colors.class);
+    List<Cal10nError> errorList = mcv.verifyAllLocales();
+    System.out.println(errorList);
+    assertEquals(0, errorList.size());
+  }
+
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MyColorVerificationTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MyColorVerificationTest.java
index b51ad51..6c07953 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MyColorVerificationTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/verifier/MyColorVerificationTest.java
@@ -1,55 +1,55 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.verifier;
-
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.List;
-import java.util.Locale;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.sample.Colors;
-
-public class MyColorVerificationTest {
-
-  @Test
-  public void en_UK() {
-    IMessageKeyVerifier mcv = new MessageKeyVerifier(Colors.class);
-    List<Cal10nError> errorList = mcv.verify(Locale.UK);
-    for(Cal10nError error: errorList) {
-      System.out.println(error);
-    }
-    assertEquals(0, errorList.size());
-  }
-
-  @Test
-  public void fr() {
-    IMessageKeyVerifier mcv = new MessageKeyVerifier(Colors.class);
-    List<Cal10nError> errorList = mcv.verify(Locale.FRANCE);
-    for(Cal10nError error: errorList) {
-      System.out.println(error);
-    }
-    assertEquals(0, errorList.size());
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.verifier;
+
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+import java.util.Locale;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.sample.Colors;
+
+public class MyColorVerificationTest {
+
+  @Test
+  public void en_UK() {
+    IMessageKeyVerifier mcv = new MessageKeyVerifier(Colors.class);
+    List<Cal10nError> errorList = mcv.verify(Locale.UK);
+    for(Cal10nError error: errorList) {
+      System.out.println(error);
+    }
+    assertEquals(0, errorList.size());
+  }
+
+  @Test
+  public void fr() {
+    IMessageKeyVerifier mcv = new MessageKeyVerifier(Colors.class);
+    List<Cal10nError> errorList = mcv.verify(Locale.FRANCE);
+    for(Cal10nError error: errorList) {
+      System.out.println(error);
+    }
+    assertEquals(0, errorList.size());
+  }
+}
diff --git a/cal10n-api/src/test/java/ch/qos/cal10n/verifier/PackageTest.java b/cal10n-api/src/test/java/ch/qos/cal10n/verifier/PackageTest.java
index e07e691..c209ce0 100644
--- a/cal10n-api/src/test/java/ch/qos/cal10n/verifier/PackageTest.java
+++ b/cal10n-api/src/test/java/ch/qos/cal10n/verifier/PackageTest.java
@@ -1,33 +1,33 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package ch.qos.cal10n.verifier;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
- at RunWith(Suite.class)
- at SuiteClasses( { MessageKeyVerifierTest.class, MyColorVerificationTest.class,
-    MyAllInOneColorVerificationTest.class })
-public class PackageTest {
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package ch.qos.cal10n.verifier;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+ at RunWith(Suite.class)
+ at SuiteClasses( { MessageKeyVerifierTest.class, MyColorVerificationTest.class,
+    MyAllInOneColorVerificationTest.class })
+public class PackageTest {
+}
diff --git a/cal10n-api/src/test/resources/colors.properties b/cal10n-api/src/test/resources/colors.properties
index 6eb4378..6988910 100644
--- a/cal10n-api/src/test/resources/colors.properties
+++ b/cal10n-api/src/test/resources/colors.properties
@@ -1,4 +1,4 @@
-# this bundle should be ignored
-BLUE=BBBBBBB
-RED=RRRRRRRRRRR
+# this bundle should be ignored
+BLUE=BBBBBBB
+RED=RRRRRRRRRRR
 GREEN=GGGGGGGGG
\ No newline at end of file
diff --git a/cal10n-api/src/test/resources/colors_en.properties b/cal10n-api/src/test/resources/colors_en.properties
index ad7bd84..6ca3d4f 100644
--- a/cal10n-api/src/test/resources/colors_en.properties
+++ b/cal10n-api/src/test/resources/colors_en.properties
@@ -1,3 +1,3 @@
-BLUE=violets are blue
-RED=roses are red
+BLUE=violets are blue
+RED=roses are red
 GREEN={0} are green
\ No newline at end of file
diff --git a/cal10n-api/src/test/resources/colors_fr.properties b/cal10n-api/src/test/resources/colors_fr.properties
index 0ea9e8c..5ad9648 100644
--- a/cal10n-api/src/test/resources/colors_fr.properties
+++ b/cal10n-api/src/test/resources/colors_fr.properties
@@ -1,3 +1,3 @@
-BLUE=les violettes sont bleues
-RED=les roses sont rouges
+BLUE=les violettes sont bleues
+RED=les roses sont rouges
 GREEN=les {0} sont verts
\ No newline at end of file
diff --git a/cal10n-api/src/test/resources/countries_en.properties b/cal10n-api/src/test/resources/countries_en.properties
index 895e638..ef06370 100644
--- a/cal10n-api/src/test/resources/countries_en.properties
+++ b/cal10n-api/src/test/resources/countries_en.properties
@@ -1,5 +1,5 @@
-BR=Brasil
-CN=China
-FR=France
-US=United States
-UK=United Kingdom
+BR=Brasil
+CN=China
+FR=France
+US=United States
+UK=United Kingdom
diff --git a/cal10n-api/src/test/resources/countries_fr.properties b/cal10n-api/src/test/resources/countries_fr.properties
index 6bbc211..056a099 100644
--- a/cal10n-api/src/test/resources/countries_fr.properties
+++ b/cal10n-api/src/test/resources/countries_fr.properties
@@ -1,4 +1,4 @@
-BR=Bresil
-FR=France
-US=Etats Unis d'Amerique
-UK=Royaume Unis
+BR=Bresil
+FR=France
+US=Etats Unis d'Amerique
+UK=Royaume Unis
diff --git a/cal10n-api/src/test/resources/encodingsISO8859/a_el_GR.properties b/cal10n-api/src/test/resources/encodingsISO8859/a_el_GR.properties
index 13cf8d6..bf3cb7f 100644
--- a/cal10n-api/src/test/resources/encodingsISO8859/a_el_GR.properties
+++ b/cal10n-api/src/test/resources/encodingsISO8859/a_el_GR.properties
@@ -1 +1 @@
-A=á
+A=á
diff --git a/cal10n-api/src/test/resources/encodingsUTF8/a_tr_TR.properties b/cal10n-api/src/test/resources/encodingsUTF8/a_tr_TR.properties
index f2eb98c..1ba87d5 100644
--- a/cal10n-api/src/test/resources/encodingsUTF8/a_tr_TR.properties
+++ b/cal10n-api/src/test/resources/encodingsUTF8/a_tr_TR.properties
@@ -1 +1 @@
-A=nışan
+A=nışan
diff --git a/cal10n-api/src/test/resources/furnitures.properties b/cal10n-api/src/test/resources/furnitures.properties
index b977c62..a8e2650 100644
--- a/cal10n-api/src/test/resources/furnitures.properties
+++ b/cal10n-api/src/test/resources/furnitures.properties
@@ -1,3 +1,3 @@
-TABLE=the table
-CHAIR=the chair
+TABLE=the table
+CHAIR=the chair
 SOFA=the sofa
\ No newline at end of file
diff --git a/cal10n-api/src/test/resources/furnitures_fr.properties b/cal10n-api/src/test/resources/furnitures_fr.properties
index 7902933..b837162 100644
--- a/cal10n-api/src/test/resources/furnitures_fr.properties
+++ b/cal10n-api/src/test/resources/furnitures_fr.properties
@@ -1,3 +1,3 @@
-TABLE=la table
-CHAIR=la chaise
+TABLE=la table
+CHAIR=la chaise
 SOFA=le sofa
\ No newline at end of file
diff --git a/cal10n-api/src/test/resources/parser/full.properties b/cal10n-api/src/test/resources/parser/full.properties
index f2f00da..2baf43f 100644
--- a/cal10n-api/src/test/resources/parser/full.properties
+++ b/cal10n-api/src/test/resources/parser/full.properties
@@ -1,20 +1,20 @@
-
-
-# comment
-  # comment
-K0=V0 \
- X
-# comment
-K1=V1
-
-  K2 :  V2 \  
-l1\
-l2  \       
-l3
- 
-#
-K3 = V3 \t a
-
- # comment
-
-
+
+
+# comment
+  # comment
+K0=V0 \
+ X
+# comment
+K1=V1
+
+  K2 :  V2 \  
+l1\
+l2  \       
+l3
+ 
+#
+K3 = V3 \t a
+
+ # comment
+
+
diff --git a/cal10n-api/src/test/resources/parser/medium.properties b/cal10n-api/src/test/resources/parser/medium.properties
index 74c0798..f431007 100644
--- a/cal10n-api/src/test/resources/parser/medium.properties
+++ b/cal10n-api/src/test/resources/parser/medium.properties
@@ -1,4 +1,4 @@
-K0=V0 \
- X
-# comment
+K0=V0 \
+ X
+# comment
 K1=V1
\ No newline at end of file
diff --git a/cal10n-api/src/test/resources/parser/smoke.properties b/cal10n-api/src/test/resources/parser/smoke.properties
index 565ee41..09c3d74 100644
--- a/cal10n-api/src/test/resources/parser/smoke.properties
+++ b/cal10n-api/src/test/resources/parser/smoke.properties
@@ -1,2 +1,2 @@
-K0=V0
+K0=V0
 K1=V1
\ No newline at end of file
diff --git a/cal10n-site/LICENSE.txt b/cal10n-site/LICENSE.txt
index 41db417..c7e86eb 100644
--- a/cal10n-site/LICENSE.txt
+++ b/cal10n-site/LICENSE.txt
@@ -1,24 +1,24 @@
-Copyright (c) 2009 QOS.ch
-All rights reserved.
-
-Permission is hereby granted, free  of charge, to any person obtaining
-a  copy  of this  software  and  associated  documentation files  (the
-"Software"), to  deal in  the Software without  restriction, including
-without limitation  the rights to  use, copy, modify,  merge, publish,
-distribute,  sublicense, and/or sell  copies of  the Software,  and to
-permit persons to whom the Software  is furnished to do so, subject to
-the following conditions:
-
-The  above  copyright  notice  and  this permission  notice  shall  be
-included in all copies or substantial portions of the Software.
-
-THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
-EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
-MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
+Copyright (c) 2009 QOS.ch
+All rights reserved.
+
+Permission is hereby granted, free  of charge, to any person obtaining
+a  copy  of this  software  and  associated  documentation files  (the
+"Software"), to  deal in  the Software without  restriction, including
+without limitation  the rights to  use, copy, modify,  merge, publish,
+distribute,  sublicense, and/or sell  copies of  the Software,  and to
+permit persons to whom the Software  is furnished to do so, subject to
+the following conditions:
+
+The  above  copyright  notice  and  this permission  notice  shall  be
+included in all copies or substantial portions of the Software.
+
+THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
diff --git a/cal10n-site/pom.xml b/cal10n-site/pom.xml
index 031679c..30dd320 100644
--- a/cal10n-site/pom.xml
+++ b/cal10n-site/pom.xml
@@ -1,59 +1,59 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <parent>
-    <groupId>ch.qos.cal10n</groupId>
-    <artifactId>cal10n-parent</artifactId>
-    <version>0.7.2</version>
-  </parent>
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>ch.qos.cal10n</groupId>
-  <artifactId>cal10n-site</artifactId>
-
-	<packaging>jar</packaging>
-  <name>Compiler assisted localization library (CAL10N) -   Site</name>
-
-
-	<build>
-		<resources>
-			<resource>
-				<directory>src/site/pages</directory>
-				<!-- 
-					We're saving filtered html docs in a temporary folder
-					and telling the site plug in to get the docs there.
-				-->
-        <targetPath>../../../target/site</targetPath>
-				<filtering>true</filtering>
-			</resource>
-		</resources>
-	</build>
-
-
-	<reporting>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-site-plugin</artifactId>
-				<configuration>
-					<outputDirectory>${project.parent.basedir}/target/site</outputDirectory>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>
-					maven-project-info-reports-plugin
-				</artifactId>
-				<reportSets>
-					<reportSet>
-						<reports>
-						</reports>
-					</reportSet>
-				</reportSets>
-			</plugin>
-		</plugins>
-	</reporting>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <parent>
+    <groupId>ch.qos.cal10n</groupId>
+    <artifactId>cal10n-parent</artifactId>
+    <version>0.7.2</version>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>ch.qos.cal10n</groupId>
+  <artifactId>cal10n-site</artifactId>
+
+	<packaging>jar</packaging>
+  <name>Compiler assisted localization library (CAL10N) -   Site</name>
+
+
+	<build>
+		<resources>
+			<resource>
+				<directory>src/site/pages</directory>
+				<!-- 
+					We're saving filtered html docs in a temporary folder
+					and telling the site plug in to get the docs there.
+				-->
+        <targetPath>../../../target/site</targetPath>
+				<filtering>true</filtering>
+			</resource>
+		</resources>
+	</build>
+
+
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-site-plugin</artifactId>
+				<configuration>
+					<outputDirectory>${project.parent.basedir}/target/site</outputDirectory>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>
+					maven-project-info-reports-plugin
+				</artifactId>
+				<reportSets>
+					<reportSet>
+						<reports>
+						</reports>
+					</reportSet>
+				</reportSets>
+			</plugin>
+		</plugins>
+	</reporting>
+
 </project>
\ No newline at end of file
diff --git a/cal10n-site/src/site/pages/bugreport.html b/cal10n-site/src/site/pages/bugreport.html
index 1ccdebf..c4deca1 100644
--- a/cal10n-site/src/site/pages/bugreport.html
+++ b/cal10n-site/src/site/pages/bugreport.html
@@ -1,91 +1,91 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Bug report</title>
-    <link rel="stylesheet" type="text/css" href="css/common.css" />
-    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-  </head>
-  <body>
-    <script type="text/javascript">prefix='';</script>
-
-    <script src="templates/header.js" type="text/javascript"></script>
-    <div id="left">
-      <script src="templates/left.js" type="text/javascript"></script>
-    </div>
-    <div id="content">
-	
-	
-	
-	
-    <h2>Before you report a bug</h2>
-
-    <p>The cal10n community consists of those who use cal10n and its
-    modules, help answer questions on discussions lists, contribute
-    documentation and patches, and those who develop and maintain its
-    code. Almost all those who assist on a day to day basis resolving
-    bug reports do this for a wide variety of reasons, and almost all
-    of them do this on their own time.</p>
-
-    <p>Many bugs reported end up not being a bug in cal10n, but are
-    due to misconfiguration, problems caused by installed
-    applications, the operating system, etc.
-    </p>
-
-    <p>Before reporting a bug please make every effort to resolve the
-    problem yourself.  Just reporting a bug will not fix it. A good
-    bug report includes a detailed description of the problem and a
-    succinct test case which can reproduce the problem.
-    </p>
-
-    <h3>Review the documentation</h3>
-    
-    <p>Review the documentation for the version of component you are
-    using.  The problem you are having may already be addressed in the
-    docs.
-    </p>
-
-    <h3>Search the mailing list archives</h3>
-    
-    <p>It is very likely you are not the first to run into a problem.
-    Others may have already found a solution.  Our various mailing lists
-    are likely to have discussed this problem before.
-    </p>
-    
-    <h3>Search JIRA</h3>
-    
-    <p>Please search the bug database to see if the bug you are seeing
-    has already been reported.  The bug may have already been fixed
-    and is available in a later version.  If someone else has reported
-    the same bug, you could add supporting information to help
-    reproduce and resolve the bug.
-    </p>
-    
-    <ul>
-      <li><a
-      href="http://jira.qos.ch/secure/IssueNavigator.jspa">Search for
-      cal10n bugs</a></li> </ul>
-    
-    <h2>Reporting with bugs</h2>
-    
-    <p>Only after you have exhausted the aforementioned steps, should
-    you file a formal report in JIRA, our bug tracking system.
-    </p>
-
-    <p>Please make sure you provide as much information as possible.
-    Its very hard to fix a bug if the person looking into the problem
-    can't reproduce it.
-    </p>
-    
-    <ul>
-      <li><a
-      href="http://jira.qos.ch/secure/CreateIssue!default.jspa">Report
-      new cal10n bug</a></li>
-    </ul>
-    
-    <script src="templates/footer.js" type="text/javascript"></script>
-</div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>Bug report</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+  </head>
+  <body>
+    <script type="text/javascript">prefix='';</script>
+
+    <script src="templates/header.js" type="text/javascript"></script>
+    <div id="left">
+      <script src="templates/left.js" type="text/javascript"></script>
+    </div>
+    <div id="content">
+	
+	
+	
+	
+    <h2>Before you report a bug</h2>
+
+    <p>The cal10n community consists of those who use cal10n and its
+    modules, help answer questions on discussions lists, contribute
+    documentation and patches, and those who develop and maintain its
+    code. Almost all those who assist on a day to day basis resolving
+    bug reports do this for a wide variety of reasons, and almost all
+    of them do this on their own time.</p>
+
+    <p>Many bugs reported end up not being a bug in cal10n, but are
+    due to misconfiguration, problems caused by installed
+    applications, the operating system, etc.
+    </p>
+
+    <p>Before reporting a bug please make every effort to resolve the
+    problem yourself.  Just reporting a bug will not fix it. A good
+    bug report includes a detailed description of the problem and a
+    succinct test case which can reproduce the problem.
+    </p>
+
+    <h3>Review the documentation</h3>
+    
+    <p>Review the documentation for the version of component you are
+    using.  The problem you are having may already be addressed in the
+    docs.
+    </p>
+
+    <h3>Search the mailing list archives</h3>
+    
+    <p>It is very likely you are not the first to run into a problem.
+    Others may have already found a solution.  Our various mailing lists
+    are likely to have discussed this problem before.
+    </p>
+    
+    <h3>Search JIRA</h3>
+    
+    <p>Please search the bug database to see if the bug you are seeing
+    has already been reported.  The bug may have already been fixed
+    and is available in a later version.  If someone else has reported
+    the same bug, you could add supporting information to help
+    reproduce and resolve the bug.
+    </p>
+    
+    <ul>
+      <li><a
+      href="http://jira.qos.ch/secure/IssueNavigator.jspa">Search for
+      cal10n bugs</a></li> </ul>
+    
+    <h2>Reporting with bugs</h2>
+    
+    <p>Only after you have exhausted the aforementioned steps, should
+    you file a formal report in JIRA, our bug tracking system.
+    </p>
+
+    <p>Please make sure you provide as much information as possible.
+    Its very hard to fix a bug if the person looking into the problem
+    can't reproduce it.
+    </p>
+    
+    <ul>
+      <li><a
+      href="http://jira.qos.ch/secure/CreateIssue!default.jspa">Report
+      new cal10n bug</a></li>
+    </ul>
+    
+    <script src="templates/footer.js" type="text/javascript"></script>
+</div>
+</body>
+</html>
diff --git a/cal10n-site/src/site/pages/codes.html b/cal10n-site/src/site/pages/codes.html
index c8a3d2b..3a22551 100644
--- a/cal10n-site/src/site/pages/codes.html
+++ b/cal10n-site/src/site/pages/codes.html
@@ -1,70 +1,70 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Error codes</title>
-    <link rel="stylesheet" type="text/css" href="css/common.css" />
-    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-
-  </head>
-  <body>
-    <script type="text/javascript">prefix='';</script>
-    <script src="templates/header.js" type="text/javascript"></script>
-    <div id="left">
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="templates/left.js" type="text/javascript"></script>
-    </div>
-    <div id="content">
-  
-
-   <h1>CAL10N error codes and their meanings</h1>
-
-
-   <h3><a name="missingBaseNameAnnotation"
-   href="#missingBaseNameAnnotation">Missing
-   <code>@BaseName</code> annotation in enum type [...].
-    </a>
-   </h3>
-
-    <p>The @BaseName annotation is mandatory when an enum type is used
-    in conjuction with <a
-    href="apidocs/ch/qos/cal10n/MessageConveyor.html">MessageConveyor</a>
-    to retreive localized messages.  See the <a
-    href="manual.html#core">user manual</a> as well as the javadocs
-    for <a
-    href="apidocs/ch/qos/cal10n/BaseName.html">BaseName</a>
-    annotation for more details.
-    </p>
-
-    <hr/>
-
-    <h3><a name="missingLDAnnotation" href="#missingLDAnnotation">Missing
-    @LocaleData annotation in enum type [...].</a> </h3>
-
-    <p>If an enum type and its associated bundles are to be verified
-    via the <em>maven-cal10n-plugin</em> or via a <a href="manual.html#singleTest">single unit test</a>,
-    then the enum type needs to be annotated with <a
-    href="apidocs/ch/qos/cal10n/LocaleData.html">LocaleData</a>.
-    </p> 
-    <hr/>
-
-    <h3><a name="missingEnumType" href="#missingEnumType">Missing
-    <code>&lt;enumTypes></code> element.</a> 
-    </h3>
-
-    <p>The <code>&lt;enumTypes></code> is a required parameter of the
-    <em>maven-cal10n-plugin</em>. Please refer to the section on <a
-    href="manual.html#mavenPlugin"><em>maven-cal10n-plugin</em></a> in
-    the user manual for more details.
-    </p>
-
-
- 
-
-  <script src="templates/footer.js" type="text/javascript"></script>
-</div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>Error codes</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+
+  </head>
+  <body>
+    <script type="text/javascript">prefix='';</script>
+    <script src="templates/header.js" type="text/javascript"></script>
+    <div id="left">
+      <noscript>Please turn on Javascript to view this menu</noscript>
+      <script src="templates/left.js" type="text/javascript"></script>
+    </div>
+    <div id="content">
+  
+
+   <h1>CAL10N error codes and their meanings</h1>
+
+
+   <h3><a name="missingBaseNameAnnotation"
+   href="#missingBaseNameAnnotation">Missing
+   <code>@BaseName</code> annotation in enum type [...].
+    </a>
+   </h3>
+
+    <p>The @BaseName annotation is mandatory when an enum type is used
+    in conjuction with <a
+    href="apidocs/ch/qos/cal10n/MessageConveyor.html">MessageConveyor</a>
+    to retreive localized messages.  See the <a
+    href="manual.html#core">user manual</a> as well as the javadocs
+    for <a
+    href="apidocs/ch/qos/cal10n/BaseName.html">BaseName</a>
+    annotation for more details.
+    </p>
+
+    <hr/>
+
+    <h3><a name="missingLDAnnotation" href="#missingLDAnnotation">Missing
+    @LocaleData annotation in enum type [...].</a> </h3>
+
+    <p>If an enum type and its associated bundles are to be verified
+    via the <em>maven-cal10n-plugin</em> or via a <a href="manual.html#singleTest">single unit test</a>,
+    then the enum type needs to be annotated with <a
+    href="apidocs/ch/qos/cal10n/LocaleData.html">LocaleData</a>.
+    </p> 
+    <hr/>
+
+    <h3><a name="missingEnumType" href="#missingEnumType">Missing
+    <code>&lt;enumTypes></code> element.</a> 
+    </h3>
+
+    <p>The <code>&lt;enumTypes></code> is a required parameter of the
+    <em>maven-cal10n-plugin</em>. Please refer to the section on <a
+    href="manual.html#mavenPlugin"><em>maven-cal10n-plugin</em></a> in
+    the user manual for more details.
+    </p>
+
+
+ 
+
+  <script src="templates/footer.js" type="text/javascript"></script>
+</div>
+</body>
+</html>
diff --git a/cal10n-site/src/site/pages/css/_print.css b/cal10n-site/src/site/pages/css/_print.css
index 243c24a..b385779 100644
--- a/cal10n-site/src/site/pages/css/_print.css
+++ b/cal10n-site/src/site/pages/css/_print.css
@@ -1,31 +1,31 @@
-
-body {
-	margin: 0px;
-	padding: 100px 0px 2px 0px;
-	line-height: 1.3em;
-	font-size: 12px;
-}
-
-#left, #right {
-	width: 0px;
-	height: 0px;
-  display: none;
-	visibility:hidden;
-}
-
-#bodyColumn {
-	margin-right: 1.5em;
-	margin-left: 0px; /*was: 197*/
-}
-
-
-table.bodyTable td {
-	vertical-align: text-top;
-}
-
-table.bodyTable th {
-	vertical-align: text-top;
-	text-align:center;
-}
-
-
+
+body {
+	margin: 0px;
+	padding: 100px 0px 2px 0px;
+	line-height: 1.3em;
+	font-size: 12px;
+}
+
+#left, #right {
+	width: 0px;
+	height: 0px;
+  display: none;
+	visibility:hidden;
+}
+
+#bodyColumn {
+	margin-right: 1.5em;
+	margin-left: 0px; /*was: 197*/
+}
+
+
+table.bodyTable td {
+	vertical-align: text-top;
+}
+
+table.bodyTable th {
+	vertical-align: text-top;
+	text-align:center;
+}
+
+
diff --git a/cal10n-site/src/site/pages/css/common.css b/cal10n-site/src/site/pages/css/common.css
index 65eec8a..555d543 100644
--- a/cal10n-site/src/site/pages/css/common.css
+++ b/cal10n-site/src/site/pages/css/common.css
@@ -1,250 +1,250 @@
-html { 
-/*  padding:0px;
-  margin:0px; */
-}
-
-
-a { 
- color: #0000CC;
- background-color:transparent;
- text-decoration: none; 
-}
-
-#content a:hover {
- text-decoration: underline;
-}
-
-div.source {
- margin-top: 1em;
-}
-
-.source, .command, .console { 
-  border-top: 1px solid #DDDDDD;
-  border-bottom: 1px solid #DDDDDD;
-  background:#eee;
-  font-family: Courier, "MS Courier New", Prestige, monospace;
-  padding-left: 1ex;
-  white-space: pre;
-}
-
-.source {
-  padding-bottom: 0.5ex;
-  padding-top: 0.5ex;
-}
-
-.command {
-  padding-bottom: 0ex;
-  padding-top: 0ex;
-}
-
-.console {
-}
-
-pre { 
- padding: 0px;
- margin: 0px; 
- background-color:transparent;
- font-family: Courier, Monaco, Monospace;
-}
-
-.alignright {
- margin-top: 0; 
- text-align: right;
- font-size: 10px;
-}
-
-
-h1, h2, h3, h4 {
-  color: #333;
-  padding-top: 0ex; 
-  background-color: transparent;
-}
-
-h2 {
-  font-weight: 900;
-  font-size: x-large;
-}
-
-h3 {
-  font-weight: normal;
-  font-size: large;
-}
-
-h4 {
-  font-weight: bold;
-  font-size: medium;
-}
-
-table.footer {
-  width: 100%;
-}
-
-.footer {
-  color: #564b47;
-  background-color: #fff;
-  padding:0px;
-  border-top:  1px solid #CCCCCC;
-  margin-top: 3ex;
-	font-size: smaller;
-}
-
-
-p.menu {
- padding-top: 0px;
- padding-bottom: 0px; 
- margin-top: 0px;
- margin-bottom: 0px;
-}
-
-.small { 
-	font-size: smaller;
-}
-
-.strong { 
-  /*font-size: 13px;*/
-  font-weight: bold;
-}
-
-/* ========== body table ============ */
-table.bodyTable {
-	padding: 0px;
-	margin-left: -2px;
-	margin-right: -2px;
-}
-
-table.bodyTable th {
-	color: white;
-	background-color: #bbb;
-	font-weight: bold;
-}
-
-
-table.bodyTable td {
-  padding-left: 0.5ex;
-  padding-bottom: 0.5ex;
-}
-
-
-/* apply to tr elements of tables which are both bodytable and dark */
-table[class="bodyTable dark"] tr {
-	background-color: #ddd;
-}
-
-/* apply to tr elements of tables which are both bodytable and dark */
-table[class="bodyTable properties"] tr {
-	vertical-align: top;
-}
-
-table.bodyTable tr.a {
-	background-color: #ddd;
-}
-
-table.bodyTable tr.b {
-	background-color: #eee;
-}
-
-table.bodyTable tr.alt {
-	background-color: #eee;
-}
-
-/* EOF =============== bodyTable =============== */
-
-.author {
-	text-align: left;
-	font-weight: bold;
-}
-
-.definition {
-	padding-left: 5px;
-	padding-right: 5px;
-	margin: 5px 50px 5px 50px;
-	text-align: justify;
-	background-color: #E6E64C;
-}
-
-.deftitle {
-	font-weight: bold;
-}
-
-
-.big {
-  font-size: 130%;
-}
-
-
-.green {
-	color: green;
-}
-
-.white_bg {
-	background-color: #FFFFFF;
-}
-
-.lgray_bg {
-	background-color: #EEE;
-}
-
-
-.blue {
-	color: blue;	
-}
-
-.red {
-	color: red;
-}
-
-.redBold {
-	color: red;
-	font-weight: bold;	
-}
-
-.greenBold {
-	color: green;	
-  font-weight: bold;	
-}
-
-code {
-	font-family: Courier, monospace;
-}
-
-.variable {
-	font-family: Courier, monospace;
-  font-style:italic;  
-}
-
-
-
-.attr {
-	font-family: Courier, monospace;
-  font-style:italic; 
-}
-
-.option {
-  border: 1px solid black;
-  font-family: Arial, sans-serif;	
-}
-
-.highlight {
-  width: 300px;
-  float: right;	
-  display: inline;
-  font-weight: bolder;
-  border:1px solid #000;
-  background:#FFCC99;	
-  padding-top: 0px;
-  padding-left: 1ex;
-  padding-right: 1ex;
-  margin-left: 3em;
-  margin-right: 3em;
-}
-
-.quote {
-   text-align: right;
-  padding-left: 12em;
-}
-
-/* --------- numbering --------- */
-.autoEx:before {
-  counter-increment: example;  /* Add 1 to example */
-  content: counter(example)
+html { 
+/*  padding:0px;
+  margin:0px; */
+}
+
+
+a { 
+ color: #0000CC;
+ background-color:transparent;
+ text-decoration: none; 
+}
+
+#content a:hover {
+ text-decoration: underline;
+}
+
+div.source {
+ margin-top: 1em;
+}
+
+.source, .command, .console { 
+  border-top: 1px solid #DDDDDD;
+  border-bottom: 1px solid #DDDDDD;
+  background:#eee;
+  font-family: Courier, "MS Courier New", Prestige, monospace;
+  padding-left: 1ex;
+  white-space: pre;
+}
+
+.source {
+  padding-bottom: 0.5ex;
+  padding-top: 0.5ex;
+}
+
+.command {
+  padding-bottom: 0ex;
+  padding-top: 0ex;
+}
+
+.console {
+}
+
+pre { 
+ padding: 0px;
+ margin: 0px; 
+ background-color:transparent;
+ font-family: Courier, Monaco, Monospace;
+}
+
+.alignright {
+ margin-top: 0; 
+ text-align: right;
+ font-size: 10px;
+}
+
+
+h1, h2, h3, h4 {
+  color: #333;
+  padding-top: 0ex; 
+  background-color: transparent;
+}
+
+h2 {
+  font-weight: 900;
+  font-size: x-large;
+}
+
+h3 {
+  font-weight: normal;
+  font-size: large;
+}
+
+h4 {
+  font-weight: bold;
+  font-size: medium;
+}
+
+table.footer {
+  width: 100%;
+}
+
+.footer {
+  color: #564b47;
+  background-color: #fff;
+  padding:0px;
+  border-top:  1px solid #CCCCCC;
+  margin-top: 3ex;
+	font-size: smaller;
+}
+
+
+p.menu {
+ padding-top: 0px;
+ padding-bottom: 0px; 
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+
+.small { 
+	font-size: smaller;
+}
+
+.strong { 
+  /*font-size: 13px;*/
+  font-weight: bold;
+}
+
+/* ========== body table ============ */
+table.bodyTable {
+	padding: 0px;
+	margin-left: -2px;
+	margin-right: -2px;
+}
+
+table.bodyTable th {
+	color: white;
+	background-color: #bbb;
+	font-weight: bold;
+}
+
+
+table.bodyTable td {
+  padding-left: 0.5ex;
+  padding-bottom: 0.5ex;
+}
+
+
+/* apply to tr elements of tables which are both bodytable and dark */
+table[class="bodyTable dark"] tr {
+	background-color: #ddd;
+}
+
+/* apply to tr elements of tables which are both bodytable and dark */
+table[class="bodyTable properties"] tr {
+	vertical-align: top;
+}
+
+table.bodyTable tr.a {
+	background-color: #ddd;
+}
+
+table.bodyTable tr.b {
+	background-color: #eee;
+}
+
+table.bodyTable tr.alt {
+	background-color: #eee;
+}
+
+/* EOF =============== bodyTable =============== */
+
+.author {
+	text-align: left;
+	font-weight: bold;
+}
+
+.definition {
+	padding-left: 5px;
+	padding-right: 5px;
+	margin: 5px 50px 5px 50px;
+	text-align: justify;
+	background-color: #E6E64C;
+}
+
+.deftitle {
+	font-weight: bold;
+}
+
+
+.big {
+  font-size: 130%;
+}
+
+
+.green {
+	color: green;
+}
+
+.white_bg {
+	background-color: #FFFFFF;
+}
+
+.lgray_bg {
+	background-color: #EEE;
+}
+
+
+.blue {
+	color: blue;	
+}
+
+.red {
+	color: red;
+}
+
+.redBold {
+	color: red;
+	font-weight: bold;	
+}
+
+.greenBold {
+	color: green;	
+  font-weight: bold;	
+}
+
+code {
+	font-family: Courier, monospace;
+}
+
+.variable {
+	font-family: Courier, monospace;
+  font-style:italic;  
+}
+
+
+
+.attr {
+	font-family: Courier, monospace;
+  font-style:italic; 
+}
+
+.option {
+  border: 1px solid black;
+  font-family: Arial, sans-serif;	
+}
+
+.highlight {
+  width: 300px;
+  float: right;	
+  display: inline;
+  font-weight: bolder;
+  border:1px solid #000;
+  background:#FFCC99;	
+  padding-top: 0px;
+  padding-left: 1ex;
+  padding-right: 1ex;
+  margin-left: 3em;
+  margin-right: 3em;
+}
+
+.quote {
+   text-align: right;
+  padding-left: 12em;
+}
+
+/* --------- numbering --------- */
+.autoEx:before {
+  counter-increment: example;  /* Add 1 to example */
+  content: counter(example)
 }
\ No newline at end of file
diff --git a/cal10n-site/src/site/pages/css/prettify.css b/cal10n-site/src/site/pages/css/prettify.css
index 35cad27..65cfc41 100644
--- a/cal10n-site/src/site/pages/css/prettify.css
+++ b/cal10n-site/src/site/pages/css/prettify.css
@@ -1,28 +1,28 @@
-.str{color:#080}
-.kwd{color:#008}
-.com{color:#800}
-.typ{color:#606}
-.lit{color:#066}
-.pun{color:#660}
-.pln{color:#000}
-.tag{color:#008}
-.atn{color:#606}
-.atv{color:#080}
-.dec{color:#606}
-
-pre.prettyprint{
-  padding:2px;
-}
- at media print{.str{color:#060}
-
-.kwd{
-  color:#006;font-weight:bold}
-  .com{color:#600;font-style:italic
-}
-.typ{color:#404;font-weight:bold}
-.lit{color:#044}
-.pun{color:#440}
-.pln{color:#000}
-.tag{color:#006;font-weight:bold}
-.atn{color:#404}
+.str{color:#080}
+.kwd{color:#008}
+.com{color:#800}
+.typ{color:#606}
+.lit{color:#066}
+.pun{color:#660}
+.pln{color:#000}
+.tag{color:#008}
+.atn{color:#606}
+.atv{color:#080}
+.dec{color:#606}
+
+pre.prettyprint{
+  padding:2px;
+}
+ at media print{.str{color:#060}
+
+.kwd{
+  color:#006;font-weight:bold}
+  .com{color:#600;font-style:italic
+}
+.typ{color:#404;font-weight:bold}
+.lit{color:#044}
+.pun{color:#440}
+.pln{color:#000}
+.tag{color:#006;font-weight:bold}
+.atn{color:#404}
 .atv{color:#060}}
\ No newline at end of file
diff --git a/cal10n-site/src/site/pages/css/screen.css b/cal10n-site/src/site/pages/css/screen.css
index 4a45adf..74203c3 100644
--- a/cal10n-site/src/site/pages/css/screen.css
+++ b/cal10n-site/src/site/pages/css/screen.css
@@ -1,114 +1,114 @@
-html { 
-/*  padding:0px;
-  margin:0px; */
-}
-
-body {
-  background-color: #fff;
-  font-family: Verdana, Arial, SunSans-Regular, Sans-Serif;
-  color: #000;  
-  padding: 0px;
-  margin: 0px;
-  counter-reset: example;  /* Create an example counter scope */
-}
-
-.footer {
-  text-align: right;
-  color: #564b47;
-  background-color: #fff;
-  padding:0px;
-  border-top:  1px solid #CCCCCC;
-  margin-top: 3ex;
-	font-size: smaller;
-}
-
-
-p.menu {
- padding-top: 0px;
- padding-bottom: 0px; 
- margin-top: 0px;
- margin-bottom: 0px;
-}
-
-
-#left {
-  position: absolute;
-  left: 0px;
-  width: 15em; 
-  margin: 4px 0px 0px 4px; 
-  padding: 0px;
-  font-size: 80%;
-  background-color: #ffffff;
-}
-
-.menuGroup {
-  border: 1px solid #cccccc;
-  background-color: #ffffff;
-  color: #564b47;
-  border: 1px solid #cccccc;
-}
-
-.menuGroup a {
-  display: block; 
-  width: 95.5%; 
-  margin: 0px; 
-  padding: 2px; 
-  border: solid 1px #FFFFFF; 
-  color: #0066cc; 
-  text-decoration: none;
-}
-
-.menuGroup a:hover {
-  border: solid 1px #FFFFFF; 
-  background-color: #3333CC; 
-  color: #ffffff;
-}
-
-.pub {
-  text-align: center;
-}
-
-p.menu_header {
-  margin: 0px; 
-  padding: 2px;
-  font-weight: normal; 
-  background-color: #ffd0a0; 
-  border-top: solid 1px #CCCCCC;
-  border-bottom: solid 1px #CCCCCC;
-}
-
-
-#right {
-  position: absolute;
-  right: 0px;        
-  width: 12em;
-  color: #564b47;
-  margin: 4px 4px 0px 0px; 
-  padding: 0px;
-  background-color: #ffffff;    
-  border: 1px solid #cccccc;
-  font-size: 80%;
-}
-
-
-#headerLine {
-  background-color:#FFD0A0;
-  border:1px solid #CCCCCC;
-  font-size:small;
-  margin: 0px 4px;
-  padding: 3px 6px;
-}
-
-#content {
-  min-width:50em;
-  margin: 0px 15em 0px 15em;
-  padding: 0px;
-  background-color: #ffffff;  
-}
-
-#content img {
-	border:none;
-	margin-left: auto;
-	margin-right: auto;
-	display: block;
-}
+html { 
+/*  padding:0px;
+  margin:0px; */
+}
+
+body {
+  background-color: #fff;
+  font-family: Verdana, Arial, SunSans-Regular, Sans-Serif;
+  color: #000;  
+  padding: 0px;
+  margin: 0px;
+  counter-reset: example;  /* Create an example counter scope */
+}
+
+.footer {
+  text-align: right;
+  color: #564b47;
+  background-color: #fff;
+  padding:0px;
+  border-top:  1px solid #CCCCCC;
+  margin-top: 3ex;
+	font-size: smaller;
+}
+
+
+p.menu {
+ padding-top: 0px;
+ padding-bottom: 0px; 
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+
+
+#left {
+  position: absolute;
+  left: 0px;
+  width: 15em; 
+  margin: 4px 0px 0px 4px; 
+  padding: 0px;
+  font-size: 80%;
+  background-color: #ffffff;
+}
+
+.menuGroup {
+  border: 1px solid #cccccc;
+  background-color: #ffffff;
+  color: #564b47;
+  border: 1px solid #cccccc;
+}
+
+.menuGroup a {
+  display: block; 
+  width: 95.5%; 
+  margin: 0px; 
+  padding: 2px; 
+  border: solid 1px #FFFFFF; 
+  color: #0066cc; 
+  text-decoration: none;
+}
+
+.menuGroup a:hover {
+  border: solid 1px #FFFFFF; 
+  background-color: #3333CC; 
+  color: #ffffff;
+}
+
+.pub {
+  text-align: center;
+}
+
+p.menu_header {
+  margin: 0px; 
+  padding: 2px;
+  font-weight: normal; 
+  background-color: #ffd0a0; 
+  border-top: solid 1px #CCCCCC;
+  border-bottom: solid 1px #CCCCCC;
+}
+
+
+#right {
+  position: absolute;
+  right: 0px;        
+  width: 12em;
+  color: #564b47;
+  margin: 4px 4px 0px 0px; 
+  padding: 0px;
+  background-color: #ffffff;    
+  border: 1px solid #cccccc;
+  font-size: 80%;
+}
+
+
+#headerLine {
+  background-color:#FFD0A0;
+  border:1px solid #CCCCCC;
+  font-size:small;
+  margin: 0px 4px;
+  padding: 3px 6px;
+}
+
+#content {
+  min-width:50em;
+  margin: 0px 15em 0px 15em;
+  padding: 0px;
+  background-color: #ffffff;  
+}
+
+#content img {
+	border:none;
+	margin-left: auto;
+	margin-right: auto;
+	display: block;
+}
diff --git a/cal10n-site/src/site/pages/documentation.html b/cal10n-site/src/site/pages/documentation.html
index 0d6dde7..31027bc 100644
--- a/cal10n-site/src/site/pages/documentation.html
+++ b/cal10n-site/src/site/pages/documentation.html
@@ -1,54 +1,54 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Documentation</title>
-    <link rel="stylesheet" type="text/css" href="css/common.css" />
-    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-  </head>
-  <body>
-	<script type="text/javascript">prefix='';</script>
-
-  <script src="templates/header.js" type="text/javascript"></script>
-  <div id="left">
-    <noscript>Please turn on Javascript to view this menu</noscript>
-    <script src="templates/left.js" type="text/javascript"></script>
-  </div>
-  
-  <div id="content">
-  
-    <h2>CAL10N documentation</h2>
-
-		<p>Below is a list of logback-related documentaiton currently
-		available.</p>
-
-		<ul>     
-      <li><a href="manual.html"><b>The CAL10N manual</b></a></li>
-      <li><a href="codes.html">Error codes and their meanings</a></li>
-    </ul>
-		
-		<p>Source code related documentation:</p>
-		
-		<ul>
-			<li>
-				<a href="apidocs/index.html"><b>Javadoc</b></a>
-			</li>
-			<li>
-				<a href="xref/index.html">Source code</a>
-			</li>
-			<li>
-				<a href="xref-test/index.html">Test classes source code</a>
-			</li>
-		</ul>
-		
-    
-	
-  
-
-    <script src="templates/footer.js" type="text/javascript"></script>
-</div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>Documentation</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+  </head>
+  <body>
+	<script type="text/javascript">prefix='';</script>
+
+  <script src="templates/header.js" type="text/javascript"></script>
+  <div id="left">
+    <noscript>Please turn on Javascript to view this menu</noscript>
+    <script src="templates/left.js" type="text/javascript"></script>
+  </div>
+  
+  <div id="content">
+  
+    <h2>CAL10N documentation</h2>
+
+		<p>Below is a list of logback-related documentaiton currently
+		available.</p>
+
+		<ul>     
+      <li><a href="manual.html"><b>The CAL10N manual</b></a></li>
+      <li><a href="codes.html">Error codes and their meanings</a></li>
+    </ul>
+		
+		<p>Source code related documentation:</p>
+		
+		<ul>
+			<li>
+				<a href="apidocs/index.html"><b>Javadoc</b></a>
+			</li>
+			<li>
+				<a href="xref/index.html">Source code</a>
+			</li>
+			<li>
+				<a href="xref-test/index.html">Test classes source code</a>
+			</li>
+		</ul>
+		
+    
+	
+  
+
+    <script src="templates/footer.js" type="text/javascript"></script>
+</div>
+</body>
+</html>
diff --git a/cal10n-site/src/site/pages/download.html b/cal10n-site/src/site/pages/download.html
index 66197b8..3c06d25 100644
--- a/cal10n-site/src/site/pages/download.html
+++ b/cal10n-site/src/site/pages/download.html
@@ -1,64 +1,64 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Download</title>
-    <link rel="stylesheet" type="text/css" href="css/common.css" />
-    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-  </head>
-  <body>
-	<script type="text/javascript">prefix='';</script>
-
-    <script src="templates/header.js" type="text/javascript"></script>
-    <div id="left">
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="templates/left.js" type="text/javascript"></script>
-    </div>
-    <div id="content">
-	
-    <h2>Download links</h2>
-
-
-		<p>CAL10N modules are available as downloads including full source
-		code, class files and documentation.
-		</p>
-
-		<ul>
-      <li><a
-             href="dist/cal10n-${pom.version}.zip">cal10n-${pom.version}.zip</a></li>
-      <li><a href="dist/cal10n-${project.version}.tar.gz">cal10n-${pom.version}.tar.gz</a></li>
-		</ul>
-		
-		
-    <p>If you wish to download an older version of cal10n, please
-    refer to the <a href="http://cal10n.qos.ch/dist/">distributions
-    directory</a>.</p>
-
-    
-	
-    <hr/>
-
-    <h2>Third-party tools</h2>
-
-    <dl>
-      <dt>
-        None
-      </dt>
-
-      <dd>
-        <p>None for the moment.</p>
-      </dd>
-      
-    </dl>
-
-
-    
-
-  <script src="templates/footer.js" type="text/javascript"></script>
-</div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>Download</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+  </head>
+  <body>
+	<script type="text/javascript">prefix='';</script>
+
+    <script src="templates/header.js" type="text/javascript"></script>
+    <div id="left">
+      <noscript>Please turn on Javascript to view this menu</noscript>
+      <script src="templates/left.js" type="text/javascript"></script>
+    </div>
+    <div id="content">
+	
+    <h2>Download links</h2>
+
+
+		<p>CAL10N modules are available as downloads including full source
+		code, class files and documentation.
+		</p>
+
+		<ul>
+      <li><a
+             href="dist/cal10n-${pom.version}.zip">cal10n-${pom.version}.zip</a></li>
+      <li><a href="dist/cal10n-${project.version}.tar.gz">cal10n-${pom.version}.tar.gz</a></li>
+		</ul>
+		
+		
+    <p>If you wish to download an older version of cal10n, please
+    refer to the <a href="http://cal10n.qos.ch/dist/">distributions
+    directory</a>.</p>
+
+    
+	
+    <hr/>
+
+    <h2>Third-party tools</h2>
+
+    <dl>
+      <dt>
+        None
+      </dt>
+
+      <dd>
+        <p>None for the moment.</p>
+      </dd>
+      
+    </dl>
+
+
+    
+
+  <script src="templates/footer.js" type="text/javascript"></script>
+</div>
+</body>
+</html>
  
\ No newline at end of file
diff --git a/cal10n-site/src/site/pages/index.html b/cal10n-site/src/site/pages/index.html
index fadc31d..3c7e7b0 100644
--- a/cal10n-site/src/site/pages/index.html
+++ b/cal10n-site/src/site/pages/index.html
@@ -1,65 +1,65 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>CAL10N Home</title>
-    <link rel="stylesheet" type="text/css" href="css/common.css" />
-    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-
-  </head>
-  <body>
-    <script type="text/javascript">prefix='';</script>
-    <script src="templates/header.js" type="text/javascript"></script>
-    <div id="left">
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="templates/left.js" type="text/javascript"></script>
-    </div>
-
-    <div id="content">
-  
-
-   <h1>Compiler Assisted Localization (CAL10N)</h1>
-
-   <p>Compiler Assisted Localization, abbreviated as CAL10N
-   (pronounced as "calion") is a java library for writing localized
-   (internationalized) messages.
-   </p>
-   
-   <h3>Features</h3>
-
-   <ul>
-     <li>
-       <p>java compiler verifies message keys used in source code</p>
-     </li>
-     
-     <li>
-       <p>tooling to detect errors in message keys</p>
-     </li>
-
-     <li><em>native2ascii</em> tool made superfluous, as you can
-     directly encode bundles in the most convenient charset, per
-     locale.</li>
-
-     <li>
-       <p>good performance (300 nanoseconds per key look-up)</p>
-     </li>
- 
-     <li>
-       <p>automatic reloading of resource bundles upon change</p>
-     </li>
-
-   </ul>
-
-   <p>The three-page <a href="manual.html">user manual</a> goes into
-   the details, wherein supposedly the devil  resides.
-   </p>
-
-
-
-  <script src="templates/footer.js" type="text/javascript"></script>
-</div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>CAL10N Home</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+
+  </head>
+  <body>
+    <script type="text/javascript">prefix='';</script>
+    <script src="templates/header.js" type="text/javascript"></script>
+    <div id="left">
+      <noscript>Please turn on Javascript to view this menu</noscript>
+      <script src="templates/left.js" type="text/javascript"></script>
+    </div>
+
+    <div id="content">
+  
+
+   <h1>Compiler Assisted Localization (CAL10N)</h1>
+
+   <p>Compiler Assisted Localization, abbreviated as CAL10N
+   (pronounced as "calion") is a java library for writing localized
+   (internationalized) messages.
+   </p>
+   
+   <h3>Features</h3>
+
+   <ul>
+     <li>
+       <p>java compiler verifies message keys used in source code</p>
+     </li>
+     
+     <li>
+       <p>tooling to detect errors in message keys</p>
+     </li>
+
+     <li><em>native2ascii</em> tool made superfluous, as you can
+     directly encode bundles in the most convenient charset, per
+     locale.</li>
+
+     <li>
+       <p>good performance (300 nanoseconds per key look-up)</p>
+     </li>
+ 
+     <li>
+       <p>automatic reloading of resource bundles upon change</p>
+     </li>
+
+   </ul>
+
+   <p>The three-page <a href="manual.html">user manual</a> goes into
+   the details, wherein supposedly the devil  resides.
+   </p>
+
+
+
+  <script src="templates/footer.js" type="text/javascript"></script>
+</div>
+</body>
+</html>
diff --git a/cal10n-site/src/site/pages/license.html b/cal10n-site/src/site/pages/license.html
index 01fe451..c8bbc8a 100644
--- a/cal10n-site/src/site/pages/license.html
+++ b/cal10n-site/src/site/pages/license.html
@@ -1,70 +1,70 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>License</title>
-    <link rel="stylesheet" type="text/css" href="css/common.css" />
-    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-
-  </head>
-  <body>
-    <script type="text/javascript">prefix='';</script>
-    <script src="templates/header.js" type="text/javascript"></script>
-    <div id="left">
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="templates/left.js" type="text/javascript"></script>
-    </div>
-    <div id="content">
- 
- <h1>Licensing terms for CAL10N</h1>
-
-  <p>CAL10N software, including source code and binaries are
-  distributed under the MIT license.
-  </p>
-
-  <div class="source"> Copyright (c) 2009 QOS.ch
- All rights reserved.
-
- Permission is hereby granted, free  of charge, to any person obtaining
- a  copy  of this  software  and  associated  documentation files  (the
- "Software"), to  deal in  the Software without  restriction, including
- without limitation  the rights to  use, copy, modify,  merge, publish,
- distribute,  sublicense, and/or sell  copies of  the Software,  and to
- permit persons to whom the Software  is furnished to do so, subject to
- the following conditions:
- 
- The  above  copyright  notice  and  this permission  notice  shall  be
- included in all copies or substantial portions of the Software.
- 
- THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
- EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
- MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-  </div> 
-
-  <p>These terms are <em>identical</em> to those of the <a
-  href="http://en.wikipedia.org/wiki/MIT_License">MIT License</a>,
-  also called the X License or the X11 License, which is a simple,
-  permissive non-copyleft free software license. It is deemed
-  compatible with virtually all types of licenses, commercial or
-  otherwise. In particular, the Free Software Foundation has declared
-  it compatible with <a
-  href="http://www.fsf.org/licensing/licenses/license-list.html#GPLCompatibleLicenses">
-  GNU GPL</a>. It is also known to be approved by the Apache Software
-  Foundation as compatible with <a
-  href="http://www.apache.org/licenses/">Apache Software License</a>.
-  </p>
-
-
-  <script src="templates/footer.js" type="text/javascript"></script>
-
-
-</div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>License</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+
+  </head>
+  <body>
+    <script type="text/javascript">prefix='';</script>
+    <script src="templates/header.js" type="text/javascript"></script>
+    <div id="left">
+      <noscript>Please turn on Javascript to view this menu</noscript>
+      <script src="templates/left.js" type="text/javascript"></script>
+    </div>
+    <div id="content">
+ 
+ <h1>Licensing terms for CAL10N</h1>
+
+  <p>CAL10N software, including source code and binaries are
+  distributed under the MIT license.
+  </p>
+
+  <div class="source"> Copyright (c) 2009 QOS.ch
+ All rights reserved.
+
+ Permission is hereby granted, free  of charge, to any person obtaining
+ a  copy  of this  software  and  associated  documentation files  (the
+ "Software"), to  deal in  the Software without  restriction, including
+ without limitation  the rights to  use, copy, modify,  merge, publish,
+ distribute,  sublicense, and/or sell  copies of  the Software,  and to
+ permit persons to whom the Software  is furnished to do so, subject to
+ the following conditions:
+ 
+ The  above  copyright  notice  and  this permission  notice  shall  be
+ included in all copies or substantial portions of the Software.
+ 
+ THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+ EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+ MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+  </div> 
+
+  <p>These terms are <em>identical</em> to those of the <a
+  href="http://en.wikipedia.org/wiki/MIT_License">MIT License</a>,
+  also called the X License or the X11 License, which is a simple,
+  permissive non-copyleft free software license. It is deemed
+  compatible with virtually all types of licenses, commercial or
+  otherwise. In particular, the Free Software Foundation has declared
+  it compatible with <a
+  href="http://www.fsf.org/licensing/licenses/license-list.html#GPLCompatibleLicenses">
+  GNU GPL</a>. It is also known to be approved by the Apache Software
+  Foundation as compatible with <a
+  href="http://www.apache.org/licenses/">Apache Software License</a>.
+  </p>
+
+
+  <script src="templates/footer.js" type="text/javascript"></script>
+
+
+</div>
+</body>
+</html>
diff --git a/cal10n-site/src/site/pages/mailinglist.html b/cal10n-site/src/site/pages/mailinglist.html
index 4d098be..836e7cb 100644
--- a/cal10n-site/src/site/pages/mailinglist.html
+++ b/cal10n-site/src/site/pages/mailinglist.html
@@ -1,176 +1,176 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Mailing lists</title>
-    
-    <link rel="stylesheet" type="text/css" href="css/common.css" />
-    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-  </head>
-  <body>
-    <script  type="text/javascript">prefix='';</script>
-
-    <script src="templates/header.js"  type="text/javascript"></script>
-    <div id="left">
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="templates/left.js"  type="text/javascript"></script>
-    </div>
-    <div id="content">
-	
-    <h2>Project Mailing Lists</h2>
-
-		<p>A mailing list is an electronic discussion forum that anyone
-		can subscribe to. When someone sends an email message to the
-		mailing list, a copy of that message is broadcast to everyone who
-		is subscribed to that mailing list. Mailing lists provide a simple
-		and effective communication mechanism. With potentially thousands
-		of subscribers, there is a common set of etiquette guidelines that
-		you should observe. Please keep on reading.
-		</p>
-
-    <h3>Respect the mailing list type</h3>
-		
-    <p>The "User" lists where you can send questions and comments
-    about configuration, setup, usage and other "user" types of
-    questions. The "Developer" lists where you can send questions and
-    comments about the actual software source code and other issues
-    related to development.
-		</p>
-
-    <p>Some questions are appropriate for posting on both the "user"
-    and the "developer" lists. In this case, pick one and only one. Do
-    not cross post.
-		</p>
-
-    <p>Please do your best to ensure that you are not sending HTML or
-    "Stylelized" email to the list. If you are using Outlook or
-    Outlook Express or Eudora, chances are that you are sending HTML
-    email by default. There is usually a setting that will allow you
-    to send "Plain Text" email.
-		</p>
-
-
-		<table class="bodyTable">
-			<tr class="a">
-				<th>Name</th>
-				<th>Volume</th>
-				<th>Subscribe</th>
-				<th>Unsubscribe</th>
-				<th>Archives</th>
-			</tr>
-			<tr class="b">
-				<td>QOS.ch announce List</td>
-				<td>Low</td>
-				<td>
-					<a
-						href="http://qos.ch/mailman/listinfo/announce">
-						Subscribe
-					</a>
-				</td>
-				<td>
-					<a
-						href="http://qos.ch/mailman/options/announce">
-						Unsubscribe
-					</a>
-				</td>
-				<td>
-					<a
-						href="http://www.qos.ch/pipermail/announce/">
-						pipermail
-					</a> 
-<!--|
-					<a
-						href="http://marc.theaimsgroup.com/?l=cal10n-announce">
-						MARC
-					</a> |
-					<a
-						href="http://www.nabble.com/Cal10n-Announce-f16251.html">
-						Nabble
-					</a>
--->
-				</td>
-			</tr>
-			<tr class="a">
-				<td>Cal10n User List</td>
-				<td>Medium</td>
-				<td>
-					<a
-						href="http://qos.ch/mailman/listinfo/cal10n-user">
-						Subscribe
-					</a>
-				</td>
-				<td>
-					<a
-						href="http://qos.ch/mailman/options/cal10n-user">
-						Unsubscribe
-					</a> 
-				</td>
-				<td>
-					<a
-						href="http://www.qos.ch/pipermail/cal10n-user/">
-						pipermail
-					</a>
-<!-- |
-					<a
-						href="http://marc.theaimsgroup.com/?l=cal10n-user">
-						MARC
-					</a> |
-
-					<a
-						href="http://www.nabble.com/Cal10n-User-f16252.html">
-						Nabble
-					</a>
--->
-				</td>
-			</tr>
-			<tr class="b">
-				<td>Cal10n Dev List</td>
-				<td>Medium</td>
-				<td>
-					<a
-						href="http://qos.ch/mailman/listinfo/cal10n-dev">
-						Subscribe
-					</a>
-				</td>
-				<td>
-					<a
-						href="http://qos.ch/mailman/options/cal10n-dev">
-						Unsubscribe
-					</a> 
-				</td>
-				<td>
-					<a
-						href="http://www.qos.ch/pipermail/cal10n-dev/">
-						pipermail
-					</a>
-<!-- |
-					<a
-						href="http://marc.theaimsgroup.com/?l=cal10n-dev">
-						MARC
-					</a> |
-					<a
-						href="http://www.nabble.com/Cal10n-Dev-f16253.html">
-						Nabble
-					</a>
--->
-				</td>
-			</tr>
-		</table>
-
-
-   <p>&nbsp;</p>
-
-   <h2>On IRC</h2>
-
-   <p>We can also be reached by IRC at <span
-      class="big"><code>irc.freenode.net#qos.ch</code></span>. </p>
-   
-   <p>&nbsp;</p>
-	
-  <script src="templates/footer.js" type="text/javascript"></script>
-</div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>Mailing lists</title>
+    
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+  </head>
+  <body>
+    <script  type="text/javascript">prefix='';</script>
+
+    <script src="templates/header.js"  type="text/javascript"></script>
+    <div id="left">
+      <noscript>Please turn on Javascript to view this menu</noscript>
+      <script src="templates/left.js"  type="text/javascript"></script>
+    </div>
+    <div id="content">
+	
+    <h2>Project Mailing Lists</h2>
+
+		<p>A mailing list is an electronic discussion forum that anyone
+		can subscribe to. When someone sends an email message to the
+		mailing list, a copy of that message is broadcast to everyone who
+		is subscribed to that mailing list. Mailing lists provide a simple
+		and effective communication mechanism. With potentially thousands
+		of subscribers, there is a common set of etiquette guidelines that
+		you should observe. Please keep on reading.
+		</p>
+
+    <h3>Respect the mailing list type</h3>
+		
+    <p>The "User" lists where you can send questions and comments
+    about configuration, setup, usage and other "user" types of
+    questions. The "Developer" lists where you can send questions and
+    comments about the actual software source code and other issues
+    related to development.
+		</p>
+
+    <p>Some questions are appropriate for posting on both the "user"
+    and the "developer" lists. In this case, pick one and only one. Do
+    not cross post.
+		</p>
+
+    <p>Please do your best to ensure that you are not sending HTML or
+    "Stylelized" email to the list. If you are using Outlook or
+    Outlook Express or Eudora, chances are that you are sending HTML
+    email by default. There is usually a setting that will allow you
+    to send "Plain Text" email.
+		</p>
+
+
+		<table class="bodyTable">
+			<tr class="a">
+				<th>Name</th>
+				<th>Volume</th>
+				<th>Subscribe</th>
+				<th>Unsubscribe</th>
+				<th>Archives</th>
+			</tr>
+			<tr class="b">
+				<td>QOS.ch announce List</td>
+				<td>Low</td>
+				<td>
+					<a
+						href="http://qos.ch/mailman/listinfo/announce">
+						Subscribe
+					</a>
+				</td>
+				<td>
+					<a
+						href="http://qos.ch/mailman/options/announce">
+						Unsubscribe
+					</a>
+				</td>
+				<td>
+					<a
+						href="http://www.qos.ch/pipermail/announce/">
+						pipermail
+					</a> 
+<!--|
+					<a
+						href="http://marc.theaimsgroup.com/?l=cal10n-announce">
+						MARC
+					</a> |
+					<a
+						href="http://www.nabble.com/Cal10n-Announce-f16251.html">
+						Nabble
+					</a>
+-->
+				</td>
+			</tr>
+			<tr class="a">
+				<td>Cal10n User List</td>
+				<td>Medium</td>
+				<td>
+					<a
+						href="http://qos.ch/mailman/listinfo/cal10n-user">
+						Subscribe
+					</a>
+				</td>
+				<td>
+					<a
+						href="http://qos.ch/mailman/options/cal10n-user">
+						Unsubscribe
+					</a> 
+				</td>
+				<td>
+					<a
+						href="http://www.qos.ch/pipermail/cal10n-user/">
+						pipermail
+					</a>
+<!-- |
+					<a
+						href="http://marc.theaimsgroup.com/?l=cal10n-user">
+						MARC
+					</a> |
+
+					<a
+						href="http://www.nabble.com/Cal10n-User-f16252.html">
+						Nabble
+					</a>
+-->
+				</td>
+			</tr>
+			<tr class="b">
+				<td>Cal10n Dev List</td>
+				<td>Medium</td>
+				<td>
+					<a
+						href="http://qos.ch/mailman/listinfo/cal10n-dev">
+						Subscribe
+					</a>
+				</td>
+				<td>
+					<a
+						href="http://qos.ch/mailman/options/cal10n-dev">
+						Unsubscribe
+					</a> 
+				</td>
+				<td>
+					<a
+						href="http://www.qos.ch/pipermail/cal10n-dev/">
+						pipermail
+					</a>
+<!-- |
+					<a
+						href="http://marc.theaimsgroup.com/?l=cal10n-dev">
+						MARC
+					</a> |
+					<a
+						href="http://www.nabble.com/Cal10n-Dev-f16253.html">
+						Nabble
+					</a>
+-->
+				</td>
+			</tr>
+		</table>
+
+
+   <p>&nbsp;</p>
+
+   <h2>On IRC</h2>
+
+   <p>We can also be reached by IRC at <span
+      class="big"><code>irc.freenode.net#qos.ch</code></span>. </p>
+   
+   <p>&nbsp;</p>
+	
+  <script src="templates/footer.js" type="text/javascript"></script>
+</div>
+</body>
+</html>
diff --git a/cal10n-site/src/site/pages/manual.html b/cal10n-site/src/site/pages/manual.html
index 7ddf115..16f15d1 100644
--- a/cal10n-site/src/site/pages/manual.html
+++ b/cal10n-site/src/site/pages/manual.html
@@ -1,554 +1,554 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Manual</title>
-    <link rel="stylesheet" type="text/css" href="css/common.css" />
-    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-    <link rel="stylesheet" type="text/css" href="css/prettify.css" />
-
-  </head>
-  <body onload="prettyPrint()">
-    <script type="text/javascript">prefix='';</script>
-    <script type="text/javascript" src="js/prettify.js"></script>
-    <script src="templates/header.js" type="text/javascript"></script>
-    <div id="left">
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="templates/left.js" type="text/javascript"></script>
-    </div>
-    <div id="content">
-  
-  
-      <table style="margin-left: 0em; padding-top:0ex" cellpadding="0" 
-           cellspacing="0" width="70%">
-      <tr>
-        <td>        
-          <p class="author">
-            Author: Ceki G&#252;lc&#252;
-          <br/>
-          Copyright &#169; 2009, QOS.ch</p>
-        </td>
-        <td>
-          <a rel="license"
-             href="http://creativecommons.org/licenses/by-nc-sa/2.5/">
-            <img alt="Creative Commons License"
-                 style="border-width: 0; margin-left: 1em"
-                 src="http://creativecommons.org/images/public/somerights20.png" />
-          </a>
-        </td>
-      </tr>
-      <tr>
-        <td>
-          <p>
-            This document is licensed under a
-            <a rel="license"
-               href="http://creativecommons.org/licenses/by-nc-sa/2.5/">
-              Creative Commons
-              Attribution-NonCommercial-ShareAlike 2.5
-              License
-            </a>
-          </p>
-        </td>
-        <td></td>
-			</tr>
-	 </table>
-
-   <h1>CAL10N Manual</h1>
-
-   <p>The goal of CAL10N project is to enhance the existing
-   internationalization functionality offered by the Java platform
-   with consistency and verification primitives. It is assumed that
-   you are already somewhat familiar with <a
-   href="http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/">using
-   ResourceBundles</a>.
-   </p>
-
-   <h3>Acknowledgment</h3>
-
-   <p>The original idea behind CAL10N is attributed to Takeshi Kondo. It
-   consolidated into what it is today subsequent to a <a
-   href="http://markmail.org/thread/drcabfc6z42sijdo">discussion</a>
-   involving Ralph Goers, Ceki G&uuml;lc&uuml;, Takeshi Kondo and Pete
-   Muir on the slf4j-dev mailing list.
-   </p>
-
-
-   <h2><a name="code" href="#core">Core idea</a></h2>
-
-   <p>Instead of using values of type String as the key for each
-   message, CAL10N uses <code>enums</code>.</p>
-
-   <p>For example, let us assume that you wanted to internationalize
-   color names. No one in their right minds would just want to
-   internationalize three color names but probably a much larger set
-   of items. We are using a very small set of colors just as an
-   example. In CAL10N you could start by writing an enum type, named
-   Colors. You can choose any name for the enum type. Colors is just
-   the name this particular author picked.</p>
-
-   <pre class="prettyprint source">package com.foo.somePackage;
-
-
-import ch.qos.cal10n.LocaleData;
-import ch.qos.cal10n.Locale;
-import ch.qos.cal10n.BaseName;
-
- at BaseName("colors")
- at LocaleData( { @Locale("en_UK"), @Locale("fr") })
-public enum Colors  {
-  BLUE,
-  RED,
-  YELLOW;
-}</pre>
-   
-
-  <p>Once you define a few color keys, you can create a regular
-  resource bundle named after the value of the @BaseName
-  annotation in Colors and the appropriate locale. For example, for
-  the UK locale, you would name your resource bundle as
-  <em>colors_en_UK.properties</em>. It should also be placed in the
-  appropriate folder on your class path or in the root folder of an
-  appropriate jar file.  (It is assumed that you know how to work with
-  resource bundles.) </p>
-
-  <p>Here is a sample a <em>colors_en_UK.properties</em> file:</p>
-
-  <pre class="source">
-BLUE=violets are blue
-RED=roses are red
-GREEN={0} are green  </pre>
-
-  <p>For the french locale, the resource bundle would be named
-  <em>colors_fr.properties</em>. Here are sample contents.</p>
-
-  <pre class="source">
-BLUE=les violettes sont bleues
-RED=les roses sont rouges
-GREEN=les {0} sont verts</pre>
-
-  
-  <h2><a name="retrieving" href="#retrieving">Retrieving
-  internationalized messages</a></h2>
-
-  <p>In your application, you would retrieve the localized message via
-  an <a
-  href="apidocs/ch/qos/cal10n/IMessageConveyor.html">IMessageConveyor</a>
-  instance.
-  </p>
-
-  <pre  class="prettyprint source">// obtain a message conveyor for France
-IMessageConveyor mc = new MessageConveyor(Locale.FRANCE);
-
-// use it to retrieve internationalized messages
-String red = mc.getMessage(Colors.RED);
-String blue = mc.getMessage(Colors.BLUE);  
-String green = mc.getMessage(Colors.GREEN, <b>"pommes"</b>);  // note the second argument
-</pre>
-
-  <p>CAL10N leverages the existing resource bundle infrastructure you
-  have been accustomed to, but adds compiler verification on top. The
-  default <a
-  href="apidocs/ch/qos/cal10n/IMessageConveyor.html">IMessageConveyor</a>
-  implementation, namely <a
-  href="apidocs/ch/qos/cal10n/MessageConveyor.html">MessageConveyor</a>,
-  uses the standard Java convention for parameter substitution as
-  defined by the <a
-  href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html">java.text.MessageFormat</a>
-  class.</p>
-
-  <p>An astute reader will comment that even if the messages keys are
-  now verified by the compiler, it is still possible to have
-  mismatching message keys in the resources bundles. For this reason,
-  CAL10N comes with additional tools, including <a
-  href="#verification" class="big greenBold" >support for writing Junit test cases</a> and a
-  <a href="#mavenPlugin">maven plugin</a>.
-  </p>
-
-  <h2><a name="requirements" href="#requirements">Requirements / Installation</a>
-  </h2>
-  
-  <p>CAL10N requires JDK version 1.5.</p>
-
-  <p>In order to use CAL10N in a project, all you need is to add
-  <em>cal10n-api-${project.version}.jar</em> onto your project's class
-  path.</p>
-  
-  <p>For Maven users, this is done by adding the following
-  dependency in a project's <em>pom.xml</em> file:</p>
-
-      <pre class="prettyprint source">&lt;dependency&gt;
-  &lt;groupId&gt;ch.qos.cal10n&lt;/groupId&gt;
-  &lt;artifactId&gt;cal10n-api&lt;/artifactId&gt;
-  &lt;version&gt;${project.version}&lt;/version&gt;
-&lt;/dependency&gt;</pre>
- 
- 
-
-  <h2><a name="simplifiedLookup" href="#simplifiedLookup">Simplified
-  bundle look-up procedure</a></h2>                             
-
-  <p>The <code>ResourceBundle</code> class defines a rather involved
-  <a
-  href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ResourceBundle.html#getBundle%28java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader%29">look-up
-  procedure</a> for finding resource bundles. While formally this
-  procedure is deterministic, it is too error-prone. Moreover, it
-  clashes with CAL10N's philosophy of verifiability.  We thus took the
-  bold initiative to define a simplified bundle look up procedure,
-  described below.
-  </p>
-
-  <p>Given a locale, the simplified look up procedure only takes into
-  account that locale, ignoring the default locale and the resource
-  bundle corresponding to the naked base name, i.e. the default
-  resource bundle. However, if the locale has both a language
-  <b>and</b> a country, and corresponding bundle files exist, then
-  CAL10N will take into account both bundles, establishing the same
-  parent child relationship as the JDK <code>ResourceBundle</code>
-  class.
-  </p>
-
-  <p>For example, for base name "colors" if the following bundles
-  exist on the class path:
-  </p>
-
-  <pre class="source">colors.properties
-colors_en_US.properties
-colors_en.properties
-colors_fr_FR.properties</pre>
-
-
-   <p>and the system's default locale is "fr_FR", when CAL10N is asked
-   to find resource bundles corresponding to the "en_US" locale, it
-   will ignore the <em>colors.properties</em> (~ default bundle) and
-   <em>colors_fr_FR.properties</em> (~ default locale), while
-   combining the <em>colors_en_US.properties</em> and
-   <em>colors_en.properties</em> bundles in the usual parent-child
-   relationship.
-   </p>
-
-   <p>We hope that the simplified look-up procedure, while deviating
-   from the conventions of the Java platform as defined in the
-   <code>ResourceBundle</code> class, will still cause <a
-   href="http://en.wikipedia.org/wiki/Principle_of_least_astonishment">
-   less surprise</a>.</p>
-
-
-  <h2><a name="charset" href="#charset">Pick your charset, per locale
-  (no <em>native2ascii</em>) </a></h2>
-  
-  <p>CAL10N allows you to encode the resource bundle for a given
-  locale in the charset of your choice.  The set of supported charsets
-  depends on your Java platform.  See this <a
-  href="http://www.websina.com/bugzero/kb/java-encoding-charset.html">java
-  encoding and charset list</a> for more details.
-  </p>
-
-
-  <p>Assume you have four resource bundles, for the English, French,
-  Turkish and Greek languages. You decide to encode all of them in
-  UTF-8. To tell CAL10N that UTF-8 is the default encoding for all
-  locales, one would write:</p>
-
-<pre class="prettyprint">
- at BaseName("colors")
- at LocaleData(
-  <b>defaultCharset="UTF8",</b>
-  value = { @Locale("en_UK"),
-            @Locale("fr_FR"),
-            @Locale("tr_TR"),
-            @Locale("el_GR")
-           }
-   )
-public enum Colors {
- BLUE,
- RED,
- GREEN;
-} 
-</pre>
-
-  <p>If for some reason the Turkish bundle was encoded in ISO8859_3,
-  but the others locales in UTF8, you would write:</p>
-  
-<pre class="prettyprint">
- at BaseName("colors")
- at LocaleData(
-  defaultCharset="UTF8",
-  value = { @Locale("en_UK"),
-            @Locale("fr_FR"),
-            <b>@Locale(value="tr_TR", charset="ISO8859_3"),</b>
-            @Locale("el_GR")
-           }
-   )
-public enum Colors {
- BLUE,
- RED,
- GREEN;
-} 
-</pre>
-
-  <p>The <code>defaultCharset</code> directive specified in the
-  <code>@LocaleDat</code>a annotation applies to all nested @Locale
-  annotations, unless the value is overriden by a <code>charset</code>
-  directive (as in the "tr_TR" locale in the example above).  If not
-  specified, the default value for <code>defaultCharset</code> is the
-  empty string.  In the absence of a <code>defaultCharset</code>
-  directive, the default value for the <code>charset</code> directive
-  is also the empty String.
-  </p>
-  
-  <p>If both <code>charset</code> and <code>defaultCharset</code> are
-  empty, CAL10N will use the <a
-  href="http://mindprod.com/jgloss/encoding.html">default encoding</a>
-  for your Java platform to read resource bundles.</p>
-
-
-
-
-  <h2><a name="reload" href="#reload">Automatic reloading of resource
-  bundles upon change</a></h2>
-
-  <p>When a resource bundle for a given locale is changed on the file
-  system, <code>MessageConveyor</code> will automatically reload the
-  resource bundle. It may take up to 10 minutes for the change to be
-  detected.</p>
-
-  <p>Automatic reloading applies if the resource bundle is a regular
-  file but not if nested within a jar file.
-  </p>
-
-
-  <h2><a name="deferred" href="#deferred">Deferred
-  localization</a></h2>
-
-  <p>Under certain circumstances, the appropriate locale is
-  <em>unknown</em> at the time or place where the message key and
-  message args are emitted. For example, a low level library might
-  wish to emit a localized message but it is only at the UI (user
-  interface) layer that the locale is known. As another example,
-  imagine that the host where the localized messages are presented to
-  the user is in a different locale, e.g.  Japan, than the locale of
-  the source host. e.g. US.
-  </p>
-
-  <p>The <a
-  href="xref/ch/qos/cal10n/MessageParameterObj.html">MessageParameterObj</a>
-  class is intended to support this particular use case. It allows you
-  to bundle the message key (an enum) plus any message
-  arguments. At a later time, when the locale is known, you would
-  invoke the <a
-  href="apidocs/ch/qos/cal10n/IMessageConveyor.html#getMessage(ch.qos.cal10n.MessageParameterObj)">getMessage(MessageParameterObj)</a>
-  method in <code>IMessageConveyor</code> to obtain the localized
-  message.
-  </p>
- 
-  <h2><a name="verification" href="#verification">Verification as a
-  test case</a></h2>
-
-  <p>A convenient and low hassle method for checking for mismatches
-  between a given enum type and the corresponding resource bundles is
-  through Junit test cases.</p>
-
-  <p>Here is a sample Junit test for the Colors enum discussed
-  above.</p>
-
-  <pre class="prettyprint source">
-package foo.aPackage;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.List;
-import java.util.Locale;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.verifier.Cal10nError;
-import ch.qos.cal10n.verifier.IMessageKeyVerifier;
-import ch.qos.cal10n.verifier.MessageKeyVerifier;
-
-public class MyColorVerificationTest {
-
-  @Test
-  public void en_UK() {
-    IMessageKeyVerifier mkv = new MessageKeyVerifier(Colors.class);
-    List&lt;Cal10nError> errorList = mkv.verify(Locale.UK);
-    for(Cal10nError error: errorList) {
-      System.out.println(error);
-    }
-    assertEquals(0, errorList.size());
-  }
-
-  @Test
-  public void fr() {
-    IMessageKeyVerifier mkv = new MessageKeyVerifier(Colors.class);
-    List&lt;Cal10nError> errorList = mkv.verify(Locale.FRANCE);
-    for(Cal10nError error: errorList) {
-      System.out.println(error);
-    }
-    assertEquals(0, errorList.size());
-  }
-} </pre>
-
-  <p>The above unit tests start by creating a
-  <code>MessageKeyVerifier</code> instance associated with an enum
-  type, <code>Colors</code> in this case. The test proceeds to invoke
-  the <code>verify()</code> method passing a locale as an
-  argument. The <code>verify()</code> method returns the list of
-  errors, that is the list of discrepancies between the keys listed
-  in the enum type and the corresponding resource bundle. An empty
-  list will be returned if there are no errors.
-  </p>
-
-  <p>The unit test verifies that no errors have occurred by asserting
-  that the size of the error list is zero.</p>
-
-  <p>Suppose the key "BLUE" was misspelled as "BLEU" in the
-  <em>colors_fr.properties</em> resource bundle. The unit test would
-  print the following list of errors and throw an
-  <code>AssertionError</code>.
-
-  </p>
-  <pre class="source">Key [BLUE] present in enum type [ch.qos.cal10n.sample.Colors] but absent in resource bundle \
-   named [colors] for locale [fr_FR]
-Key [BLEU] present in resource bundle named [colors] for locale [fr_FR] but absent \ 
-   in enum type [ch.qos.cal10n.sample.Colors]</pre>
-
-  <h3><a name="singleTest" href="#ingleTest">One test to rule them
-  all</a></h3>
-
-  <p>Instead of a separate unit test case for each locale, assuming
-  you declared the locales in the enum type via the @LocaleData and
-  nested @Locale annotations, you can verify all locales in one fell
-  swoop.</p>
-
-    <pre class="prettyprint source">
-package foo.aPackage;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.List;
-import java.util.Locale;
-
-import org.junit.Test;
-
-import ch.qos.cal10n.verifier.Cal10nError;
-import ch.qos.cal10n.verifier.IMessageKeyVerifier;
-import ch.qos.cal10n.verifier.MessageKeyVerifier;
-
-public class MyAllInOneColorVerificationTest {
-
-  // verify all locales in one step
-  @Test
-  public void all() {
-    IMessageKeyVerifier mkv = new MessageKeyVerifier(Colors.class);
-    List&lt;Cal10nError> errorList = mkv.verifyAllLocales();
-    for(Cal10nError error: errorList) {
-      System.out.println(error);
-    }
-    assertEquals(0, errorList.size());
-  }
-} </pre>
-
-
-
-  <h2><a name="mavenPlugin" href="#mavenPlugin">Maven Plugin</a></h2>
-
-  <p>The CAL10N project ships with a maven plugin designed to verify
-  that the keys specified in a given enum type match those found in
-  the corresponding resource bundles and for each locale. Our plugin
-  is unsurprisingly called <em>mvn-cal10n-plugin</em>.
-  </p>
-
-  <p>Using <em>maven-cal10n-plugin</em> is pretty easy. To verify
-  enums in a given project, just declare the
-  <em>maven-cal10n-plugin</em> in the <code>&lt;build></code> section,
-  enumerating all the enum types you would like to see checked.</p>
-
-  <p>Here is a sample <em>pom.xml</em> snippet.</p>
-
-  <pre class="prettyprint source">&lt;build>
-  &lt;plugins>
-   ... other plugins
-    &lt;plugin>
-      &lt;groupId>ch.qos.cal10n.plugins&lt;/groupId>
-      &lt;artifactId>maven-cal10n-plugin&lt;/artifactId>
-      &lt;executions>
-        &lt;execution>
-          &lt;id>aNameOfYourChoice&lt;/id>
-          &lt;phase>verify&lt;/phase>
-          &lt;goals>
-            &lt;goal>verify&lt;/goal>
-          &lt;/goals>
-          &lt;configuration>            
-            <b>&lt;enumTypes></b>
-               <b>&lt;!-- list every enum type you would like to see checked --></b>
-               <b>&lt;enumType>some.enumTpe.Colors&lt;/enumType></b>
-               <b>&lt;enumType>another.enumTpe.Countries&lt;/enumType></b>
-            <b>&lt;/enumTypes></b>
-          &lt;/configuration>
-        &lt;/execution>
-      &lt;/executions>
-    &lt;/plugin>
-  &lt;/plugins>
-&lt;/build> </pre>
-
-  <p>After you add the above snippet to the pom.xml file of your
-  project, <em>maven-cal10n-plugin</em> will make sure that
-  your resource bundles and your enum type are in synchronized.
-  </p>
-
-  <p>The plugin will iterate through every resource bundle for every
-  locale listed in the enum type via the <code>@LocaleData</code> and
-  <code>@Locale</code> annotations.
-  </p>
-
-  <h2><a name="eclipsePlugin" href="#eclipsePlugin">Eclipse plug-in</a></h2>
-  
-  <p>We are looking for volunteers willing to implement IDE support
-  for CAL10N.  Below is a list of possible features of this IDE which
-  we think could have added value.
-  </p>
-
-  <ul>
-    <li><b>mismatch highlighting</b> 
-    <p>While editing a property file, highlight any keys that do not
-    match any keys defined in the corresponding enum type.</p>
-    </li>
-
-    
-    <li><b>auto-correction</b>
-      <p>The mismatch highlighting feature could be enhanced by making
-      correction suggestions. For example, if in the property file the
-      user misspells the key "red_elephant" as "red_elefant", by
-      measuring the <a
-      href="http://en.wikipedia.org/wiki/Levenshtein_distance">Levenshtein
-      distance</a> the plug-in could propose the nearest neighbor of
-      "red_elefant" in the enum type, which should be "red_elephant"
-      with high probability.
-      </p>
-    </li>
-
-    <li>
-      <b>Skeleton generation</b>
-      <p>Given an enum type, generate the skeleton of the
-      corresponding resource bundle</p>
-    </li>
-  </ul>
-
-  
-  <p>If interested please contact the cal10n-dev mailing list.</p>
-
-  <h2><a name="antTask" href="#antTask">Ant task</a></h2>
-
-  <p>We are looking for volunteers to implement an Ant task to verify
-  resource bundles. The Ant task could be modeled after the
-  <em>maven-cal10n-plugin</em> although the Ant plugin is likely to be
-  simpler. If interested please contact the cal10n-dev mailing
-  list.</p>
-
-  <script src="templates/footer.js" type="text/javascript"></script>
-</div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>Manual</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+    <link rel="stylesheet" type="text/css" href="css/prettify.css" />
+
+  </head>
+  <body onload="prettyPrint()">
+    <script type="text/javascript">prefix='';</script>
+    <script type="text/javascript" src="js/prettify.js"></script>
+    <script src="templates/header.js" type="text/javascript"></script>
+    <div id="left">
+      <noscript>Please turn on Javascript to view this menu</noscript>
+      <script src="templates/left.js" type="text/javascript"></script>
+    </div>
+    <div id="content">
+  
+  
+      <table style="margin-left: 0em; padding-top:0ex" cellpadding="0" 
+           cellspacing="0" width="70%">
+      <tr>
+        <td>        
+          <p class="author">
+            Author: Ceki G&#252;lc&#252;
+          <br/>
+          Copyright &#169; 2009, QOS.ch</p>
+        </td>
+        <td>
+          <a rel="license"
+             href="http://creativecommons.org/licenses/by-nc-sa/2.5/">
+            <img alt="Creative Commons License"
+                 style="border-width: 0; margin-left: 1em"
+                 src="http://creativecommons.org/images/public/somerights20.png" />
+          </a>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <p>
+            This document is licensed under a
+            <a rel="license"
+               href="http://creativecommons.org/licenses/by-nc-sa/2.5/">
+              Creative Commons
+              Attribution-NonCommercial-ShareAlike 2.5
+              License
+            </a>
+          </p>
+        </td>
+        <td></td>
+			</tr>
+	 </table>
+
+   <h1>CAL10N Manual</h1>
+
+   <p>The goal of CAL10N project is to enhance the existing
+   internationalization functionality offered by the Java platform
+   with consistency and verification primitives. It is assumed that
+   you are already somewhat familiar with <a
+   href="http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/">using
+   ResourceBundles</a>.
+   </p>
+
+   <h3>Acknowledgment</h3>
+
+   <p>The original idea behind CAL10N is attributed to Takeshi Kondo. It
+   consolidated into what it is today subsequent to a <a
+   href="http://markmail.org/thread/drcabfc6z42sijdo">discussion</a>
+   involving Ralph Goers, Ceki G&uuml;lc&uuml;, Takeshi Kondo and Pete
+   Muir on the slf4j-dev mailing list.
+   </p>
+
+
+   <h2><a name="code" href="#core">Core idea</a></h2>
+
+   <p>Instead of using values of type String as the key for each
+   message, CAL10N uses <code>enums</code>.</p>
+
+   <p>For example, let us assume that you wanted to internationalize
+   color names. No one in their right minds would just want to
+   internationalize three color names but probably a much larger set
+   of items. We are using a very small set of colors just as an
+   example. In CAL10N you could start by writing an enum type, named
+   Colors. You can choose any name for the enum type. Colors is just
+   the name this particular author picked.</p>
+
+   <pre class="prettyprint source">package com.foo.somePackage;
+
+
+import ch.qos.cal10n.LocaleData;
+import ch.qos.cal10n.Locale;
+import ch.qos.cal10n.BaseName;
+
+ at BaseName("colors")
+ at LocaleData( { @Locale("en_UK"), @Locale("fr") })
+public enum Colors  {
+  BLUE,
+  RED,
+  YELLOW;
+}</pre>
+   
+
+  <p>Once you define a few color keys, you can create a regular
+  resource bundle named after the value of the @BaseName
+  annotation in Colors and the appropriate locale. For example, for
+  the UK locale, you would name your resource bundle as
+  <em>colors_en_UK.properties</em>. It should also be placed in the
+  appropriate folder on your class path or in the root folder of an
+  appropriate jar file.  (It is assumed that you know how to work with
+  resource bundles.) </p>
+
+  <p>Here is a sample a <em>colors_en_UK.properties</em> file:</p>
+
+  <pre class="source">
+BLUE=violets are blue
+RED=roses are red
+GREEN={0} are green  </pre>
+
+  <p>For the french locale, the resource bundle would be named
+  <em>colors_fr.properties</em>. Here are sample contents.</p>
+
+  <pre class="source">
+BLUE=les violettes sont bleues
+RED=les roses sont rouges
+GREEN=les {0} sont verts</pre>
+
+  
+  <h2><a name="retrieving" href="#retrieving">Retrieving
+  internationalized messages</a></h2>
+
+  <p>In your application, you would retrieve the localized message via
+  an <a
+  href="apidocs/ch/qos/cal10n/IMessageConveyor.html">IMessageConveyor</a>
+  instance.
+  </p>
+
+  <pre  class="prettyprint source">// obtain a message conveyor for France
+IMessageConveyor mc = new MessageConveyor(Locale.FRANCE);
+
+// use it to retrieve internationalized messages
+String red = mc.getMessage(Colors.RED);
+String blue = mc.getMessage(Colors.BLUE);  
+String green = mc.getMessage(Colors.GREEN, <b>"pommes"</b>);  // note the second argument
+</pre>
+
+  <p>CAL10N leverages the existing resource bundle infrastructure you
+  have been accustomed to, but adds compiler verification on top. The
+  default <a
+  href="apidocs/ch/qos/cal10n/IMessageConveyor.html">IMessageConveyor</a>
+  implementation, namely <a
+  href="apidocs/ch/qos/cal10n/MessageConveyor.html">MessageConveyor</a>,
+  uses the standard Java convention for parameter substitution as
+  defined by the <a
+  href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html">java.text.MessageFormat</a>
+  class.</p>
+
+  <p>An astute reader will comment that even if the messages keys are
+  now verified by the compiler, it is still possible to have
+  mismatching message keys in the resources bundles. For this reason,
+  CAL10N comes with additional tools, including <a
+  href="#verification" class="big greenBold" >support for writing Junit test cases</a> and a
+  <a href="#mavenPlugin">maven plugin</a>.
+  </p>
+
+  <h2><a name="requirements" href="#requirements">Requirements / Installation</a>
+  </h2>
+  
+  <p>CAL10N requires JDK version 1.5.</p>
+
+  <p>In order to use CAL10N in a project, all you need is to add
+  <em>cal10n-api-${project.version}.jar</em> onto your project's class
+  path.</p>
+  
+  <p>For Maven users, this is done by adding the following
+  dependency in a project's <em>pom.xml</em> file:</p>
+
+      <pre class="prettyprint source">&lt;dependency&gt;
+  &lt;groupId&gt;ch.qos.cal10n&lt;/groupId&gt;
+  &lt;artifactId&gt;cal10n-api&lt;/artifactId&gt;
+  &lt;version&gt;${project.version}&lt;/version&gt;
+&lt;/dependency&gt;</pre>
+ 
+ 
+
+  <h2><a name="simplifiedLookup" href="#simplifiedLookup">Simplified
+  bundle look-up procedure</a></h2>                             
+
+  <p>The <code>ResourceBundle</code> class defines a rather involved
+  <a
+  href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ResourceBundle.html#getBundle%28java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader%29">look-up
+  procedure</a> for finding resource bundles. While formally this
+  procedure is deterministic, it is too error-prone. Moreover, it
+  clashes with CAL10N's philosophy of verifiability.  We thus took the
+  bold initiative to define a simplified bundle look up procedure,
+  described below.
+  </p>
+
+  <p>Given a locale, the simplified look up procedure only takes into
+  account that locale, ignoring the default locale and the resource
+  bundle corresponding to the naked base name, i.e. the default
+  resource bundle. However, if the locale has both a language
+  <b>and</b> a country, and corresponding bundle files exist, then
+  CAL10N will take into account both bundles, establishing the same
+  parent child relationship as the JDK <code>ResourceBundle</code>
+  class.
+  </p>
+
+  <p>For example, for base name "colors" if the following bundles
+  exist on the class path:
+  </p>
+
+  <pre class="source">colors.properties
+colors_en_US.properties
+colors_en.properties
+colors_fr_FR.properties</pre>
+
+
+   <p>and the system's default locale is "fr_FR", when CAL10N is asked
+   to find resource bundles corresponding to the "en_US" locale, it
+   will ignore the <em>colors.properties</em> (~ default bundle) and
+   <em>colors_fr_FR.properties</em> (~ default locale), while
+   combining the <em>colors_en_US.properties</em> and
+   <em>colors_en.properties</em> bundles in the usual parent-child
+   relationship.
+   </p>
+
+   <p>We hope that the simplified look-up procedure, while deviating
+   from the conventions of the Java platform as defined in the
+   <code>ResourceBundle</code> class, will still cause <a
+   href="http://en.wikipedia.org/wiki/Principle_of_least_astonishment">
+   less surprise</a>.</p>
+
+
+  <h2><a name="charset" href="#charset">Pick your charset, per locale
+  (no <em>native2ascii</em>) </a></h2>
+  
+  <p>CAL10N allows you to encode the resource bundle for a given
+  locale in the charset of your choice.  The set of supported charsets
+  depends on your Java platform.  See this <a
+  href="http://www.websina.com/bugzero/kb/java-encoding-charset.html">java
+  encoding and charset list</a> for more details.
+  </p>
+
+
+  <p>Assume you have four resource bundles, for the English, French,
+  Turkish and Greek languages. You decide to encode all of them in
+  UTF-8. To tell CAL10N that UTF-8 is the default encoding for all
+  locales, one would write:</p>
+
+<pre class="prettyprint">
+ at BaseName("colors")
+ at LocaleData(
+  <b>defaultCharset="UTF8",</b>
+  value = { @Locale("en_UK"),
+            @Locale("fr_FR"),
+            @Locale("tr_TR"),
+            @Locale("el_GR")
+           }
+   )
+public enum Colors {
+ BLUE,
+ RED,
+ GREEN;
+} 
+</pre>
+
+  <p>If for some reason the Turkish bundle was encoded in ISO8859_3,
+  but the others locales in UTF8, you would write:</p>
+  
+<pre class="prettyprint">
+ at BaseName("colors")
+ at LocaleData(
+  defaultCharset="UTF8",
+  value = { @Locale("en_UK"),
+            @Locale("fr_FR"),
+            <b>@Locale(value="tr_TR", charset="ISO8859_3"),</b>
+            @Locale("el_GR")
+           }
+   )
+public enum Colors {
+ BLUE,
+ RED,
+ GREEN;
+} 
+</pre>
+
+  <p>The <code>defaultCharset</code> directive specified in the
+  <code>@LocaleDat</code>a annotation applies to all nested @Locale
+  annotations, unless the value is overriden by a <code>charset</code>
+  directive (as in the "tr_TR" locale in the example above).  If not
+  specified, the default value for <code>defaultCharset</code> is the
+  empty string.  In the absence of a <code>defaultCharset</code>
+  directive, the default value for the <code>charset</code> directive
+  is also the empty String.
+  </p>
+  
+  <p>If both <code>charset</code> and <code>defaultCharset</code> are
+  empty, CAL10N will use the <a
+  href="http://mindprod.com/jgloss/encoding.html">default encoding</a>
+  for your Java platform to read resource bundles.</p>
+
+
+
+
+  <h2><a name="reload" href="#reload">Automatic reloading of resource
+  bundles upon change</a></h2>
+
+  <p>When a resource bundle for a given locale is changed on the file
+  system, <code>MessageConveyor</code> will automatically reload the
+  resource bundle. It may take up to 10 minutes for the change to be
+  detected.</p>
+
+  <p>Automatic reloading applies if the resource bundle is a regular
+  file but not if nested within a jar file.
+  </p>
+
+
+  <h2><a name="deferred" href="#deferred">Deferred
+  localization</a></h2>
+
+  <p>Under certain circumstances, the appropriate locale is
+  <em>unknown</em> at the time or place where the message key and
+  message args are emitted. For example, a low level library might
+  wish to emit a localized message but it is only at the UI (user
+  interface) layer that the locale is known. As another example,
+  imagine that the host where the localized messages are presented to
+  the user is in a different locale, e.g.  Japan, than the locale of
+  the source host. e.g. US.
+  </p>
+
+  <p>The <a
+  href="xref/ch/qos/cal10n/MessageParameterObj.html">MessageParameterObj</a>
+  class is intended to support this particular use case. It allows you
+  to bundle the message key (an enum) plus any message
+  arguments. At a later time, when the locale is known, you would
+  invoke the <a
+  href="apidocs/ch/qos/cal10n/IMessageConveyor.html#getMessage(ch.qos.cal10n.MessageParameterObj)">getMessage(MessageParameterObj)</a>
+  method in <code>IMessageConveyor</code> to obtain the localized
+  message.
+  </p>
+ 
+  <h2><a name="verification" href="#verification">Verification as a
+  test case</a></h2>
+
+  <p>A convenient and low hassle method for checking for mismatches
+  between a given enum type and the corresponding resource bundles is
+  through Junit test cases.</p>
+
+  <p>Here is a sample Junit test for the Colors enum discussed
+  above.</p>
+
+  <pre class="prettyprint source">
+package foo.aPackage;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+import java.util.Locale;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.verifier.Cal10nError;
+import ch.qos.cal10n.verifier.IMessageKeyVerifier;
+import ch.qos.cal10n.verifier.MessageKeyVerifier;
+
+public class MyColorVerificationTest {
+
+  @Test
+  public void en_UK() {
+    IMessageKeyVerifier mkv = new MessageKeyVerifier(Colors.class);
+    List&lt;Cal10nError> errorList = mkv.verify(Locale.UK);
+    for(Cal10nError error: errorList) {
+      System.out.println(error);
+    }
+    assertEquals(0, errorList.size());
+  }
+
+  @Test
+  public void fr() {
+    IMessageKeyVerifier mkv = new MessageKeyVerifier(Colors.class);
+    List&lt;Cal10nError> errorList = mkv.verify(Locale.FRANCE);
+    for(Cal10nError error: errorList) {
+      System.out.println(error);
+    }
+    assertEquals(0, errorList.size());
+  }
+} </pre>
+
+  <p>The above unit tests start by creating a
+  <code>MessageKeyVerifier</code> instance associated with an enum
+  type, <code>Colors</code> in this case. The test proceeds to invoke
+  the <code>verify()</code> method passing a locale as an
+  argument. The <code>verify()</code> method returns the list of
+  errors, that is the list of discrepancies between the keys listed
+  in the enum type and the corresponding resource bundle. An empty
+  list will be returned if there are no errors.
+  </p>
+
+  <p>The unit test verifies that no errors have occurred by asserting
+  that the size of the error list is zero.</p>
+
+  <p>Suppose the key "BLUE" was misspelled as "BLEU" in the
+  <em>colors_fr.properties</em> resource bundle. The unit test would
+  print the following list of errors and throw an
+  <code>AssertionError</code>.
+
+  </p>
+  <pre class="source">Key [BLUE] present in enum type [ch.qos.cal10n.sample.Colors] but absent in resource bundle \
+   named [colors] for locale [fr_FR]
+Key [BLEU] present in resource bundle named [colors] for locale [fr_FR] but absent \ 
+   in enum type [ch.qos.cal10n.sample.Colors]</pre>
+
+  <h3><a name="singleTest" href="#ingleTest">One test to rule them
+  all</a></h3>
+
+  <p>Instead of a separate unit test case for each locale, assuming
+  you declared the locales in the enum type via the @LocaleData and
+  nested @Locale annotations, you can verify all locales in one fell
+  swoop.</p>
+
+    <pre class="prettyprint source">
+package foo.aPackage;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+import java.util.Locale;
+
+import org.junit.Test;
+
+import ch.qos.cal10n.verifier.Cal10nError;
+import ch.qos.cal10n.verifier.IMessageKeyVerifier;
+import ch.qos.cal10n.verifier.MessageKeyVerifier;
+
+public class MyAllInOneColorVerificationTest {
+
+  // verify all locales in one step
+  @Test
+  public void all() {
+    IMessageKeyVerifier mkv = new MessageKeyVerifier(Colors.class);
+    List&lt;Cal10nError> errorList = mkv.verifyAllLocales();
+    for(Cal10nError error: errorList) {
+      System.out.println(error);
+    }
+    assertEquals(0, errorList.size());
+  }
+} </pre>
+
+
+
+  <h2><a name="mavenPlugin" href="#mavenPlugin">Maven Plugin</a></h2>
+
+  <p>The CAL10N project ships with a maven plugin designed to verify
+  that the keys specified in a given enum type match those found in
+  the corresponding resource bundles and for each locale. Our plugin
+  is unsurprisingly called <em>mvn-cal10n-plugin</em>.
+  </p>
+
+  <p>Using <em>maven-cal10n-plugin</em> is pretty easy. To verify
+  enums in a given project, just declare the
+  <em>maven-cal10n-plugin</em> in the <code>&lt;build></code> section,
+  enumerating all the enum types you would like to see checked.</p>
+
+  <p>Here is a sample <em>pom.xml</em> snippet.</p>
+
+  <pre class="prettyprint source">&lt;build>
+  &lt;plugins>
+   ... other plugins
+    &lt;plugin>
+      &lt;groupId>ch.qos.cal10n.plugins&lt;/groupId>
+      &lt;artifactId>maven-cal10n-plugin&lt;/artifactId>
+      &lt;executions>
+        &lt;execution>
+          &lt;id>aNameOfYourChoice&lt;/id>
+          &lt;phase>verify&lt;/phase>
+          &lt;goals>
+            &lt;goal>verify&lt;/goal>
+          &lt;/goals>
+          &lt;configuration>            
+            <b>&lt;enumTypes></b>
+               <b>&lt;!-- list every enum type you would like to see checked --></b>
+               <b>&lt;enumType>some.enumTpe.Colors&lt;/enumType></b>
+               <b>&lt;enumType>another.enumTpe.Countries&lt;/enumType></b>
+            <b>&lt;/enumTypes></b>
+          &lt;/configuration>
+        &lt;/execution>
+      &lt;/executions>
+    &lt;/plugin>
+  &lt;/plugins>
+&lt;/build> </pre>
+
+  <p>After you add the above snippet to the pom.xml file of your
+  project, <em>maven-cal10n-plugin</em> will make sure that
+  your resource bundles and your enum type are in synchronized.
+  </p>
+
+  <p>The plugin will iterate through every resource bundle for every
+  locale listed in the enum type via the <code>@LocaleData</code> and
+  <code>@Locale</code> annotations.
+  </p>
+
+  <h2><a name="eclipsePlugin" href="#eclipsePlugin">Eclipse plug-in</a></h2>
+  
+  <p>We are looking for volunteers willing to implement IDE support
+  for CAL10N.  Below is a list of possible features of this IDE which
+  we think could have added value.
+  </p>
+
+  <ul>
+    <li><b>mismatch highlighting</b> 
+    <p>While editing a property file, highlight any keys that do not
+    match any keys defined in the corresponding enum type.</p>
+    </li>
+
+    
+    <li><b>auto-correction</b>
+      <p>The mismatch highlighting feature could be enhanced by making
+      correction suggestions. For example, if in the property file the
+      user misspells the key "red_elephant" as "red_elefant", by
+      measuring the <a
+      href="http://en.wikipedia.org/wiki/Levenshtein_distance">Levenshtein
+      distance</a> the plug-in could propose the nearest neighbor of
+      "red_elefant" in the enum type, which should be "red_elephant"
+      with high probability.
+      </p>
+    </li>
+
+    <li>
+      <b>Skeleton generation</b>
+      <p>Given an enum type, generate the skeleton of the
+      corresponding resource bundle</p>
+    </li>
+  </ul>
+
+  
+  <p>If interested please contact the cal10n-dev mailing list.</p>
+
+  <h2><a name="antTask" href="#antTask">Ant task</a></h2>
+
+  <p>We are looking for volunteers to implement an Ant task to verify
+  resource bundles. The Ant task could be modeled after the
+  <em>maven-cal10n-plugin</em> although the Ant plugin is likely to be
+  simpler. If interested please contact the cal10n-dev mailing
+  list.</p>
+
+  <script src="templates/footer.js" type="text/javascript"></script>
+</div>
+</body>
+</html>
diff --git a/cal10n-site/src/site/pages/news.html b/cal10n-site/src/site/pages/news.html
index 53397c1..bc2451a 100644
--- a/cal10n-site/src/site/pages/news.html
+++ b/cal10n-site/src/site/pages/news.html
@@ -1,149 +1,149 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>News</title>
-    <link rel="stylesheet" type="text/css" href="css/common.css" />
-    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-    
-  </head>
-  <body>
-    <script type="text/javascript">prefix='';</script>
-
-    <script src="templates/header.js" type="text/javascript"></script>
-    <div id="left">
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="templates/left.js" type="text/javascript"></script>
-    </div>
-    <div id="content">
-	
-    <h2>CAL10N News</h2>
-  
-    <p>You can receive cal10n-related announcements by subscribing to
-    the <a href="http://www.qos.ch/mailman/listinfo/announce">QOS.ch
-    announce</a> mailing list. </p>
-
-    <hr width="80%" align="center" />
- 
-    <h3>28th of October 2009 - Release of CAL10N version 0.7.2</h3>
-
-    <p>Added OSGi bundle headers to cal10n-api as requested by Peter
-    Muir in <a href="http://jira.qos.ch/browse/CAL-9">CAL-9</a>.
-    </p>
-
-    <p>The bundle <code>lookup</code>() method in
-    <code>MessageConveyor</code> now uses the class loader of the enum
-    tpye instead of the class loader which loaded the
-    <code>MessageConveyor</code> class. The fixes <a
-    href="http://jira.qos.ch/browse/CAL-8">CAL-8</a> as reported by
-    Pete Muir.
-    </p>
-
-    <hr width="80%" align="center" />
- 
-    <h3>4th of September 2009 - Release of CAL10N version 0.7</h3>
-
-    <p>Added capability for reading bundles in any JVM supported
-    charset, rendering <em>native2ascii</em>
-    superfluous. Unfortunately, the annotations to specify locales
-    became more complicated. However, the price is probably well worth
-    the cost.</p>
-
-
-    <hr width="80%" align="center" />
- 
-    <h3>3rd of September 2009 - Release of CAL10N version 0.6.5</h3>
-
-    <p><code>MessageConveyor</code> now caches resource bundles for
-    dramatically (500 fold) improved performance.</p>
-
-    <p>Resource bundles are automatically <a
-    href="manual.html#reload">reloaded upon change.</a></p>
-
-    <hr width="80%" align="center" />
- 
-    <h3>2nd of September 2009 - Release of CAL10N version 0.6</h3>
-
-    <p>Fixed issue <a href="http://jira.qos.ch/browse/CAL-1">CAL-1</a>
-    as reported by Takeshi Kondo. <code>MessageConveyor</code> will
-    now correctly handle enums which are nested within other classes
-    or enums which are nested within another enum.</p>
-
-    <p>CAI10N now uses a <a
-    href="manual.html#simplifiedLookup">simplifed bundle lookup
-    procedure</a>.</p>
-
-    <hr width="80%" align="center" />
- 
-    <h3>1st of September 2009 - Release of CAL10N version 0.5.1</h3>
-
-    <p>Fixed a bug causing the <em>maven-cal10n-plugin</em> to fail on
-    Linux. The plug-in is now tested on both Windows and Linux to work
-    as expected.
-    </p>
-    
-    <p>Added support for <a href="manual.html#deferred">deferred
-    localization</a>.</p>
-
-    <p>Added page on CAL10N <a href="codes.html">error codes</a> and
-    their meanings.</p>
-
-
-    <hr width="80%" align="center" />
-
-    <h3>29th of August 2009 - Release of CAL10N version 0.5</h3>
-
-    <p>Fixed a bug reported by Ralph Goers involving a method
-    introduced in JDK 1.6. This release correctly targets JDK 1.5</p>
-
-    <hr width="80%" align="center" />
-
-    <h3>28th of August 2009 - Release of CAL10N version 0.4</h3>
-
-    
-    <p>Project has been renamed as CAL10N, pronounced "calion". The
-    former name CAI18N was hard to pronounce. The project web site is
-    now hosted at <a
-    href="http://cal10n.qos.ch/">http://cal10n.qos.ch/</a>.</p>
-
-    <h3>28th of August 2009 - Release of CAI18N version 0.3</h3>
-
-    <p>Same code, improved documentation.</p>
-
-    <h3>28th of August 2009 - Release of CAI18N version 0.2</h3>
-
-    <p>Editing changes attributing original idea for CAI18N to Takeshi
-    Kondo, also mentioning the discussion involving Ralph Goers, Ceki
-    G&uuml;lc&uuml;, Takeshi Kondo and Pete Muir on the slf4j-dev
-    mailing list.  usable. </p>
-
-    <p>Added a new section in the manual about verification using
-    Junit test cases.</p>
-
-    <p>Improved javadoc documentaion.</p>
-    
-    <hr width="80%" align="center" />
-
-    <h3>27th of August 2009 - Release of CAI18N version 0.1</h3>
-
-    <p>This is the first release of CAI18N. It should be quite
-    usable. </p>
-
-    
-    <hr width="80%" align="center" />
-
-    <h3>24th of August 2009 - CAI18N web site goes live</h3>
-
-    <p>The  <a href="http://cai18n.qos.ch/">CAI18N  web  site</a> goes
-    live albeit with minimal content.</p>
-
-
-    <hr width="80%" align="center" />
-
-    <h3>23rd of August 2009 - Start of work</h3>
-
-    <p>Inspired by a discussion on the SLF4J mailing list, started
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>News</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+    
+  </head>
+  <body>
+    <script type="text/javascript">prefix='';</script>
+
+    <script src="templates/header.js" type="text/javascript"></script>
+    <div id="left">
+      <noscript>Please turn on Javascript to view this menu</noscript>
+      <script src="templates/left.js" type="text/javascript"></script>
+    </div>
+    <div id="content">
+	
+    <h2>CAL10N News</h2>
+  
+    <p>You can receive cal10n-related announcements by subscribing to
+    the <a href="http://www.qos.ch/mailman/listinfo/announce">QOS.ch
+    announce</a> mailing list. </p>
+
+    <hr width="80%" align="center" />
+ 
+    <h3>28th of October 2009 - Release of CAL10N version 0.7.2</h3>
+
+    <p>Added OSGi bundle headers to cal10n-api as requested by Peter
+    Muir in <a href="http://jira.qos.ch/browse/CAL-9">CAL-9</a>.
+    </p>
+
+    <p>The bundle <code>lookup</code>() method in
+    <code>MessageConveyor</code> now uses the class loader of the enum
+    tpye instead of the class loader which loaded the
+    <code>MessageConveyor</code> class. The fixes <a
+    href="http://jira.qos.ch/browse/CAL-8">CAL-8</a> as reported by
+    Pete Muir.
+    </p>
+
+    <hr width="80%" align="center" />
+ 
+    <h3>4th of September 2009 - Release of CAL10N version 0.7</h3>
+
+    <p>Added capability for reading bundles in any JVM supported
+    charset, rendering <em>native2ascii</em>
+    superfluous. Unfortunately, the annotations to specify locales
+    became more complicated. However, the price is probably well worth
+    the cost.</p>
+
+
+    <hr width="80%" align="center" />
+ 
+    <h3>3rd of September 2009 - Release of CAL10N version 0.6.5</h3>
+
+    <p><code>MessageConveyor</code> now caches resource bundles for
+    dramatically (500 fold) improved performance.</p>
+
+    <p>Resource bundles are automatically <a
+    href="manual.html#reload">reloaded upon change.</a></p>
+
+    <hr width="80%" align="center" />
+ 
+    <h3>2nd of September 2009 - Release of CAL10N version 0.6</h3>
+
+    <p>Fixed issue <a href="http://jira.qos.ch/browse/CAL-1">CAL-1</a>
+    as reported by Takeshi Kondo. <code>MessageConveyor</code> will
+    now correctly handle enums which are nested within other classes
+    or enums which are nested within another enum.</p>
+
+    <p>CAI10N now uses a <a
+    href="manual.html#simplifiedLookup">simplifed bundle lookup
+    procedure</a>.</p>
+
+    <hr width="80%" align="center" />
+ 
+    <h3>1st of September 2009 - Release of CAL10N version 0.5.1</h3>
+
+    <p>Fixed a bug causing the <em>maven-cal10n-plugin</em> to fail on
+    Linux. The plug-in is now tested on both Windows and Linux to work
+    as expected.
+    </p>
+    
+    <p>Added support for <a href="manual.html#deferred">deferred
+    localization</a>.</p>
+
+    <p>Added page on CAL10N <a href="codes.html">error codes</a> and
+    their meanings.</p>
+
+
+    <hr width="80%" align="center" />
+
+    <h3>29th of August 2009 - Release of CAL10N version 0.5</h3>
+
+    <p>Fixed a bug reported by Ralph Goers involving a method
+    introduced in JDK 1.6. This release correctly targets JDK 1.5</p>
+
+    <hr width="80%" align="center" />
+
+    <h3>28th of August 2009 - Release of CAL10N version 0.4</h3>
+
+    
+    <p>Project has been renamed as CAL10N, pronounced "calion". The
+    former name CAI18N was hard to pronounce. The project web site is
+    now hosted at <a
+    href="http://cal10n.qos.ch/">http://cal10n.qos.ch/</a>.</p>
+
+    <h3>28th of August 2009 - Release of CAI18N version 0.3</h3>
+
+    <p>Same code, improved documentation.</p>
+
+    <h3>28th of August 2009 - Release of CAI18N version 0.2</h3>
+
+    <p>Editing changes attributing original idea for CAI18N to Takeshi
+    Kondo, also mentioning the discussion involving Ralph Goers, Ceki
+    G&uuml;lc&uuml;, Takeshi Kondo and Pete Muir on the slf4j-dev
+    mailing list.  usable. </p>
+
+    <p>Added a new section in the manual about verification using
+    Junit test cases.</p>
+
+    <p>Improved javadoc documentaion.</p>
+    
+    <hr width="80%" align="center" />
+
+    <h3>27th of August 2009 - Release of CAI18N version 0.1</h3>
+
+    <p>This is the first release of CAI18N. It should be quite
+    usable. </p>
+
+    
+    <hr width="80%" align="center" />
+
+    <h3>24th of August 2009 - CAI18N web site goes live</h3>
+
+    <p>The  <a href="http://cai18n.qos.ch/">CAI18N  web  site</a> goes
+    live albeit with minimal content.</p>
+
+
+    <hr width="80%" align="center" />
+
+    <h3>23rd of August 2009 - Start of work</h3>
+
+    <p>Inspired by a discussion on the SLF4J mailing list, started
     work on the CAI18N project.</p>
\ No newline at end of file
diff --git a/cal10n-site/src/site/pages/repos.html b/cal10n-site/src/site/pages/repos.html
index fae5c0f..504564f 100644
--- a/cal10n-site/src/site/pages/repos.html
+++ b/cal10n-site/src/site/pages/repos.html
@@ -1,102 +1,102 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Repository</title>
-    <link rel="stylesheet" type="text/css" href="css/common.css" />
-    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-  </head>
-  <body>
-    <script  type="text/javascript">prefix='';</script>    
-    <script src="templates/header.js"  type="text/javascript"></script>
-    <div id="left">
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="templates/left.js"  type="text/javascript"></script>
-    </div>
-    <div id="content">
-	
-	
-		<div class="section">
-			<h2>Source Repository</h2>
-		</div>
-
-		<p>We store the project's source code in a revision control system
-		called Git. Developers have write access to the repository,
-		enabling them to make changes to the source code. Everyone else
-		has read-access to the repository. Thus, anyone can check out
-		latest development version of the software. Note that the latest
-		version in the repository may not work as expected. It may even
-		not compile. If you are looking for a stable release, then
-		download an official distribution.
-    </p>
-
-    <p>There are several ways to access the git repository:</p>
-
-    <h2>Web Access</h2>
-    
-    <p>If you just wish to browse around or download a few individual
-    files, you can do so with your web-browser:
-    </p>
-    
-    <table cellspacing="6">
-
-      <tr>
-        <td>on github</td>
-        <td>
-          <a href="http://github.com/ceki/cal10n/tree/master">
-            http://github.com/ceki/cal10n/tree/master</a> (slow but rich)
-        </td>
-      </tr>
-
-
-      <tr>
-        <td>on git.qos.ch</td>
-        <td><a href="http://git.qos.ch/gitweb/?p=cal10n.git;a=summary">
-        http://git.qos.ch/gitweb/?p=cal10n.git;a=summary</a> (fast but minimal)
-        </td>
-      </tr>      
-    </table>
-
-    <h2>Cloning</h2>
-
-
-    <p>Anyone can clone cal10n's source repository. All you need is a
-    git client. To clone cal10n's git repository, issue one of the
-    two following commands: </p>
-
-    <table cellpadding="4" cellspacing="1" class="bodyTable" style="font-size: 120%;">
-
-      <tr class="alt">
-        <th>transport protocol</th>
-        <th>git clone command</th>
-      </tr>
-      
-      <tr >
-        <td>git</td>
-        <td><code>git clone git://git.qos.ch/cal10n</code></td>
-      </tr>
-      
-      <tr class="alt">
-        <td>git</td>
-        <td><code>git clone git://github.com/ceki/cal10n.git</code></td>
-      </tr>
-      
-      <tr >
-        <td>http</td>
-        <td><code>git clone http://git.qos.ch/cal10n/</code></td>
-      </tr>
-    </table>
-    
-    
-    <p>In principle, the repositories listed above have identical
-    contents.</p>
-    
-    
-    
-    <script src="templates/footer.js" type="text/javascript"></script>
-    </div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>Repository</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+  </head>
+  <body>
+    <script  type="text/javascript">prefix='';</script>    
+    <script src="templates/header.js"  type="text/javascript"></script>
+    <div id="left">
+      <noscript>Please turn on Javascript to view this menu</noscript>
+      <script src="templates/left.js"  type="text/javascript"></script>
+    </div>
+    <div id="content">
+	
+	
+		<div class="section">
+			<h2>Source Repository</h2>
+		</div>
+
+		<p>We store the project's source code in a revision control system
+		called Git. Developers have write access to the repository,
+		enabling them to make changes to the source code. Everyone else
+		has read-access to the repository. Thus, anyone can check out
+		latest development version of the software. Note that the latest
+		version in the repository may not work as expected. It may even
+		not compile. If you are looking for a stable release, then
+		download an official distribution.
+    </p>
+
+    <p>There are several ways to access the git repository:</p>
+
+    <h2>Web Access</h2>
+    
+    <p>If you just wish to browse around or download a few individual
+    files, you can do so with your web-browser:
+    </p>
+    
+    <table cellspacing="6">
+
+      <tr>
+        <td>on github</td>
+        <td>
+          <a href="http://github.com/ceki/cal10n/tree/master">
+            http://github.com/ceki/cal10n/tree/master</a> (slow but rich)
+        </td>
+      </tr>
+
+
+      <tr>
+        <td>on git.qos.ch</td>
+        <td><a href="http://git.qos.ch/gitweb/?p=cal10n.git;a=summary">
+        http://git.qos.ch/gitweb/?p=cal10n.git;a=summary</a> (fast but minimal)
+        </td>
+      </tr>      
+    </table>
+
+    <h2>Cloning</h2>
+
+
+    <p>Anyone can clone cal10n's source repository. All you need is a
+    git client. To clone cal10n's git repository, issue one of the
+    two following commands: </p>
+
+    <table cellpadding="4" cellspacing="1" class="bodyTable" style="font-size: 120%;">
+
+      <tr class="alt">
+        <th>transport protocol</th>
+        <th>git clone command</th>
+      </tr>
+      
+      <tr >
+        <td>git</td>
+        <td><code>git clone git://git.qos.ch/cal10n</code></td>
+      </tr>
+      
+      <tr class="alt">
+        <td>git</td>
+        <td><code>git clone git://github.com/ceki/cal10n.git</code></td>
+      </tr>
+      
+      <tr >
+        <td>http</td>
+        <td><code>git clone http://git.qos.ch/cal10n/</code></td>
+      </tr>
+    </table>
+    
+    
+    <p>In principle, the repositories listed above have identical
+    contents.</p>
+    
+    
+    
+    <script src="templates/footer.js" type="text/javascript"></script>
+    </div>
+</body>
+</html>
diff --git a/cal10n-site/src/site/pages/templates/creative.js b/cal10n-site/src/site/pages/templates/creative.js
index f6b44d7..68ade79 100644
--- a/cal10n-site/src/site/pages/templates/creative.js
+++ b/cal10n-site/src/site/pages/templates/creative.js
@@ -1,33 +1,33 @@
-document.write('		<table style="margin-left: 0em; padding-top:0ex" cellpadding="0" ');
-document.write('           cellspacing="0" width="70%">');
-document.write('      <tr>');
-document.write('        <td>        ');
-document.write('          <p class="author">');
-document.write('            Authors: Ceki G&#252;lc&#252;, S&#233;bastien Pennec');
-document.write('          <br/>');
-document.write('          Copyright &#169; 2000-2009, QOS.ch</p>');
-document.write('        </td>');
-document.write('        <td>');
-document.write('            <a rel="license"');
-document.write('               href="http://creativecommons.org/licenses/by-nc-sa/2.5/">');
-document.write('        <img alt="Creative Commons License"');
-document.write('             style="border-width: 0; margin-left: 1em"');
-document.write('             src="http://creativecommons.org/images/public/somerights20.png" />');
-document.write('          </a>');
-document.write('        </td>');
-document.write('      </tr>');
-document.write('      <tr>');
-document.write('        <td>');
-document.write('          <p>');
-document.write('            This document is licensed under a');
-document.write('            <a rel="license"');
-document.write('               href="http://creativecommons.org/licenses/by-nc-sa/2.5/">');
-document.write('              Creative Commons');
-document.write('              Attribution-NonCommercial-ShareAlike 2.5');
-document.write('              License');
-document.write('            </a>');
-document.write('          </p>');
-document.write('        </td>');
-document.write('        <td></td>');
-document.write('			</tr>');
-document.write('		</table>');
+document.write('		<table style="margin-left: 0em; padding-top:0ex" cellpadding="0" ');
+document.write('           cellspacing="0" width="70%">');
+document.write('      <tr>');
+document.write('        <td>        ');
+document.write('          <p class="author">');
+document.write('            Authors: Ceki G&#252;lc&#252;, S&#233;bastien Pennec');
+document.write('          <br/>');
+document.write('          Copyright &#169; 2000-2009, QOS.ch</p>');
+document.write('        </td>');
+document.write('        <td>');
+document.write('            <a rel="license"');
+document.write('               href="http://creativecommons.org/licenses/by-nc-sa/2.5/">');
+document.write('        <img alt="Creative Commons License"');
+document.write('             style="border-width: 0; margin-left: 1em"');
+document.write('             src="http://creativecommons.org/images/public/somerights20.png" />');
+document.write('          </a>');
+document.write('        </td>');
+document.write('      </tr>');
+document.write('      <tr>');
+document.write('        <td>');
+document.write('          <p>');
+document.write('            This document is licensed under a');
+document.write('            <a rel="license"');
+document.write('               href="http://creativecommons.org/licenses/by-nc-sa/2.5/">');
+document.write('              Creative Commons');
+document.write('              Attribution-NonCommercial-ShareAlike 2.5');
+document.write('              License');
+document.write('            </a>');
+document.write('          </p>');
+document.write('        </td>');
+document.write('        <td></td>');
+document.write('			</tr>');
+document.write('		</table>');
diff --git a/cal10n-site/src/site/pages/templates/footer.js b/cal10n-site/src/site/pages/templates/footer.js
index 25d8fb5..5aa436c 100644
--- a/cal10n-site/src/site/pages/templates/footer.js
+++ b/cal10n-site/src/site/pages/templates/footer.js
@@ -1,14 +1,14 @@
-
-document.write('<table class="footer">')
-
-document.write('<tr>')
-
-document.write('  <td>')
-document.write('  &nbsp;')
-document.write('   </td>')
-
-document.write('<td valign="top">Copyright &copy; 2009  <a href="http://www.qos.ch/">QOS.ch</a></td>')
-
-document.write('</tr>')
-document.write('</table>')
-
+
+document.write('<table class="footer">')
+
+document.write('<tr>')
+
+document.write('  <td>')
+document.write('  &nbsp;')
+document.write('   </td>')
+
+document.write('<td valign="top">Copyright &copy; 2009  <a href="http://www.qos.ch/">QOS.ch</a></td>')
+
+document.write('</tr>')
+document.write('</table>')
+
diff --git a/cal10n-site/src/site/pages/templates/header.js b/cal10n-site/src/site/pages/templates/header.js
index 1e42d50..3a33e2b 100644
--- a/cal10n-site/src/site/pages/templates/header.js
+++ b/cal10n-site/src/site/pages/templates/header.js
@@ -1,7 +1,7 @@
-
-document.write('<p align="left">');
-document.write('<a href="http://cal10n.qos.ch/">');
-document.write('<img src="' + prefix + 'images/CAL10N_logo.png" alt="" border="0" style="margin-left: 4px; " />');
-document.write('</a>')
-document.write('</p>');
-document.write('<div id="headerLine"></div>');
+
+document.write('<p align="left">');
+document.write('<a href="http://cal10n.qos.ch/">');
+document.write('<img src="' + prefix + 'images/CAL10N_logo.png" alt="" border="0" style="margin-left: 4px; " />');
+document.write('</a>')
+document.write('</p>');
+document.write('<div id="headerLine"></div>');
diff --git a/cal10n-site/src/site/pages/templates/left.js b/cal10n-site/src/site/pages/templates/left.js
old mode 100644
new mode 100755
index 85428dc..5dbdb88
--- a/cal10n-site/src/site/pages/templates/left.js
+++ b/cal10n-site/src/site/pages/templates/left.js
@@ -1,18 +1,18 @@
-
-document.write('<div class="menuGroup">');
-document.write('  <p class="menu_header">CAL10N project</p>');
-document.write('  <p class="menu"><a href="' + prefix + 'index.html">Introduction</a></p>');
-document.write('  <p class="menu"><a href="' + prefix + 'news.html">News</a></p>');
-document.write('  <p class="menu"><a href="' + prefix + 'download.html">Download</a></p>');
-document.write('  <p class="menu"><a href="' + prefix + 'documentation.html">Documentation</a></p>');
-document.write('  <p class="menu"><a href="' + prefix + 'mailinglist.html">Mailing Lists</a></p>');
-document.write('  <p class="menu"><a href="' + prefix + 'repos.html">Source Repository</a></p>');
-document.write('  <p class="menu"><a href="' + prefix + 'bugreport.html">Bug Report</a></p>');
-document.write('  <p class="menu"><a href="' + prefix + 'license.html">License</a></p>');
-document.write('</div>');
-
-document.write('<p class="pub">');
-document.write('  <a href="https://www.qos.ch/shop/products/log4j/log4j-Manual.jsp">');
-document.write('    <img src="images/buyDirect.jpg" border="0" title="" alt="buy direct from the developer"/>');
-document.write('  </a>');
+
+document.write('<div class="menuGroup">');
+document.write('  <p class="menu_header">CAL10N project</p>');
+document.write('  <p class="menu"><a href="' + prefix + 'index.html">Introduction</a></p>');
+document.write('  <p class="menu"><a href="' + prefix + 'news.html">News</a></p>');
+document.write('  <p class="menu"><a href="' + prefix + 'download.html">Download</a></p>');
+document.write('  <p class="menu"><a href="' + prefix + 'documentation.html">Documentation</a></p>');
+document.write('  <p class="menu"><a href="' + prefix + 'mailinglist.html">Mailing Lists</a></p>');
+document.write('  <p class="menu"><a href="' + prefix + 'repos.html">Source Repository</a></p>');
+document.write('  <p class="menu"><a href="' + prefix + 'bugreport.html">Bug Report</a></p>');
+document.write('  <p class="menu"><a href="' + prefix + 'license.html">License</a></p>');
+document.write('</div>');
+
+document.write('<p class="pub">');
+document.write('  <a href="http://www.qos.ch/shop/products/log4jManual">');
+document.write('    <img src="images/buyDirect.jpg" border="0" title="" alt="buy direct from the developer"/>');
+document.write('  </a>');
 document.write('</p>');
\ No newline at end of file
diff --git a/cal10n-site/src/site/pages/templates/right.js b/cal10n-site/src/site/pages/templates/right.js
index 493ae09..9f88cf1 100644
--- a/cal10n-site/src/site/pages/templates/right.js
+++ b/cal10n-site/src/site/pages/templates/right.js
@@ -1,19 +1,19 @@
-//document.write('<p class="menu"><a href="'+prefix+'10reasons.ppt">10 reasons for migrating</a>')
-
-document.write('<p class="menu_header">New and noteworthy</p>')
-
-document.write('<p class="menu"><a href="http://stubbisms.wordpress.com/2008/07/15/some-serious-logging-niceness-logback-with-eclipse-plugin/">Logging niceness</a>')
-
-document.write('<p class="menu"><a href="http://wimpi.coalevo.net/2008/04/logger-name-based-filtering-in-logback.html">Filtering by logger name</a>')
-
-document.write('<p class="menu"><a href="http://out-println.blogspot.com/2007/09/slf4j-and-logback.html">SLF4J and Logback</a>')
-
-
-document.write('<p class="menu"><a href="http://wizardforge.org/pc?action=showVersion&id=72">Configuration Wizard</a>')
-
-document.write('<p class="menu"><a href="http://xhab.blogspot.com/2007/03/new-logging-experience.html">A new logging experience!</a>')
-
-document.write('<p class="menu"><a href="http://javablog.smilehouse.com/blog/default/Java/2007/02/02/Writing-rotated-and-compressed-access-logs-with-logback">Writing rotated and compressed access logs</a>')
-
-
-document.write('</p>')
+//document.write('<p class="menu"><a href="'+prefix+'10reasons.ppt">10 reasons for migrating</a>')
+
+document.write('<p class="menu_header">New and noteworthy</p>')
+
+document.write('<p class="menu"><a href="http://stubbisms.wordpress.com/2008/07/15/some-serious-logging-niceness-logback-with-eclipse-plugin/">Logging niceness</a>')
+
+document.write('<p class="menu"><a href="http://wimpi.coalevo.net/2008/04/logger-name-based-filtering-in-logback.html">Filtering by logger name</a>')
+
+document.write('<p class="menu"><a href="http://out-println.blogspot.com/2007/09/slf4j-and-logback.html">SLF4J and Logback</a>')
+
+
+document.write('<p class="menu"><a href="http://wizardforge.org/pc?action=showVersion&id=72">Configuration Wizard</a>')
+
+document.write('<p class="menu"><a href="http://xhab.blogspot.com/2007/03/new-logging-experience.html">A new logging experience!</a>')
+
+document.write('<p class="menu"><a href="http://javablog.smilehouse.com/blog/default/Java/2007/02/02/Writing-rotated-and-compressed-access-logs-with-logback">Writing rotated and compressed access logs</a>')
+
+
+document.write('</p>')
diff --git a/cal10n-site/src/site/pages/templates/setup.js b/cal10n-site/src/site/pages/templates/setup.js
index 5eef351..d967af3 100644
--- a/cal10n-site/src/site/pages/templates/setup.js
+++ b/cal10n-site/src/site/pages/templates/setup.js
@@ -1,10 +1,10 @@
-
-document.write('		<div class="highlight">');
-document.write('    <p>');
-document.write('      In order to run the examples in this chapter, you need');
-document.write('      to make sure that certain jar files are present on the');
-document.write('      classpath.');
-document.write('    	Please refer to the <a href="../setup.html">setup page</a>');
-document.write('    	for further details.');
-document.write('    </p>');
+
+document.write('		<div class="highlight">');
+document.write('    <p>');
+document.write('      In order to run the examples in this chapter, you need');
+document.write('      to make sure that certain jar files are present on the');
+document.write('      classpath.');
+document.write('    	Please refer to the <a href="../setup.html">setup page</a>');
+document.write('    	for further details.');
+document.write('    </p>');
 document.write('    </div>');
\ No newline at end of file
diff --git a/maven-cal10n-plugin-smoke/pom.xml b/maven-cal10n-plugin-smoke/pom.xml
index 8321dcf..a44eaec 100644
--- a/maven-cal10n-plugin-smoke/pom.xml
+++ b/maven-cal10n-plugin-smoke/pom.xml
@@ -1,48 +1,48 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-	<parent>
-		<groupId>ch.qos.cal10n</groupId>
-		<artifactId>cal10n-parent</artifactId>
-		<version>0.7.2</version>
-	</parent>
-
-	<modelVersion>4.0.0</modelVersion>
-
-	<groupId>ch.qos.cal10n</groupId>
-	<artifactId>maven-cal10n-plugin-smoke</artifactId>
-	<packaging>jar</packaging>
-	<name>Compiler assisted localization library (CAL10N) - Maven Testing</name>
-
-	<dependencies>
-		<dependency>
-			<groupId>ch.qos.cal10n</groupId>
-			<artifactId>cal10n-api</artifactId>
-		</dependency>  
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>ch.qos.cal10n.plugins</groupId>
-				<artifactId>maven-cal10n-plugin</artifactId>
-				<version>${project.version}</version>
-				<executions>
-					<execution>
-						<id>countries</id>
-						<phase>verify</phase>
-						<goals>
-							<goal>verify</goal>
-						</goals>
-            <configuration>
-              <enumTypes>
-                <enumType>ch.qos.cal10n.smoke.Countries</enumType>
-              </enumTypes>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<parent>
+		<groupId>ch.qos.cal10n</groupId>
+		<artifactId>cal10n-parent</artifactId>
+		<version>0.7.2</version>
+	</parent>
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>ch.qos.cal10n</groupId>
+	<artifactId>maven-cal10n-plugin-smoke</artifactId>
+	<packaging>jar</packaging>
+	<name>Compiler assisted localization library (CAL10N) - Maven Testing</name>
+
+	<dependencies>
+		<dependency>
+			<groupId>ch.qos.cal10n</groupId>
+			<artifactId>cal10n-api</artifactId>
+		</dependency>  
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>ch.qos.cal10n.plugins</groupId>
+				<artifactId>maven-cal10n-plugin</artifactId>
+				<version>${project.version}</version>
+				<executions>
+					<execution>
+						<id>countries</id>
+						<phase>verify</phase>
+						<goals>
+							<goal>verify</goal>
+						</goals>
+            <configuration>
+              <enumTypes>
+                <enumType>ch.qos.cal10n.smoke.Countries</enumType>
+              </enumTypes>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
 </project>
\ No newline at end of file
diff --git a/maven-cal10n-plugin-smoke/src/main/java/ch/qos/cal10n/smoke/Countries.java b/maven-cal10n-plugin-smoke/src/main/java/ch/qos/cal10n/smoke/Countries.java
index 2038552..c834d2a 100644
--- a/maven-cal10n-plugin-smoke/src/main/java/ch/qos/cal10n/smoke/Countries.java
+++ b/maven-cal10n-plugin-smoke/src/main/java/ch/qos/cal10n/smoke/Countries.java
@@ -1,17 +1,17 @@
-package ch.qos.cal10n.smoke;
-
-import ch.qos.cal10n.Locale;
-import ch.qos.cal10n.BaseName;
-import ch.qos.cal10n.LocaleData;
-
- at BaseName("countries")
- at LocaleData({
-  @Locale("en"),
-  @Locale("fr")
-  })
-public enum Countries {
-   CH, 
-   CN,
-   FR,
-   UK;
-}
+package ch.qos.cal10n.smoke;
+
+import ch.qos.cal10n.Locale;
+import ch.qos.cal10n.BaseName;
+import ch.qos.cal10n.LocaleData;
+
+ at BaseName("countries")
+ at LocaleData({
+  @Locale("en"),
+  @Locale("fr")
+  })
+public enum Countries {
+   CH, 
+   CN,
+   FR,
+   UK;
+}
diff --git a/maven-cal10n-plugin-smoke/src/main/java/ch/qos/cal10n/smoke/package.html b/maven-cal10n-plugin-smoke/src/main/java/ch/qos/cal10n/smoke/package.html
index 19504e7..140fd79 100644
--- a/maven-cal10n-plugin-smoke/src/main/java/ch/qos/cal10n/smoke/package.html
+++ b/maven-cal10n-plugin-smoke/src/main/java/ch/qos/cal10n/smoke/package.html
@@ -1,11 +1,11 @@
-<html>
-  <head>
-    <title></title>
-  </head>
-  
-  <body>
-  
-    <p>Smoke testing the maven plugin.
-    </p>
-  </body>
-</html>
+<html>
+  <head>
+    <title></title>
+  </head>
+  
+  <body>
+  
+    <p>Smoke testing the maven plugin.
+    </p>
+  </body>
+</html>
diff --git a/maven-cal10n-plugin-smoke/src/main/resources/countries_en.properties b/maven-cal10n-plugin-smoke/src/main/resources/countries_en.properties
index a47941d..b3ddfa5 100644
--- a/maven-cal10n-plugin-smoke/src/main/resources/countries_en.properties
+++ b/maven-cal10n-plugin-smoke/src/main/resources/countries_en.properties
@@ -1,4 +1,4 @@
-CH=Switzerland 
-CN=China
-FR=France
+CH=Switzerland 
+CN=China
+FR=France
 UK=United Kingdom
\ No newline at end of file
diff --git a/maven-cal10n-plugin-smoke/src/main/resources/countries_fr.properties b/maven-cal10n-plugin-smoke/src/main/resources/countries_fr.properties
index 62510fa..068f43a 100644
--- a/maven-cal10n-plugin-smoke/src/main/resources/countries_fr.properties
+++ b/maven-cal10n-plugin-smoke/src/main/resources/countries_fr.properties
@@ -1,4 +1,4 @@
-CH=Suisse 
-CN=Chine
-FR=France
-UK=Royaume Unis
+CH=Suisse 
+CN=Chine
+FR=France
+UK=Royaume Unis
diff --git a/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/ThisFirstClassLoader.java b/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/ThisFirstClassLoader.java
index 0e03c2f..b2789cd 100644
--- a/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/ThisFirstClassLoader.java
+++ b/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/ThisFirstClassLoader.java
@@ -1,94 +1,94 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.plugins;
-
-import java.net.URL;
-import java.net.URLClassLoader;
-
-/**
- * An almost trivial no fuss implementation of a class loader following the
- * child-first delegation model.
- * 
- * @author Ceki Gülcü
- */
-public class ThisFirstClassLoader extends URLClassLoader {
-
-  public ThisFirstClassLoader(URL[] urls) {
-    super(urls);
-  }
-
-  public ThisFirstClassLoader(URL[] urls, ClassLoader parent) {
-    super(urls, parent);
-  }
-
-  public void addURL(URL url) {
-    super.addURL(url);
-  }
-
-  @Override
-  public Class<?> loadClass(String name) throws ClassNotFoundException {
-    return loadClass(name, false);
-  }
-
-  /**
-   * We override the parent-first behavior established by java.lang.Classloader.
-   * 
-   * The implementation is surprisingly straightforward.
-   */
-  protected Class<?> loadClass(String name, boolean resolve)
-      throws ClassNotFoundException {
-
-    // Treating IMessageKeyVerifier as a special case is the whole point of the
-    // exercise.
-    if (name.equals("ch.qos.cal10n.verifier.IMessageKeyVerifier")) {
-      return super.loadClass(name, resolve);
-    }
-
-    // First, check if the class has already been loaded
-    Class<?> c = findLoadedClass(name);
-
-    // if not loaded, search the local (child) resources
-    if (c == null) {
-      try {
-        c = findClass(name);
-      } catch (ClassNotFoundException cnfe) {
-        // ignore
-      }
-    }
-
-    // if we could not find it, delegate to parent
-    // Note that we don't attempt to catch any ClassNotFoundException
-    if (c == null) {
-      if (getParent() != null) {
-        c = getParent().loadClass(name);
-      } else {
-        c = getSystemClassLoader().loadClass(name);
-      }
-    }
-
-    if (resolve) {
-      resolveClass(c);
-    }
-
-    return c;
-  }
-}
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.plugins;
+
+import java.net.URL;
+import java.net.URLClassLoader;
+
+/**
+ * An almost trivial no fuss implementation of a class loader following the
+ * child-first delegation model.
+ * 
+ * @author Ceki Gülcü
+ */
+public class ThisFirstClassLoader extends URLClassLoader {
+
+  public ThisFirstClassLoader(URL[] urls) {
+    super(urls);
+  }
+
+  public ThisFirstClassLoader(URL[] urls, ClassLoader parent) {
+    super(urls, parent);
+  }
+
+  public void addURL(URL url) {
+    super.addURL(url);
+  }
+
+  @Override
+  public Class<?> loadClass(String name) throws ClassNotFoundException {
+    return loadClass(name, false);
+  }
+
+  /**
+   * We override the parent-first behavior established by java.lang.Classloader.
+   * 
+   * The implementation is surprisingly straightforward.
+   */
+  protected Class<?> loadClass(String name, boolean resolve)
+      throws ClassNotFoundException {
+
+    // Treating IMessageKeyVerifier as a special case is the whole point of the
+    // exercise.
+    if (name.equals("ch.qos.cal10n.verifier.IMessageKeyVerifier")) {
+      return super.loadClass(name, resolve);
+    }
+
+    // First, check if the class has already been loaded
+    Class<?> c = findLoadedClass(name);
+
+    // if not loaded, search the local (child) resources
+    if (c == null) {
+      try {
+        c = findClass(name);
+      } catch (ClassNotFoundException cnfe) {
+        // ignore
+      }
+    }
+
+    // if we could not find it, delegate to parent
+    // Note that we don't attempt to catch any ClassNotFoundException
+    if (c == null) {
+      if (getParent() != null) {
+        c = getParent().loadClass(name);
+      } else {
+        c = getSystemClassLoader().loadClass(name);
+      }
+    }
+
+    if (resolve) {
+      resolveClass(c);
+    }
+
+    return c;
+  }
+}
diff --git a/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/VerifyMojo.java b/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/VerifyMojo.java
index 0dd07a9..584e668 100644
--- a/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/VerifyMojo.java
+++ b/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/VerifyMojo.java
@@ -1,197 +1,197 @@
-/*
- * Copyright (c) 2009 QOS.ch All rights reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package ch.qos.cal10n.plugins;
-
-import java.io.File;
-import java.lang.reflect.Constructor;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-
-import ch.qos.cal10n.Cal10nConstants;
-import ch.qos.cal10n.verifier.IMessageKeyVerifier;
-
-/**
- * Verifies resources bundles in various locales against an enumType
- * 
- * @goal verify
- * @phase verify
- * @requiresProject true
- */
-public class VerifyMojo extends AbstractMojo {
-
-  /**
-   * @parameter
-   * @required
-   */
-  private String[] enumTypes;
-
-  /**
-   * The directory for compiled classes.
-   * 
-   * @parameter expression="${project.build.outputDirectory}"
-   * @required
-   * @readonly
-   */
-  private File outputDirectory;
-
-  // direct dependencies of this project
-  /**
-   * 
-   * @parameter expression="${project.artifacts}"
-   * @required
-   * @readonly
-   */
-  private Set<Artifact> projectArtifacts;
-
-  /**
-   * @parameter expression="${localRepository}"
-   * @required
-   * @readonly
-   * @since 1.0
-   */
-  private ArtifactRepository localRepository;
-
-  public void execute() throws MojoExecutionException, MojoFailureException {
-
-    if (enumTypes == null) {
-      throw new MojoFailureException(Cal10nConstants.MISSING_ENUM_TYPES_MSG);
-    }
-    for (String enumTypeAsStr : enumTypes) {
-      IMessageKeyVerifier imcv = getMessageKeyVerifierInstance(enumTypeAsStr);
-      getLog()
-          .info(
-              "Checking all resource bundles for enum type [" + enumTypeAsStr
-                  + "]");
-      checkAllLocales(imcv);
-    }
-  }
-
-  public void checkAllLocales(IMessageKeyVerifier mcv)
-      throws MojoFailureException, MojoExecutionException {
-
-    String enumClassAsStr = mcv.getEnumTypeAsStr();
-
-    String[] localeNameArray = mcv.getLocaleNames();
-
-    if (localeNameArray == null || localeNameArray.length == 0) {
-      String errMsg = MessageFormat.format(
-          Cal10nConstants.MISSING_LD_ANNOTATION_MESSAGE, enumClassAsStr);
-      getLog().error(errMsg);
-      throw new MojoFailureException(errMsg);
-    }
-
-    boolean failure = false;
-    for (String localeName : localeNameArray) {
-      Locale locale = new Locale(localeName);
-      List<String> errorList = mcv.typeIsolatedVerify(locale);
-      if (errorList.size() == 0) {
-        String resouceBundleName = mcv.getBaseName();
-        getLog().info(
-            "SUCCESSFUL verification for resource bundle [" + resouceBundleName
-                + "] for locale [" + locale + "]");
-      } else {
-        failure = true;
-        getLog().error(
-            "FAILURE during verification of resource bundle for locale ["
-                + locale + "] enum class [" + enumClassAsStr + "]");
-        for (String s : errorList) {
-          getLog().error(s);
-        }
-      }
-    }
-    if (failure) {
-      throw new MojoFailureException("FAIL Verification of [" + enumClassAsStr
-          + "] keys.");
-    }
-  }
-
-  IMessageKeyVerifier getMessageKeyVerifierInstance(String enumClassAsStr)
-      throws MojoExecutionException {
-    String errMsg = "Failed to instantiate MessageKeyVerifier class";
-    try {
-      ThisFirstClassLoader thisFirstClassLoader = (ThisFirstClassLoader) buildClassLoader();
-      Class<?> mkvClass = Class.forName(
-          Cal10nConstants.MessageKeyVerifier_FQCN, true, thisFirstClassLoader);
-      Constructor<?> mkvCons = mkvClass.getConstructor(String.class);
-      IMessageKeyVerifier imcv = (IMessageKeyVerifier) mkvCons
-          .newInstance(enumClassAsStr);
-      return imcv;
-    } catch (ClassNotFoundException e) {
-      throw new MojoExecutionException(errMsg, e);
-    } catch (NoClassDefFoundError e) {
-      throw new MojoExecutionException(errMsg, e);
-    } catch (Exception e) {
-      throw new MojoExecutionException(errMsg, e);
-    }
-  }
-
-  ClassLoader buildClassLoader() {
-    ArrayList<URL> classpathURLList = new ArrayList<URL>();
-    classpathURLList.add(toURL(outputDirectory));
-    classpathURLList.addAll(getDirectDependencies());
-    ClassLoader parentCL = this.getClass().getClassLoader();
-    URL[] classpathURLArray = classpathURLList.toArray(new URL[] {});
-    return new ThisFirstClassLoader(classpathURLArray, parentCL);
-  }
-
-  List<URL> getDirectDependencies() {
-    ArrayList<URL> urlList = new ArrayList<URL>();
-    for (Artifact a : projectArtifacts) {
-      String pathOfArtifact = localRepository.getBasedir() + "/"
-          + localRepository.pathOf(a);
-      File artifactAsFile = new File(pathOfArtifact);
-      if (!artifactAsFile.exists()) {
-        getLog()
-            .error("Artifact [" + artifactAsFile + "] could not be located");
-      }
-      try {
-        URL url = artifactAsFile.toURI().toURL();
-        urlList.add(url);
-      } catch (MalformedURLException e) {
-        getLog().info("Failed to build URL", e);
-      }
-    }
-    return urlList;
-  }
-
-  URL toURL(File file) {
-    try {
-      return file.toURI().toURL();
-    } catch (MalformedURLException e) {
-      // this should never happen
-      getLog().error("Failed to convert file [" + file + "] to a URL", e);
-      return null;
-    }
-  }
-
+/*
+ * Copyright (c) 2009 QOS.ch All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package ch.qos.cal10n.plugins;
+
+import java.io.File;
+import java.lang.reflect.Constructor;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+
+import ch.qos.cal10n.Cal10nConstants;
+import ch.qos.cal10n.verifier.IMessageKeyVerifier;
+
+/**
+ * Verifies resources bundles in various locales against an enumType
+ * 
+ * @goal verify
+ * @phase verify
+ * @requiresProject true
+ */
+public class VerifyMojo extends AbstractMojo {
+
+  /**
+   * @parameter
+   * @required
+   */
+  private String[] enumTypes;
+
+  /**
+   * The directory for compiled classes.
+   * 
+   * @parameter expression="${project.build.outputDirectory}"
+   * @required
+   * @readonly
+   */
+  private File outputDirectory;
+
+  // direct dependencies of this project
+  /**
+   * 
+   * @parameter expression="${project.artifacts}"
+   * @required
+   * @readonly
+   */
+  private Set<Artifact> projectArtifacts;
+
+  /**
+   * @parameter expression="${localRepository}"
+   * @required
+   * @readonly
+   * @since 1.0
+   */
+  private ArtifactRepository localRepository;
+
+  public void execute() throws MojoExecutionException, MojoFailureException {
+
+    if (enumTypes == null) {
+      throw new MojoFailureException(Cal10nConstants.MISSING_ENUM_TYPES_MSG);
+    }
+    for (String enumTypeAsStr : enumTypes) {
+      IMessageKeyVerifier imcv = getMessageKeyVerifierInstance(enumTypeAsStr);
+      getLog()
+          .info(
+              "Checking all resource bundles for enum type [" + enumTypeAsStr
+                  + "]");
+      checkAllLocales(imcv);
+    }
+  }
+
+  public void checkAllLocales(IMessageKeyVerifier mcv)
+      throws MojoFailureException, MojoExecutionException {
+
+    String enumClassAsStr = mcv.getEnumTypeAsStr();
+
+    String[] localeNameArray = mcv.getLocaleNames();
+
+    if (localeNameArray == null || localeNameArray.length == 0) {
+      String errMsg = MessageFormat.format(
+          Cal10nConstants.MISSING_LD_ANNOTATION_MESSAGE, enumClassAsStr);
+      getLog().error(errMsg);
+      throw new MojoFailureException(errMsg);
+    }
+
+    boolean failure = false;
+    for (String localeName : localeNameArray) {
+      Locale locale = new Locale(localeName);
+      List<String> errorList = mcv.typeIsolatedVerify(locale);
+      if (errorList.size() == 0) {
+        String resouceBundleName = mcv.getBaseName();
+        getLog().info(
+            "SUCCESSFUL verification for resource bundle [" + resouceBundleName
+                + "] for locale [" + locale + "]");
+      } else {
+        failure = true;
+        getLog().error(
+            "FAILURE during verification of resource bundle for locale ["
+                + locale + "] enum class [" + enumClassAsStr + "]");
+        for (String s : errorList) {
+          getLog().error(s);
+        }
+      }
+    }
+    if (failure) {
+      throw new MojoFailureException("FAIL Verification of [" + enumClassAsStr
+          + "] keys.");
+    }
+  }
+
+  IMessageKeyVerifier getMessageKeyVerifierInstance(String enumClassAsStr)
+      throws MojoExecutionException {
+    String errMsg = "Failed to instantiate MessageKeyVerifier class";
+    try {
+      ThisFirstClassLoader thisFirstClassLoader = (ThisFirstClassLoader) buildClassLoader();
+      Class<?> mkvClass = Class.forName(
+          Cal10nConstants.MessageKeyVerifier_FQCN, true, thisFirstClassLoader);
+      Constructor<?> mkvCons = mkvClass.getConstructor(String.class);
+      IMessageKeyVerifier imcv = (IMessageKeyVerifier) mkvCons
+          .newInstance(enumClassAsStr);
+      return imcv;
+    } catch (ClassNotFoundException e) {
+      throw new MojoExecutionException(errMsg, e);
+    } catch (NoClassDefFoundError e) {
+      throw new MojoExecutionException(errMsg, e);
+    } catch (Exception e) {
+      throw new MojoExecutionException(errMsg, e);
+    }
+  }
+
+  ClassLoader buildClassLoader() {
+    ArrayList<URL> classpathURLList = new ArrayList<URL>();
+    classpathURLList.add(toURL(outputDirectory));
+    classpathURLList.addAll(getDirectDependencies());
+    ClassLoader parentCL = this.getClass().getClassLoader();
+    URL[] classpathURLArray = classpathURLList.toArray(new URL[] {});
+    return new ThisFirstClassLoader(classpathURLArray, parentCL);
+  }
+
+  List<URL> getDirectDependencies() {
+    ArrayList<URL> urlList = new ArrayList<URL>();
+    for (Artifact a : projectArtifacts) {
+      String pathOfArtifact = localRepository.getBasedir() + "/"
+          + localRepository.pathOf(a);
+      File artifactAsFile = new File(pathOfArtifact);
+      if (!artifactAsFile.exists()) {
+        getLog()
+            .error("Artifact [" + artifactAsFile + "] could not be located");
+      }
+      try {
+        URL url = artifactAsFile.toURI().toURL();
+        urlList.add(url);
+      } catch (MalformedURLException e) {
+        getLog().info("Failed to build URL", e);
+      }
+    }
+    return urlList;
+  }
+
+  URL toURL(File file) {
+    try {
+      return file.toURI().toURL();
+    } catch (MalformedURLException e) {
+      // this should never happen
+      getLog().error("Failed to convert file [" + file + "] to a URL", e);
+      return null;
+    }
+  }
+
 }
\ No newline at end of file
diff --git a/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/package.html b/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/package.html
index 1a26308..7fd4e38 100644
--- a/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/package.html
+++ b/maven-cal10n-plugin/src/main/java/ch/qos/cal10n/plugins/package.html
@@ -1,12 +1,12 @@
-<html>
-  <head>
-    <title></title>
-  </head>
-  
-  <body>
-  
-    <p>Maven plugin verifying that the codes defined in an enum type
-    match those in the corresponding resource bundles.
-    </p>
-  </body>
-</html>
+<html>
+  <head>
+    <title></title>
+  </head>
+  
+  <body>
+  
+    <p>Maven plugin verifying that the codes defined in an enum type
+    match those in the corresponding resource bundles.
+    </p>
+  </body>
+</html>
diff --git a/src/main/assembly/dist.xml b/src/main/assembly/dist.xml
index fd77704..9925f21 100644
--- a/src/main/assembly/dist.xml
+++ b/src/main/assembly/dist.xml
@@ -1,130 +1,130 @@
-<assembly>
-	<id>dist</id>
-	<formats>
-		<format>zip</format>
-		<format>tar.gz</format>
-	</formats>
-	<fileSets>
-		<!-- Module POMs -->
-		<fileSet>
-			<directory>cal10n-api/</directory>
-			<outputDirectory>cal10n-api/</outputDirectory>
-			<includes>
-				<include>
-					pom.xml
-				</include>
-			</includes>
-			<excludes>
-				<exclude>*.bak</exclude>
-			</excludes>
-		</fileSet>
- 
-		<fileSet>
-			<directory>cal10n-site/</directory>
-			<outputDirectory>cal10n-site/</outputDirectory>
-			<includes>
-				<include>
-					pom.xml
-				</include>
-			</includes>
-			<excludes>
-				<exclude>*.bak</exclude>
-			</excludes>
-		</fileSet>
-	
-    <fileSet>
-      <directory>maven-cal10n-plugin/</directory>
-      <outputDirectory>maven-cal10n-plugin</outputDirectory>
-			<includes>
-				<include>
-					pom.xml
-				</include>
-			</includes>
-			<excludes>
-				<exclude>*.bak</exclude>
-			</excludes>
-		</fileSet>
- 
-   <fileSet>
-      <directory>maven-cal10n-plugin-smoke</directory>
-      <outputDirectory>maven-cal10n-plugin-smoke</outputDirectory>
-			<includes>
-				<include>
-					pom.xml
-				</include>
-			</includes>
-			<excludes>
-				<exclude>*.bak</exclude>
-			</excludes>
-		</fileSet>
- 
-	<!-- Module Source directories -->
-		<fileSet>
-			<directory>cal10n-api/src/</directory>
-			<outputDirectory>cal10n-api/src/</outputDirectory>
-			<excludes>
-				<exclude>
-					test/output/
-				</exclude>
-			</excludes>
-		</fileSet>
-
-		<fileSet>
-			<directory>cal10n-site/src/</directory>
-			<outputDirectory>cal10n-site/src/</outputDirectory>
-		</fileSet>
-	
-		<fileSet>
-			<directory>maven-cal10n-plugin/src/</directory>
-			<outputDirectory>maven-cal10n-plugin/src/</outputDirectory>
-		</fileSet>
-
-		<fileSet>
-			<directory>maven-cal10n-plugin-smoke/src/</directory>
-			<outputDirectory>maven-cal10n-plugin-smoke/src/</outputDirectory>
-		</fileSet>
-		
-		<!-- Module JARs -->
-		<fileSet>
-			<directory>cal10n-api/target/</directory>
-			<outputDirectory>/</outputDirectory>
-			<includes>
-				<include>cal10n-api-${project.version}.jar</include>
-			</includes>
-		</fileSet>
-		<!-- Module Source JARs -->
-		<fileSet>
-			<directory>cal10n-api/target/</directory>
-			<outputDirectory>/</outputDirectory>
-			<includes>
-				<include>cal10n-api-${project.version}-sources.jar</include>
-			</includes>
-		</fileSet>
-				 
-
-		<!-- Website -->
-		<fileSet>
-			<directory>target/site</directory>
-			<outputDirectory>docs/</outputDirectory>
-      <excludes>
-        <exclude>dist/*</exclude>
-      </excludes>
-		</fileSet>
-		
-		<!-- Parent files -->
-		<fileSet>
-			<includes>
-				<include>src/</include>
-				<include>README*</include>
-				<include>LICENSE*</include>
-				<include>pom.xml</include>
-			</includes>
-			<excludes>
-				<exclude>*.bak</exclude>
-			</excludes>
-		</fileSet>
-
-	</fileSets>
-	
-
+<assembly>
+	<id>dist</id>
+	<formats>
+		<format>zip</format>
+		<format>tar.gz</format>
+	</formats>
+	<fileSets>
+		<!-- Module POMs -->
+		<fileSet>
+			<directory>cal10n-api/</directory>
+			<outputDirectory>cal10n-api/</outputDirectory>
+			<includes>
+				<include>
+					pom.xml
+				</include>
+			</includes>
+			<excludes>
+				<exclude>*.bak</exclude>
+			</excludes>
+		</fileSet>
+ 
+		<fileSet>
+			<directory>cal10n-site/</directory>
+			<outputDirectory>cal10n-site/</outputDirectory>
+			<includes>
+				<include>
+					pom.xml
+				</include>
+			</includes>
+			<excludes>
+				<exclude>*.bak</exclude>
+			</excludes>
+		</fileSet>
+	
+    <fileSet>
+      <directory>maven-cal10n-plugin/</directory>
+      <outputDirectory>maven-cal10n-plugin</outputDirectory>
+			<includes>
+				<include>
+					pom.xml
+				</include>
+			</includes>
+			<excludes>
+				<exclude>*.bak</exclude>
+			</excludes>
+		</fileSet>
+ 
+   <fileSet>
+      <directory>maven-cal10n-plugin-smoke</directory>
+      <outputDirectory>maven-cal10n-plugin-smoke</outputDirectory>
+			<includes>
+				<include>
+					pom.xml
+				</include>
+			</includes>
+			<excludes>
+				<exclude>*.bak</exclude>
+			</excludes>
+		</fileSet>
+ 
+	<!-- Module Source directories -->
+		<fileSet>
+			<directory>cal10n-api/src/</directory>
+			<outputDirectory>cal10n-api/src/</outputDirectory>
+			<excludes>
+				<exclude>
+					test/output/
+				</exclude>
+			</excludes>
+		</fileSet>
+
+		<fileSet>
+			<directory>cal10n-site/src/</directory>
+			<outputDirectory>cal10n-site/src/</outputDirectory>
+		</fileSet>
+	
+		<fileSet>
+			<directory>maven-cal10n-plugin/src/</directory>
+			<outputDirectory>maven-cal10n-plugin/src/</outputDirectory>
+		</fileSet>
+
+		<fileSet>
+			<directory>maven-cal10n-plugin-smoke/src/</directory>
+			<outputDirectory>maven-cal10n-plugin-smoke/src/</outputDirectory>
+		</fileSet>
+		
+		<!-- Module JARs -->
+		<fileSet>
+			<directory>cal10n-api/target/</directory>
+			<outputDirectory>/</outputDirectory>
+			<includes>
+				<include>cal10n-api-${project.version}.jar</include>
+			</includes>
+		</fileSet>
+		<!-- Module Source JARs -->
+		<fileSet>
+			<directory>cal10n-api/target/</directory>
+			<outputDirectory>/</outputDirectory>
+			<includes>
+				<include>cal10n-api-${project.version}-sources.jar</include>
+			</includes>
+		</fileSet>
+				 
+
+		<!-- Website -->
+		<fileSet>
+			<directory>target/site</directory>
+			<outputDirectory>docs/</outputDirectory>
+      <excludes>
+        <exclude>dist/*</exclude>
+      </excludes>
+		</fileSet>
+		
+		<!-- Parent files -->
+		<fileSet>
+			<includes>
+				<include>src/</include>
+				<include>README*</include>
+				<include>LICENSE*</include>
+				<include>pom.xml</include>
+			</includes>
+			<excludes>
+				<exclude>*.bak</exclude>
+			</excludes>
+		</fileSet>
+
+	</fileSets>
+	
+
 </assembly>
\ No newline at end of file
diff --git a/version.pl b/version.pl
index f8d8f55..5587b31 100644
--- a/version.pl
+++ b/version.pl
@@ -1,44 +1,44 @@
-
-if ($#ARGV < 1) {
-  print "Usage: version.pl VER FILE {FILE, FILE}\n";
-  exit;
-}
-
-$V=$ARGV[0];
-print "VER:'${V}'\r\n";
-shift(@ARGV);
-
-sub replace () {
-  my $filename = $_[0];
-
-  if(-s $filename) {
-    print "Processing [" . $filename . "]\r\n";
-
-    my $original = "$filename.original";
-    
-    rename($filename, $original);
-    open(OUT, ">$filename");
-    open(IN, "$original");
-    
-    my $hitCount=0;
-    while(<IN>) {
-      if($hitCount == 0 && /<version>.*<\/version>/) {
-        s/<version>.*<\/version>/<version>${V}<\/version>/;
-        $hitCount++;
-      } 
-      print OUT;
-    }
-    close(IN);
-    close(OUT);
-    unlink($original);
-  } else {
-    print "File [" . $filename . "] does not exist\r\n" 
-  }
-}
-
-foreach $ARG (@ARGV) {
-  do replace($ARG);
-}
-
-
-
+
+if ($#ARGV < 1) {
+  print "Usage: version.pl VER FILE {FILE, FILE}\n";
+  exit;
+}
+
+$V=$ARGV[0];
+print "VER:'${V}'\r\n";
+shift(@ARGV);
+
+sub replace () {
+  my $filename = $_[0];
+
+  if(-s $filename) {
+    print "Processing [" . $filename . "]\r\n";
+
+    my $original = "$filename.original";
+    
+    rename($filename, $original);
+    open(OUT, ">$filename");
+    open(IN, "$original");
+    
+    my $hitCount=0;
+    while(<IN>) {
+      if($hitCount == 0 && /<version>.*<\/version>/) {
+        s/<version>.*<\/version>/<version>${V}<\/version>/;
+        $hitCount++;
+      } 
+      print OUT;
+    }
+    close(IN);
+    close(OUT);
+    unlink($original);
+  } else {
+    print "File [" . $filename . "] does not exist\r\n" 
+  }
+}
+
+foreach $ARG (@ARGV) {
+  do replace($ARG);
+}
+
+
+

-----------------------------------------------------------------------

Summary of changes:
 .gitignore                                         |    8 +-
 LICENSE.txt                                        |   48 +-
 cal10n-api/LICENSE.txt                             |   48 +-
 cal10n-api/pom.xml                                 |   94 +-
 .../src/main/java/ch/qos/cal10n/BaseName.java      |  130 ++--
 .../main/java/ch/qos/cal10n/Cal10nConstants.java   |   56 +-
 .../main/java/ch/qos/cal10n/IMessageConveyor.java  |  154 ++--
 cal10n-api/src/main/java/ch/qos/cal10n/Locale.java |   86 +-
 .../src/main/java/ch/qos/cal10n/LocaleData.java    |   90 +-
 .../main/java/ch/qos/cal10n/MessageConveyor.java   |  262 +++---
 .../ch/qos/cal10n/MessageConveyorException.java    |   72 +-
 .../java/ch/qos/cal10n/MessageParameterObj.java    |  208 ++--
 .../src/main/java/ch/qos/cal10n/package.html       |   36 +-
 .../ch/qos/cal10n/util/AnnotationExtractor.java    |  210 ++--
 .../ch/qos/cal10n/util/CAL10NResourceBundle.java   |  228 ++--
 .../cal10n/util/CAL10NResourceBundleFinder.java    |  252 +++---
 .../src/main/java/ch/qos/cal10n/util/MiscUtil.java |  114 +-
 .../src/main/java/ch/qos/cal10n/util/Parser.java   |  260 +++---
 .../src/main/java/ch/qos/cal10n/util/Token.java    |  198 ++--
 .../main/java/ch/qos/cal10n/util/TokenStream.java  |  356 ++++----
 .../src/main/java/ch/qos/cal10n/util/package.html  |   32 +-
 .../java/ch/qos/cal10n/verifier/Cal10nError.java   |  202 ++--
 .../java/ch/qos/cal10n/verifier/ErrorFactory.java  |  102 +-
 .../qos/cal10n/verifier/IMessageKeyVerifier.java   |  156 ++--
 .../ch/qos/cal10n/verifier/MessageKeyVerifier.java |  362 ++++----
 .../main/java/ch/qos/cal10n/verifier/package.html  |   24 +-
 cal10n-api/src/main/resources/META-INF/MANIFEST.MF |   12 +-
 .../src/test/java/ch/qos/cal10n/AllCal10nTest.java |   70 +-
 .../java/ch/qos/cal10n/Cal10nTestConstants.java    |   12 +-
 .../ch/qos/cal10n/MessageConveyorPerftest.java     |  116 +-
 .../ch/qos/cal10n/MessageConveyorReloadTest.java   |  122 ++--
 .../java/ch/qos/cal10n/MessageConveyorTest.java    |  230 ++--
 .../src/test/java/ch/qos/cal10n/PackageTest.java   |   64 +-
 .../src/test/java/ch/qos/cal10n/sample/Colors.java |   74 +-
 .../test/java/ch/qos/cal10n/sample/Countries.java  |   78 +-
 .../test/java/ch/qos/cal10n/sample/Furnitures.java |   74 +-
 .../src/test/java/ch/qos/cal10n/sample/Host.java   |   30 +-
 .../test/java/ch/qos/cal10n/sample/Minimal.java    |   72 +-
 .../qos/cal10n/util/AnnotationExtractorTest.java   |   98 +-
 .../src/test/java/ch/qos/cal10n/util/Fruit.java    |   64 +-
 .../test/java/ch/qos/cal10n/util/MiscUtilTest.java |  106 +-
 .../test/java/ch/qos/cal10n/util/PackageTest.java  |   68 +-
 .../test/java/ch/qos/cal10n/util/ParserTest.java   |  156 ++--
 .../util/PropertyResourceBundleFinderTest.java     |  146 ++--
 .../cal10n/util/ResourceBundleEncodingTest.java    |  252 +++---
 .../java/ch/qos/cal10n/util/TokenStreamTest.java   |  184 ++--
 .../cal10n/verifier/MessageKeyVerifierTest.java    |  156 ++--
 .../verifier/MyAllInOneColorVerificationTest.java  |   98 +-
 .../cal10n/verifier/MyColorVerificationTest.java   |  110 +-
 .../java/ch/qos/cal10n/verifier/PackageTest.java   |   66 +-
 cal10n-api/src/test/resources/colors.properties    |    6 +-
 cal10n-api/src/test/resources/colors_en.properties |    4 +-
 cal10n-api/src/test/resources/colors_fr.properties |    4 +-
 .../src/test/resources/countries_en.properties     |   10 +-
 .../src/test/resources/countries_fr.properties     |    8 +-
 .../resources/encodingsISO8859/a_el_GR.properties  |    2 +-
 .../resources/encodingsUTF8/a_tr_TR.properties     |    2 +-
 .../src/test/resources/furnitures.properties       |    4 +-
 .../src/test/resources/furnitures_fr.properties    |    4 +-
 .../src/test/resources/parser/full.properties      |   40 +-
 .../src/test/resources/parser/medium.properties    |    6 +-
 .../src/test/resources/parser/smoke.properties     |    2 +-
 cal10n-site/LICENSE.txt                            |   48 +-
 cal10n-site/pom.xml                                |  116 +-
 cal10n-site/src/site/pages/bugreport.html          |  182 ++--
 cal10n-site/src/site/pages/codes.html              |  140 ++--
 cal10n-site/src/site/pages/css/_print.css          |   62 +-
 cal10n-site/src/site/pages/css/common.css          |  498 +++++-----
 cal10n-site/src/site/pages/css/prettify.css        |   54 +-
 cal10n-site/src/site/pages/css/screen.css          |  228 ++--
 cal10n-site/src/site/pages/documentation.html      |  108 +-
 cal10n-site/src/site/pages/download.html           |  126 ++--
 cal10n-site/src/site/pages/index.html              |  130 ++--
 cal10n-site/src/site/pages/license.html            |  140 ++--
 cal10n-site/src/site/pages/mailinglist.html        |  352 ++++----
 cal10n-site/src/site/pages/manual.html             | 1108 ++++++++++----------
 cal10n-site/src/site/pages/news.html               |  296 +++---
 cal10n-site/src/site/pages/repos.html              |  204 ++--
 cal10n-site/src/site/pages/templates/creative.js   |   66 +-
 cal10n-site/src/site/pages/templates/footer.js     |   28 +-
 cal10n-site/src/site/pages/templates/header.js     |   14 +-
 cal10n-site/src/site/pages/templates/left.js       |   34 +-
 cal10n-site/src/site/pages/templates/right.js      |   38 +-
 cal10n-site/src/site/pages/templates/setup.js      |   18 +-
 maven-cal10n-plugin-smoke/pom.xml                  |   94 +-
 .../main/java/ch/qos/cal10n/smoke/Countries.java   |   34 +-
 .../src/main/java/ch/qos/cal10n/smoke/package.html |   22 +-
 .../src/main/resources/countries_en.properties     |    6 +-
 .../src/main/resources/countries_fr.properties     |    8 +-
 .../qos/cal10n/plugins/ThisFirstClassLoader.java   |  188 ++--
 .../java/ch/qos/cal10n/plugins/VerifyMojo.java     |  392 ++++----
 .../main/java/ch/qos/cal10n/plugins/package.html   |   24 +-
 src/main/assembly/dist.xml                         |  258 +++---
 version.pl                                         |   88 +-
 94 files changed, 5721 insertions(+), 5721 deletions(-)
 mode change 100644 => 100755 cal10n-site/src/site/pages/templates/left.js


hooks/post-receive
-- 
Compiler assisted localization library


More information about the cal10n-dev mailing list