You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2013/07/25 16:51:57 UTC

svn commit: r1506993 - in /sis/branches/JDK6: ./ application/sis-webapp/ core/sis-build-helper/src/main/ant/ core/sis-build-helper/src/site/apt/ core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/ core/sis-metadata/src/main/java/org/apach...

Author: desruisseaux
Date: Thu Jul 25 14:51:57 2013
New Revision: 1506993

URL: http://svn.apache.org/r1506993
Log:
Merge from the JDK7 branch.

Added:
    sis/branches/JDK6/core/sis-build-helper/src/main/ant/
      - copied from r1506959, sis/branches/JDK7/core/sis-build-helper/src/main/ant/
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ArrayConverter.java
      - copied unchanged from r1506959, sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ArrayConverter.java
    sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java
      - copied, changed from r1506959, sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java
Removed:
    sis/branches/JDK6/core/sis-metadata/src/site/fml/faq.fml
    sis/branches/JDK6/src/site/apt/branches.apt
    sis/branches/JDK6/src/site/apt/code-format.apt
    sis/branches/JDK6/src/site/apt/develop.apt
    sis/branches/JDK6/src/site/apt/download.apt
    sis/branches/JDK6/src/site/fml/
Modified:
    sis/branches/JDK6/   (props changed)
    sis/branches/JDK6/KEYS
    sis/branches/JDK6/application/sis-webapp/pom.xml
    sis/branches/JDK6/core/sis-build-helper/src/site/apt/index.apt
    sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/TimePeriodBound.java
    sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
    sis/branches/JDK6/core/sis-metadata/src/site/apt/index.apt
    sis/branches/JDK6/core/sis-metadata/src/site/site.xml
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ConverterRegistry.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapWithSpecialCases.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/SpecializedIdentifier.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/setup/About.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
    sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ConverterRegistryTest.java
    sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java
    sis/branches/JDK6/ide-project/NetBeans/nbproject/project.xml
    sis/branches/JDK6/pom.xml
    sis/branches/JDK6/src/site/apt/index.apt
    sis/branches/JDK6/src/site/resources/css/site.css
    sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java
    sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java

Propchange: sis/branches/JDK6/
------------------------------------------------------------------------------
  Merged /sis/branches/JDK7:r1502492-1506959

Modified: sis/branches/JDK6/KEYS
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/KEYS?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/KEYS (original)
+++ sis/branches/JDK6/KEYS Thu Jul 25 14:51:57 2013
@@ -47,4 +47,63 @@ dTgTbK62ZnSjsnRYbgf0HdA+kW9n9XBMEHwgYk0q
 iEkEGBECAAkFAkdvL9QCGwwACgkQcPCcxrh2iEplXwCgraY3ELlDStqpJDSUzVsN
 rGuNiwsAoKz92ycEjcMnoLnX8AaPADdo1m/P
 =zEfO
------END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub   4096R/74383E9D 2013-07-24
+uid                  Martin Desruisseaux (Code signing key) <de...@apache.org>
+sig 3        74383E9D 2013-07-24  Martin Desruisseaux (Code signing key) <de...@apache.org>
+sub   4096R/E498164E 2013-07-24
+sig          74383E9D 2013-07-24  Martin Desruisseaux (Code signing key) <de...@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.13 (Darwin)
+
+mQINBFHvqcIBEAC3A4uREnOGEk/oUzFMEjvVpzTWUv4jEcZSYe85X26XMJIUaF5S
+8HNVP+ub5cD+nEQg/pW9ZFKO7K4dEsWNMkbsWN4Rs5Jd/mU+IMI8af6VtptIzvFS
+pzjjz+6PQhE1lkjj8hqssY8NiMMDbhOrI581tXAIWU44u0159Qv36op8u1k6gBs9
+7uwWXhL9CIUMrvHXQ8bYlYE0Tdq0x9Me8rPSUri7/0alXI7VShTv58ZgVHEdkd4w
+YdcKSjc+oMjB/Vr+ZR6eszLDVOgd6MfsD7glu9Igepeura64FZSo/tVndX02SBlk
+Grf4xIetzr93YNXnQmy3DNjJCA8cR4up0PS3hDaT/VoMpM/fKG3b3rNnKH0+p6s6
+akudbCBaWp0Y4IF+WMhXXQ1fGpDpg9pZxRNqAUFn4O+wYi1N1Ipyrs8LuP2br69P
+wTb/+qreab/ya8/moFNJAnmB9kVevXjqVG4Ua6kvxp9ArsI+xPXADH1FH5n0bgoC
+lT6UBO+Lav48oKyQXNjAay1TpDeWodsYW2XNq+DvbkBiUWgFa6n7KzRlTsS2ZBEB
+Djq+bNjt+5banhIe/4WQfjD8HeC//y3QVjCpzYqZIWfjzK3IEcUnnb8ryVz74//N
+GlxwRPcLVmfAHlcCCTRHlDtiXRe1+WG43yTNWx7Nf8cMxaTgIbLazuwBYQARAQAB
+tEBNYXJ0aW4gRGVzcnVpc3NlYXV4IChDb2RlIHNpZ25pbmcga2V5KSA8ZGVzcnVp
+c3NlYXV4QGFwYWNoZS5vcmc+iQI3BBMBCgAhBQJR76nCAhsDBQsJCAcDBRUKCQgL
+BRYCAwEAAh4BAheAAAoJENie86Z0OD6dVhkP/iNiTCCpMDEMdbItQHVePyiJo5TF
+V4OVqSKeD+LudFu1W+lUrvH12qBs4hRBn9X7jOAHEKomEbNXjAbxtM8hLm8nsVTD
+wiKFRs5mSx73YU6CZp4xfohITihud7fqjKaFVsFJHhye5/Y5HbRGxqjs5BgAmsGe
+1VzlUxyLQIDq5kNhupqSf4iGignkTG6AWkc/G554e72MNSQs+Pn5addkCFxcVYDA
+IvLslDqYKpeO+H5CZd4ErfgI479zOg4jigvGMpX1CmbKm6BlYN+qyQ55RqNPxkgR
+HvtR3QtPW+f15TgTA959uOhmG3hY/e2LA2PYZfgrfEuD6/F73O/t7F7BKLhLHM4e
+K2fU7lKKN75EuWBL4t5Jk/XpfhyyhhgC+nQSwpp/m+DilH6g+2dwUS0PNMLp1FL7
+v36TihFsY5KG4K6PF0x3HziJRNmAOihr+boWTIzYbpajnwMB3pssjXBAHh1gwVrp
+bv/03+xnwDl390mZ0pUaFqh+EmOb2SAESs509VYCpwmM40uXa7dtuzQQOjNYyaQf
+qSll3OsHv0jj7q9tfzmS06Pe37Fd82KeJWQ3cEq3yS6l0mdsruM7ad3i6KJffM+n
+QzQb8wJ9wGnLunmhmR8KfNgjXjUGSPjUDJbRGOtljiGj8PI+F+ai5Z8/nOqUnmCB
+yi/2Z2gmXP3Ab9/BuQINBFHvqcIBEADTmQbDA+vAVXO9jQhs5JFCBOPFJ7SrV4Pa
+9OWtEBQnXaRp5t7xGlCE4UeIGypXD36IETnrujeU4oleoiqIbhi9l/zJPwxfCMVN
+YJzLhRH264D1PFlAhoACK+h0gVUlMAU+uT9ZK2jpOxta/QIVI16qYkiQbfG/x7n2
+/JSvZM41A85Xgjcyo9YXGxuWClNKNOslQevv7caJFy9KKVC/9F7II7cPoC/pes5T
+QwM5MHEUzpDKy6pcy/LlkbkD50p/yMft8A8xf1k3PNz/WheDrR/bZU1R9xzfuzDJ
+d6RvXx3qK3LVnmhp916sOYGLTn8uumsiaSGafk+rhWCmIKIBTyNx2aJb/sygEAJ6
+SgWId6XkzmBcoIuqhg1B2UfqIYXIr22OeIawzhus2yruMBw6ihxJELwgRDdpiFXw
+3ZDtZoAncxrwWJH2MZjeitHz1qZwWoOxo/8D4iKP7o4i4pB6glVnyaXnoAC9Kzk8
+OREFKX/EBpXTNIpJ+QnbADMqzmiBV8RmF4WNLI+5S+n3CrZF8nCmxCfzh+Bt8yWg
+W+hf8RjHqJ3W83fJ2lrrtNZoAZxcAfljhsI537Y2iqt14ug52gIViEhP0yZjnofa
+i+QvzZuzUlYbn6ciu3/cAe+3mAqdt4DiEXvpsQhpvIWjJQg3OOvyjtDxNCIJJUIa
+6rDVSmhrOwARAQABiQIfBBgBCgAJBQJR76nCAhsMAAoJENie86Z0OD6dU4oQAIXy
+OhaCR+DrkeN0PIHmRH6PziXT3MYlW8/VZ+DDnUrXEjMcNK54AEVnU5zMBWDvbUc5
+NY/V6m7YSuLyMBt3VDHpbSOvCe+sGMf1REf3I5WEatCACX9d1YNo+QtXIs+XzpRB
+scB8hOlLvzeHCUw6hPyRIqLkBuGRHGz/oI0gU89AEjEa/sQmTQMgu5Kbvvx5dgkj
+IFau07qjsw/B0FhMD4TfSbvc63tYrP7fYq1MYA0RGoxSGQT3dKTobp9M22+Ad8oX
+3xOE1NhqdiK9hUstKlpMk9enx5ptLPsTIw4Ukq27pMCsvzX1K2XnjvZf0T7g70uT
+eN7oe3PMwrAfxJ6cGksO2KAqU+iBmQIJxtGDNtEvNW4+vsAQjwHEySSMWaBti/nZ
++2FEfHv+om8rviBqNPuNxyppd1PItdgEf3qr0CUHnzWxbM8zgDGHUWVx2tglFIX3
+e4Y+IxQJ7832aWU8IsRANJUMJNyVXsqa0KhZe8HiuQeiBTjJ7lTojMirIqol2Oo1
+iINiBWgWK097misxZJn+UEdqFy6QaSV+D4LfJLUNUlW95qKK3lwANajx+TMRKq/T
+pYIMUHvS5/iFiLqB2+356mstyfihcCNYHtItl5JoHuk70lgo++kXNXFqeioxmhLO
+fply+kduHJz3CtJhSQpzcPlbwXtyR4OkRTHWBCG/
+=rrNc
+-----END PGP PUBLIC KEY BLOCK-----

Modified: sis/branches/JDK6/application/sis-webapp/pom.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/application/sis-webapp/pom.xml?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/application/sis-webapp/pom.xml (original)
+++ sis/branches/JDK6/application/sis-webapp/pom.xml Thu Jul 25 14:51:57 2013
@@ -47,8 +47,8 @@
       <artifactId>georss-rome</artifactId>
       <version>0.9.8</version>
       <!-- We have to specify the version here because georss-rome is intentionally excluded from
-           the dependency management of the root pom.xml. The problem is that the artefact filename
-           is "georss-rome", but the <artefactId> element in its pom.xml declares "georss" without
+           the dependency management of the root pom.xml. The problem is that the artifact filename
+           is "georss-rome", but the <artifactId> element in its pom.xml declares "georss" without
            the "-rome" suffix, which causes some environments to complain about this inconsistency.
            Omitting the declaration from the root pom.xml limits the inconvenience to this "sis-webapp"
            module only. -->

Modified: sis/branches/JDK6/core/sis-build-helper/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-build-helper/src/site/apt/index.apt?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-build-helper/src/site/apt/index.apt [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-build-helper/src/site/apt/index.apt [UTF-8] Thu Jul 25 14:51:57 2013
@@ -29,13 +29,7 @@ Building Apache SIS
 
   Content:
 
-  * Javadoc taglets
-
-  * Localized resources compiler
-
-  * JAR files collector
-
-  * Pack200 bundles
+%{toc|fromDepth=2|toDepth=2}
 
 
 * Javadoc taglets
@@ -129,7 +123,7 @@ Building Apache SIS
     so execution of this plugin should be very cheap and consume few disk space.
 
   * Dependencies already present in the <<<target/binaries>>> directory are presumed stables and
-    are not overwritten. Only artefacts produced by the Maven build are unconditionally overwritten.
+    are not overwritten. Only artifacts produced by the Maven build are unconditionally overwritten.
 
   This plugin can be activated by the following fragment in the parent <<<pom.xml>>> file:
 
@@ -153,7 +147,7 @@ Building Apache SIS
 +-----------------------------------------------------
 
 
-* Pack200 bundles
+* Pack200 bundle
 
   To merges the binaries produced by the above step and compress them using Pack200,
   invoke the following from the command line. Do not forget the <<<--non-recursive>>>

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/TimePeriodBound.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/TimePeriodBound.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/TimePeriodBound.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/TimePeriodBound.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -37,7 +37,7 @@ import org.opengis.temporal.Instant;
  * @module
  */
 @XmlTransient
-abstract class TimePeriodBound {
+public abstract class TimePeriodBound {
     /**
      * Empty constructor for subclasses only.
      */

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -16,7 +16,6 @@
  */
 package org.apache.sis.metadata.iso;
 
-import java.util.UUID;
 import java.util.Collection;
 import java.util.logging.Logger;
 import java.io.Serializable;
@@ -28,11 +27,9 @@ import org.opengis.metadata.Identifier;
 import org.apache.sis.xml.IdentifierMap;
 import org.apache.sis.xml.IdentifierSpace;
 import org.apache.sis.xml.IdentifiedObject;
-import org.apache.sis.xml.ValueConverter;
 import org.apache.sis.metadata.MetadataStandard;
 import org.apache.sis.metadata.ModifiableMetadata;
 import org.apache.sis.internal.jaxb.IdentifierMapWithSpecialCases;
-import org.apache.sis.internal.jaxb.Context;
 import org.apache.sis.util.logging.Logging;
 import org.apache.sis.util.CharSequences;
 import org.apache.sis.util.ThreadSafe;
@@ -163,6 +160,10 @@ public class ISOMetadata extends Modifia
     @XmlAttribute  // Defined in "gco" as unqualified attribute.
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     private String getUUID() {
+        /*
+         * IdentifierMapWithSpecialCases will take care of converting UUID to String,
+         * or to return a previously stored String if it was an unparsable UUID.
+         */
         return isNullOrEmpty(identifiers) ? null : getIdentifierMap().get(IdentifierSpace.UUID);
     }
 
@@ -173,22 +174,11 @@ public class ISOMetadata extends Modifia
      * @throws IllegalArgumentException If the UUID is already assigned to an other object.
      */
     private void setUUID(String id) {
-        final Context context = Context.current();
-        final ValueConverter converter = Context.converter(context);
-        final UUID uuid;
-        try {
-            uuid = converter.toUUID(context, id);
-        } catch (IllegalArgumentException e) {
-            // IF we can not store the value as a UUID, store it as a String.
-            Context.warningOccured(context, this, ISOMetadata.class, "setUUID", e, false);
-            id = CharSequences.trimWhitespaces(id);
-            if (id != null && !id.isEmpty()) {
-                getIdentifierMap().put(IdentifierSpace.UUID, id);
-            }
-            return;
-        }
-        if (uuid != null) {
-            getIdentifierMap().putSpecialized(IdentifierSpace.UUID, uuid);
-        }
+        /*
+         * IdentifierMapWithSpecialCases will take care of converting the String to UUID if possible,
+         * or will store the value as a plain String if it can not be converted. In the later case, a
+         * warning will be emitted (logged or processed by listeners).
+         */
+        getIdentifierMap().put(IdentifierSpace.UUID, id);
     }
 }

Modified: sis/branches/JDK6/core/sis-metadata/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/site/apt/index.apt?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/site/apt/index.apt [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/site/apt/index.apt [UTF-8] Thu Jul 25 14:51:57 2013
@@ -28,7 +28,7 @@ Apache SIS Metadata
   of the metadata interfaces defined in GeoAPI, and a framework for handling those metadata through
   Java reflection.
 
-   * {{{./faq.html}Frequently Asked Questions}}
+   * {{{http://sis.apache.org/faq.html#metadata}Frequently Asked Questions}}
 
    * {{{https://geo-ide.noaa.gov/wiki/index.php?title=Category:ISO_19115}ISO 19115 wiki at NOAA}}
 

Modified: sis/branches/JDK6/core/sis-metadata/src/site/site.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/site/site.xml?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/site/site.xml (original)
+++ sis/branches/JDK6/core/sis-metadata/src/site/site.xml Thu Jul 25 14:51:57 2013
@@ -30,7 +30,7 @@
   <body>
     <menu name="Quick links">
       <item name="Module Javadoc"  href="apidocs/index.html"/>
-      <item name="FAQ"             href="faq.html"/>
+      <item name="FAQ"             href="http://sis.apache.org/faq.html#metadata"/>
       <item name="Apache SIS home" href="../index.html"/>
     </menu>
 

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -113,7 +113,7 @@ public final class Envelopes extends Sta
      * parsed} by the {@code GeneralEnvelope} constructor.
      *
      * @param  envelope The envelope to format.
-     * @return The envelope as a {@code BOX} or {@code BOX3D} in WKT format.
+     * @return This envelope as a {@code BOX} or {@code BOX3D} (most typical dimensions) element.
      *
      * @see #fromWKT(CharSequence)
      * @see org.apache.sis.io.wkt

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ConverterRegistry.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ConverterRegistry.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ConverterRegistry.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ConverterRegistry.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -20,6 +20,7 @@ import java.util.Map;
 import java.util.LinkedHashMap;
 import org.apache.sis.util.Debug;
 import org.apache.sis.util.Classes;
+import org.apache.sis.util.Numbers;
 import org.apache.sis.util.ThreadSafe;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.ObjectConverter;
@@ -479,6 +480,21 @@ public class ConverterRegistry {
                 put(key, converter);
                 return converter;
             }
+            /*
+             * Still no converter found. If the source and target classes are array classes,
+             * search a converter for their components.
+             */
+            final Class<?> sourceComponent = sourceClass.getComponentType();
+            if (sourceComponent != null) {
+                final Class<?> targetComponent = targetClass.getComponentType();
+                if (targetComponent != null) {
+                    converter = new ArrayConverter<S,T>(sourceClass, targetClass, find(
+                            Numbers.primitiveToWrapper(sourceComponent),
+                            Numbers.primitiveToWrapper(targetComponent)));
+                    put(key, converter);
+                    return converter;
+                }
+            }
         }
         throw new UnconvertibleObjectException(Errors.format(Errors.Keys.CanNotConvertFromType_2, sourceClass, targetClass));
     }

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapWithSpecialCases.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapWithSpecialCases.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapWithSpecialCases.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapWithSpecialCases.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -22,6 +22,7 @@ import java.util.Collection;
 import org.opengis.metadata.Identifier;
 import org.opengis.metadata.citation.Citation;
 import org.apache.sis.xml.IdentifierSpace;
+import org.apache.sis.xml.ValueConverter;
 import org.apache.sis.xml.XLink;
 
 // Related to JDK7
@@ -92,7 +93,9 @@ public final class IdentifierMapWithSpec
     /**
      * Sets the {@code xlink:href} value, which may be null. If an explicit {@code xlink:href}
      * identifier exists, it is removed before to set the new {@code href} in the {@link XLink}
-     * object.
+     * object. The intend is to give precedence to the {@link XLink#getHRef()} property in every
+     * cases where the {@code href} is parsable as a {@link URI}, and use the value associated
+     * to the {@code HREF} key only as a fallback when the string can not be parsed.
      */
     private URI setHRef(final URI href) {
         URI old = super.putSpecialized(IdentifierSpace.HREF, null);
@@ -175,35 +178,54 @@ public final class IdentifierMapWithSpec
 
     /**
      * {@inheritDoc}
+     *
+     * <p>If the given {@code authority} is {@code HREF} and if the given string is parsable as a {@link URI},
+     * then this method will actually store the value as the {@link XLink#getHRef()} property of the {@code XLink}
+     * associated to the {@code XLINK} key. Only if the given string can not be parsed, then the value is stored
+     * <cite>as-is</cite> under the {@code HREF} key.</p>
      */
     @Override
     public String put(final Citation authority, final String code)
             throws UnsupportedOperationException
     {
+        final Context   context;
+        final Object    removed;
+        final Class<?>  type;
         final Exception exception;
         switch (specialCase(authority)) {
             default: {
                 return super.put(authority, code);
             }
             case NonMarshalledAuthority.HREF: {
-                URI id = null;
-                if (code != null) try {
-                    id = new URI(code);
-                } catch (URISyntaxException e) {
-                    exception = e;
-                    break;
+                URI uri = null;
+                if (code != null) {
+                    context = Context.current();
+                    final ValueConverter converter = Context.converter(context);
+                    try {
+                        uri = converter.toURI(context, code);
+                    } catch (URISyntaxException e) {
+                        exception = e;
+                        removed = setHRef(null);
+                        type = URI.class;
+                        break;
+                    }
                 }
                 final String old = getUnspecialized(authority);
-                id = setHRef(id);
-                return (id != null) ? id.toString() : old;
+                uri = setHRef(uri);
+                return (uri != null) ? uri.toString() : old;
             }
         }
-        SpecializedIdentifier.parseFailure(this, exception);
-        return super.put(authority, code);
+        SpecializedIdentifier.parseFailure(context, this, code, type, exception);
+        final String old = super.put(authority, code);
+        return (old == null && removed != null) ? removed.toString() : old;
     }
 
     /**
      * {@inheritDoc}
+     *
+     * <p>If the given {@code authority} is {@code HREF}, then this method will actually store the value
+     * as the {@link XLink#getHRef()} property of the {@code XLink} associated to the {@code XLINK} key.
+     * The previous {@code HREF} value, if any, is discarded.</p>
      */
     @Override
     @SuppressWarnings("unchecked")
@@ -211,8 +233,12 @@ public final class IdentifierMapWithSpec
             throws UnsupportedOperationException
     {
         switch (specialCase(authority)) {
-            default: return super.putSpecialized(authority, value);
-            case NonMarshalledAuthority.HREF: return (T) setHRef((URI)  value);
+            default: {
+                return super.putSpecialized(authority, value);
+            }
+            case NonMarshalledAuthority.HREF: {
+                return (T) setHRef((URI) value);
+            }
         }
     }
 }

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/SpecializedIdentifier.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/SpecializedIdentifier.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/SpecializedIdentifier.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/SpecializedIdentifier.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -20,12 +20,16 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.UUID;
 import java.io.Serializable;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
 import org.opengis.metadata.Identifier;
 import org.opengis.metadata.citation.Citation;
 import org.apache.sis.xml.XLink;
 import org.apache.sis.xml.IdentifierMap;
 import org.apache.sis.xml.IdentifierSpace;
+import org.apache.sis.xml.ValueConverter;
 import org.apache.sis.util.Debug;
+import org.apache.sis.util.resources.Messages;
 import org.apache.sis.internal.util.Citations;
 
 // Related to JDK7
@@ -96,36 +100,35 @@ public final class SpecializedIdentifier
      */
     static Identifier parse(final IdentifierMap source, final Citation authority, final String code) {
         if (authority instanceof NonMarshalledAuthority) {
-            switch (((NonMarshalledAuthority) authority).ordinal) {
+            final int ordinal = ((NonMarshalledAuthority) authority).ordinal;
+            switch (ordinal) {
                 case NonMarshalledAuthority.ID: {
                     return new SpecializedIdentifier<String>(IdentifierSpace.ID, code);
                 }
                 case NonMarshalledAuthority.UUID: {
+                    final Context context = Context.current();
+                    final ValueConverter converter = Context.converter(context);
                     try {
-                        return new SpecializedIdentifier<UUID>(IdentifierSpace.UUID, UUID.fromString(code));
+                        return new SpecializedIdentifier<UUID>(IdentifierSpace.UUID, converter.toUUID(context, code));
                     } catch (IllegalArgumentException e) {
-                        parseFailure(source, e);
+                        parseFailure(context, source, code, UUID.class, e);
                         break;
                     }
                 }
-                case NonMarshalledAuthority.HREF: {
-                    final URI href;
-                    try {
-                        href = new URI(code);
-                    } catch (URISyntaxException e) {
-                        parseFailure(source, e);
-                        break;
-                    }
-                    return new SpecializedIdentifier<URI>(IdentifierSpace.HREF, href);
-                }
+                case NonMarshalledAuthority.HREF:
                 case NonMarshalledAuthority.XLINK: {
+                    final Context context = Context.current();
+                    final ValueConverter converter = Context.converter(context);
                     final URI href;
                     try {
-                        href = new URI(code);
+                        href = converter.toURI(context, code);
                     } catch (URISyntaxException e) {
-                        parseFailure(source, e);
+                        parseFailure(context, source, code, URI.class, e);
                         break;
                     }
+                    if (ordinal == NonMarshalledAuthority.HREF) {
+                        return new SpecializedIdentifier<URI>(IdentifierSpace.HREF, href);
+                    }
                     final XLink xlink = new XLink();
                     xlink.setHRef(href);
                     return new SpecializedIdentifier<XLink>(IdentifierSpace.XLINK, xlink);
@@ -139,10 +142,25 @@ public final class SpecializedIdentifier
      * Invoked by {@link #parse(Citation,String)} when a string can not be parsed.
      * This is considered a non-fatal error, because the parse method can fallback
      * on the generic {@link IdentifierMapEntry} in such cases.
-     */
-    static void parseFailure(final IdentifierMap source, final Exception e) {
-        // IdentifierMap.put(Citation,String) is the public facade.
-        Context.warningOccured(Context.current(), source, IdentifierMap.class, "put", e, true);
+     *
+     * <p>This method assumes that {@link IdentifierMap#put(Citation, String)} is
+     * the public API by which this method has been invoked.</p>
+     *
+     * @param context The marshalling context, or {@code null} if none.
+     * @param source  The object to declare as the source of the warning.
+     * @param value   The value that we failed to parse.
+     * @param type    The target type of the parsing process.
+     * @param cause   The exception that occurred during the parsing process.
+     */
+    static void parseFailure(final Context context, final IdentifierMap source,
+            final String value, final Class<?> type, final Exception cause)
+    {
+        final Messages resources = Messages.getResources(context != null ? context.getLocale() : null);
+        final LogRecord record = resources.getLogRecord(Level.WARNING, Messages.Keys.UnparsableValueStoredAsText_2, type, value);
+        record.setSourceClassName(IdentifierMap.class.getCanonicalName());
+        record.setSourceMethodName("put");
+        record.setThrown(cause);
+        Context.warningOccured(context, source, record);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -52,13 +52,13 @@ import org.apache.sis.internal.jaxb.Spec
  */
 final class ObjectReference {
     /**
-     * A URN to an external resources, or to an other part of a XML document, or an identifier.
+     * A unique identifier to an external resources, or to an other part of a XML document.
      * The {@code uuidref} attribute is used to refer to an XML element that has a corresponding
      * {@code uuid} attribute.
      *
      * @see <a href="http://www.schemacentral.com/sc/niem21/a-uuidref-1.html">Usage of uuidref</a>
      */
-    String anyUUID;
+    UUID uuid;
 
     /**
      * The {@code xlink} attributes, or {@code null} if none.
@@ -66,11 +66,6 @@ final class ObjectReference {
     XLink xlink;
 
     /**
-     * The parsed value of {@link #anyUUID}, computed when first needed.
-     */
-    private transient UUID uuid;
-
-    /**
      * Creates an initially empty object reference.
      */
     ObjectReference() {
@@ -82,22 +77,9 @@ final class ObjectReference {
      * @see ReferenceResolver#canSubstituteByReference(MarshalContext, Class, Object, UUID)
      * @see ReferenceResolver#canSubstituteByReference(MarshalContext, Class, Object, XLink)
      */
-    ObjectReference(final UUID uuid, final String anyUUID, final XLink link) {
-        this.uuid    = uuid;
-        this.anyUUID = anyUUID;
-        this.xlink   = link;
-    }
-
-    /**
-     * Parses the given string as a UUID.
-     *
-     * @param  context The marshalling context, or {@code null} if none.
-     * @param  anyUUID The string to parse, or {@code null}.
-     * @return The parsed UUID, or {@code null}.
-     * @throws IllegalArgumentException If {@code anyUUID} can not be parsed.
-     */
-    static UUID toUUID(final Context context, final String anyUUID) throws IllegalArgumentException {
-        return (anyUUID != null) ? Context.converter(context).toUUID(context, anyUUID) : null;
+    ObjectReference(final UUID uuid, final XLink link) {
+        this.uuid  = uuid;
+        this.xlink = link;
     }
 
     /**
@@ -105,19 +87,15 @@ final class ObjectReference {
      * declared in this {@code ObjectReference}. If the given metadata object is non-null,
      * assigns to that object the identifiers declared in this {@code ObjectReference}.
      *
-     * <p>This method is invoked at unmarshalling time.</p>
+     * <p>This method is invoked at unmarshalling time by {@link PropertyType#resolve(Context)}.</p>
      *
      * @param  <T>       The compile-time type of the {@code type} argument.
      * @param  context   The marshalling context, or {@code null} if none.
      * @param  type      The expected type of the metadata object.
      * @param  metadata  The metadata object, or {@code null}.
      * @return A metadata object for the identifiers, or {@code null}
-     * @throws IllegalArgumentException If the {@link #anyUUID} field can not be parsed.
      */
-    final <T> T resolve(final Context context, final Class<T> type, T metadata) throws IllegalArgumentException {
-        if (uuid == null) {
-            uuid = toUUID(context, anyUUID);
-        }
+    final <T> T resolve(final Context context, final Class<T> type, T metadata) {
         if (metadata == null) {
             final ReferenceResolver resolver = Context.resolver(context);
             if ((uuid  == null || (metadata = resolver.resolve(context, type, uuid )) == null) &&

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -154,22 +154,37 @@ public abstract class PropertyType<Value
             }
         }
         if (metadata instanceof IdentifiedObject) {
+            /*
+             * Get the identifiers as full UUID or XLink objects. We do not use the more permissive methods
+             * working with arbitrary strings -- e.g. map.get(IdentifierSpace.HREF) -- because we are going
+             * to use those values for marshalling REFERENCES to an externally-defined metadata object, not
+             * for declaring the attributes to marshal together with the metadata. Since references REPLACE
+             * the original metadata object, we are better to ensure that they are well formed - in case of
+             * doubt, we are better to marshal the full object. We are not loosing information since in the
+             * later case, the identifiers will be marshalled as Strings by ISOMetadata. Example:
+             *
+             *   <gmd:CI_Citation>
+             *     <gmd:series uuidref="f8f5fcb1-d57b-4013-b3a4-4eaa40df6dcf">      ☚ marshalled by this
+             *       <gmd:CI_Series uuid="f8f5fcb1-d57b-4013-b3a4-4eaa40df6dcf">    ☚ marshalled by ISOMetadata
+             *         ...
+             *       </gmd:CI_Series>
+             *     </gmd:series>
+             *   </gmd:CI_Citation>
+             *
+             * We do not try to parse UUID or XLink objects from String because it should be the job of
+             * org.apache.sis.internal.jaxb.IdentifierMapWithSpecialCases.put(Citation, String).
+             */
             final IdentifierMap map = ((IdentifiedObject) metadata).getIdentifierMap();
             XLink  link = map.getSpecialized(IdentifierSpace.XLINK);
             UUID   uuid = map.getSpecialized(IdentifierSpace.UUID);
-            String anyUUID = (uuid != null) ? uuid.toString() : map.get(IdentifierSpace.UUID);
-            if (anyUUID != null || link != null) {
+            if (uuid != null || link != null) {
                 final Context           context  = Context.current();
                 final ReferenceResolver resolver = Context.resolver(context);
                 final Class<BoundType>  type     = getBoundType();
-                if (uuid == null) {
-                    uuid = ObjectReference.toUUID(context, anyUUID); // May still null.
-                }
                 /*
                  * Check if the user gives us the permission to use reference to those identifiers.
-                 * If not, forget them. Information will actually not be lost, since the same identifiers
-                 * will be provided by private methods in ISOMetadata. If we do nott clear the identifiers
-                 * here, they would appear twice in the XML output.
+                 * If not, forget them in order to avoid marshalling the identifiers twice (see the
+                 * example in the above comment).
                  */
                 if (uuid != null && !resolver.canSubstituteByReference(context, type, metadata, uuid)) {
                     uuid = null;
@@ -178,7 +193,7 @@ public abstract class PropertyType<Value
                     link = null;
                 }
                 if (uuid != null || link != null) {
-                    reference = new ObjectReference(uuid, anyUUID, link);
+                    reference = new ObjectReference(uuid, link);
                 }
             }
         }
@@ -271,24 +286,26 @@ public abstract class PropertyType<Value
     @XmlAttribute(name = "uuidref")  // Defined in "gco" as unqualified attribute.
     public final String getUUIDREF() {
         final ObjectReference ref = reference(false);
-        return (ref != null) ? ref.anyUUID : null;
+        return (ref != null) ? toString(ref.uuid) : null;
     }
 
     /**
      * Sets the {@code uuidref} attribute value.
      *
-     * @param uuid The new attribute value.
+     * @param  uuid The new attribute value.
+     * @throws IllegalArgumentException If the given UUID can not be parsed.
      * @category gco:ObjectReference
      */
-    public final void setUUIDREF(final String uuid) {
-        reference(true).anyUUID = uuid;
+    public final void setUUIDREF(final String uuid) throws IllegalArgumentException {
+        final Context context = Context.current();
+        reference(true).uuid = Context.converter(context).toUUID(context, uuid);
     }
 
     /**
      * Returns the given URI as a string, or returns {@code null} if the given argument is null.
      */
-    private static String toString(final Object uri) {
-        return (uri != null) ? uri.toString() : null;
+    private static String toString(final Object text) {
+        return (text != null) ? text.toString() : null;
     }
 
     /**
@@ -516,10 +533,9 @@ public abstract class PropertyType<Value
      * If the {@linkplain #metadata} is still null, tries to resolve it using UUID, XLink
      * or NilReason information. This method is invoked at unmarshalling time.
      *
-     * @throws URISyntaxException If a URI can not be parsed.
-     * @throws IllegalArgumentException If the UUID can not be parsed.
+     * @throws URISyntaxException If a nil reason is present and can not be parsed.
      */
-    final BoundType resolve(final Context context) throws URISyntaxException, IllegalArgumentException {
+    final BoundType resolve(final Context context) throws URISyntaxException {
         final ObjectReference ref = reference(false);
         if (ref != null) {
             metadata = ref.resolve(context, getBoundType(), metadata);

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -81,7 +81,7 @@ public final class LocalizedParseExcepti
 
     /**
      * Constructs a {@code ParseException} with a message formatted from the given resource key
-     * and unparseable string. This convenience constructor fetches the word starting at the error
+     * and unparsable string. This convenience constructor fetches the word starting at the error
      * index, and uses that word as the single argument associated to the resource key.
      *
      * @param locale      The locale for {@link #getLocalizedMessage()}.

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/setup/About.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/setup/About.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/setup/About.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/setup/About.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -536,7 +536,7 @@ pathTree:   for (int j=0; ; j++) {
 
     /**
      * If a file path in the given node or any children follow the Maven pattern, remove the
-     * artefact name and version numbers redundancies in order to make the name more compact.
+     * artifact name and version numbers redundancies in order to make the name more compact.
      * For example this method replaces {@code "org/opengis/geoapi/3.0.0/geoapi-3.0.0.jar"}
      * by {@code "org/opengis/(…)/geoapi-3.0.0.jar"}.
      */

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -614,7 +614,7 @@ public final class Numbers extends Stati
      * @return The value object, or {@code null} if {@code value} was null.
      * @throws IllegalArgumentException if {@code type} is not a recognized type.
      * @throws NumberFormatException if {@code type} is a subclass of {@link Number} and the
-     *         string value is not parseable as a number of the specified type.
+     *         string value is not parsable as a number of the specified type.
      */
     @SuppressWarnings("unchecked")
     public static <T> T valueOf(final String value, final Class<T> type)

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -74,6 +74,12 @@ public final class Messages extends Inde
          * Property “{0}” is hidden by “{1}”.
          */
         public static final int PropertyHiddenBy_2 = 3;
+
+        /**
+         * Can not parse “{1}” as an instance of {0}. The value is stored as plain text instead, but
+         * will be ignored by some processing.
+         */
+        public static final int UnparsableValueStoredAsText_2 = 4;
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties [ISO-8859-1] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties [ISO-8859-1] Thu Jul 25 14:51:57 2013
@@ -18,3 +18,4 @@ ChangedContainerCapacity_2      = Change
 DiscardedExclusiveProperty_2    = Property \u201c{0}\u201d has been discarded in favor of \u201c{1}\u201d, because those two properties are mutually exclusive.
 PropertyHiddenBy_2              = Property \u201c{0}\u201d is hidden by \u201c{1}\u201d.
 LocalesDiscarded                = Text were discarded for some locales.
+UnparsableValueStoredAsText_2   = Can not parse \u201c{1}\u201d as an instance of {0}. The value is stored as plain text instead, but will be ignored by some processing.

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties [ISO-8859-1] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties [ISO-8859-1] Thu Jul 25 14:51:57 2013
@@ -18,3 +18,4 @@ ChangedContainerCapacity_2      = Change
 DiscardedExclusiveProperty_2    = La propri\u00e9t\u00e9 \u201c{0}\u201d a \u00e9t\u00e9 \u00e9cart\u00e9e en faveur de \u201c{1}\u201d, parce que ces deux propri\u00e9t\u00e9s sont mutuellement exclusives.
 PropertyHiddenBy_2              = La propri\u00e9t\u00e9 \u201c{0}\u201d est masqu\u00e9e par \u201c{1}\u201d.
 LocalesDiscarded                = Des textes ont \u00e9t\u00e9 ignor\u00e9s pour certaines langues.
+UnparsableValueStoredAsText_2   = La valeur \u201c{1}\u201d ne peut pas \u00eatre interpr\u00e9t\u00e9e comme une instance de {0}. Elle est donc m\u00e9moris\u00e9e sous sa forme textuelle, mais sera ignor\u00e9e par certains traitements.

Copied: sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java (from r1506959, sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java?p2=sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java&p1=sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java&r1=1506959&r2=1506993&rev=1506993&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -37,7 +37,7 @@ public final strictfp class ArrayConvert
      * The types need to be specified because we want to test wrapper and primitive types.
      */
     private static <S,T> ArrayConverter<S,T> create(final Class<S> sourceClass, final Class<T> targetClass) {
-        return new ArrayConverter<>(sourceClass, targetClass, new NumberConverter<>(Integer.class, Double.class));
+        return new ArrayConverter<S,T>(sourceClass, targetClass, new NumberConverter<Integer,Double>(Integer.class, Double.class));
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ConverterRegistryTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ConverterRegistryTest.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ConverterRegistryTest.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ConverterRegistryTest.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -36,7 +36,7 @@ import static org.apache.sis.test.Assert
  *
  * <p>This test shall not perform any conversion neither serialization. It shall only ensures
  * that the converters are properly registered. This is because some {@link SystemConverter}
- * methods may query back {@link HeuristicRegistry#SYSTEM} while we want to keep the tests
+ * methods may query back {@link SystemRegistry#INSTANCE} while we want to keep the tests
  * isolated.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
@@ -335,4 +335,31 @@ public final strictfp class ConverterReg
          */
         assertAllConvertersAreRegistered();
     }
+
+    /**
+     * Tests automatic creation of a converter for an array of values.
+     */
+    @Test
+    public void testArrayOfWrapperTypes() {
+        register(new NumberConverter<Float,Double>(Float.class, Double.class));
+        final ObjectConverter<?,?> converter = registry.find(Float[].class, Double[].class);
+        assertInstanceOf("Array conversions", ArrayConverter.class, converter);
+        assertEquals(Float [].class, converter.getSourceClass());
+        assertEquals(Double[].class, converter.getTargetClass());
+        assertSame("Converter shall be cached.", converter, registry.find(Float[].class, Double[].class));
+    }
+
+    /**
+     * Tests automatic creation of a converter for an array of values.
+     */
+    @Test
+    @DependsOnMethod("testArrayOfWrapperTypes")
+    public void testArrayOfPrimitiveTypes() {
+        register(new NumberConverter<Float,Double>(Float.class, Double.class));
+        final ObjectConverter<?,?> converter = registry.find(float[].class, double[].class);
+        assertInstanceOf("Array conversions", ArrayConverter.class, converter);
+        assertEquals(float [].class, converter.getSourceClass());
+        assertEquals(double[].class, converter.getTargetClass());
+        assertSame("Converter shall be cached.", converter, registry.find(float[].class, double[].class));
+    }
 }

Modified: sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -104,6 +104,7 @@ import org.junit.BeforeClass;
     org.apache.sis.internal.converter.StringConverterTest.class,
     org.apache.sis.internal.converter.PathConverterTest.class,
     org.apache.sis.internal.converter.FallbackConverterTest.class,
+    org.apache.sis.internal.converter.ArrayConverterTest.class,
     org.apache.sis.internal.converter.ConverterRegistryTest.class,
     org.apache.sis.internal.converter.SystemRegistryTest.class,
     org.apache.sis.internal.converter.NumberConverterTest.class, // Shall be after SystemRegistryTest.

Modified: sis/branches/JDK6/ide-project/NetBeans/nbproject/project.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/ide-project/NetBeans/nbproject/project.xml?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/ide-project/NetBeans/nbproject/project.xml (original)
+++ sis/branches/JDK6/ide-project/NetBeans/nbproject/project.xml Thu Jul 25 14:51:57 2013
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
 <project xmlns="http://www.netbeans.org/ns/project/1">
     <type>org.netbeans.modules.java.j2seproject</type>
     <configuration>
@@ -63,6 +61,7 @@
             <word>monospaced</word>
             <word>namespace</word>
             <word>namespaces</word>
+            <word>parsable</word>
             <word>timezone</word>
             <word>Unicode</word>
             <word>uninstall</word>
@@ -70,6 +69,7 @@
             <word>unmarshaller</word>
             <word>unmarshallers</word>
             <word>unmarshalling</word>
+            <word>unparsable</word>
             <word>whitespaces</word>
         </spellchecker-wordlist>
     </configuration>

Modified: sis/branches/JDK6/pom.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/pom.xml?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/pom.xml (original)
+++ sis/branches/JDK6/pom.xml Thu Jul 25 14:51:57 2013
@@ -453,7 +453,7 @@ Apache SIS is a free software, Java lang
       <plugin>
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-bundle-plugin</artifactId>
-        <version>2.3.7</version>
+        <version>2.4.0</version>
         <extensions>true</extensions>
         <configuration>
           <instructions>
@@ -543,7 +543,7 @@ Apache SIS is a free software, Java lang
         <plugin>
           <groupId>org.mortbay.jetty</groupId>
           <artifactId>jetty-maven-plugin</artifactId>
-          <version>8.0.0.M2</version>
+          <version>8.0.1.v20110908</version>
         </plugin>
       </plugins>
     </pluginManagement>
@@ -683,7 +683,7 @@ Apache SIS is a free software, Java lang
   <!-- ==============================================================
          Additional repositories from which to download artifacts.
          The parent pom.xml already declares the apache.snapshots
-         repository for library artefacts. But we also need it for
+         repository for library artifacts. But we also need it for
          Maven plugins in order to download sis-build-helper when
          the user did not built it himself.
        ============================================================== -->

Modified: sis/branches/JDK6/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/src/site/apt/index.apt?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/src/site/apt/index.apt [UTF-8] (original)
+++ sis/branches/JDK6/src/site/apt/index.apt [UTF-8] Thu Jul 25 14:51:57 2013
@@ -40,44 +40,17 @@ The Apache SIS™ library
   applicable to simple imagery as to many dimensional data structures.
 
   SIS is a project of the {{{http://www.apache.org}Apache Software Foundation}}.
-
-
-* Using SIS
-
-  SIS requires a Java 6 Runtime Environment.
-  The latest release is <<<0.3>>>.
-  The version under development is <<<0.4-SNAPSHOT>>>.
-
-  The source code can be checked out anonymously with SubVersion from
-  {{{http://svn.apache.org/repos/asf/sis/trunk}http://svn.apache.org/repos/asf/sis/trunk}},
-  or can be cloned with Git from {{{git://git.apache.org/sis.git}git://git.apache.org/sis.git}}.
+  The project home is {{http://sis.apache.org}}.
 
 
 * Documentation
 
 ** User documentation
 
-    * {{{./download.html}Downloading binaries}}
-
     * {{{./apidocs/index.html}Aggregated Javadoc}}
 
     * Developer Guide (English - translation to be provided later) ({{{./book/fr.xhtml}Français}})
 
-    * {{{http://cwiki.apache.org/confluence/display/SIS}SIS Wiki}}
-
-
-** SIS developer documentation
-
-    * {{{./develop.html}Developing Apache SIS}}
-
-    * {{{./branches.html}Branches (JDK6, JDK7, GeoAPI)}}
-
-    * {{{./code-patterns.html}Recommended code patterns}}
-
-    * {{{./code-format.html}Code and Javadoc formatting}}
-
-    * {{{http://reviews.apache.org/groups/sis/}Code review}}
-
 
   Apache SIS, Apache, the Apache feather logo, and the Apache SIS project logo are trademarks of
   The Apache Software Foundation.

Modified: sis/branches/JDK6/src/site/resources/css/site.css
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/src/site/resources/css/site.css?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/src/site/resources/css/site.css (original)
+++ sis/branches/JDK6/src/site/resources/css/site.css Thu Jul 25 14:51:57 2013
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-/* Override styles in maven-base.css */
+/* Overwrite styles in maven-base.css */
 #leftColumn {
  width: 190px;
 }
@@ -23,7 +23,7 @@
   margin-left: 210px;
 }
 
-/* Override styles in maven-theme.css */
+/* Overwrite styles in maven-theme.css */
 a {
   color: #387085;
 }

Modified: sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java [UTF-8] (original)
+++ sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -91,7 +91,7 @@ public abstract class Decoder implements
      * Returns the value of the attribute of the given name as a number, or {@code null} if none.
      *
      * @param  name The name of the attribute to search, or {@code null}.
-     * @return The attribute value, or {@code null} if none or unparseable or if the given name was null.
+     * @return The attribute value, or {@code null} if none or unparsable or if the given name was null.
      * @throws IOException If an I/O operation was necessary but failed.
      */
     public abstract Number numericValue(final String name) throws IOException;
@@ -121,7 +121,7 @@ public abstract class Decoder implements
      * Returns the value of the attribute of the given name as a date, or {@code null} if none.
      *
      * @param  name The name of the attribute to search, or {@code null}.
-     * @return The attribute value, or {@code null} if none or unparseable or if the given name was null.
+     * @return The attribute value, or {@code null} if none or unparsable or if the given name was null.
      * @throws IOException If an I/O operation was necessary but failed.
      */
     public abstract Date dateValue(final String name) throws IOException;
@@ -130,7 +130,7 @@ public abstract class Decoder implements
      * Returns the value of the attribute of the given name as a unit of measurement, or {@code null} if none.
      *
      * @param  name The name of the attribute to search, or {@code null}.
-     * @return The attribute value, or {@code null} if none or unparseable or if the given name was null.
+     * @return The attribute value, or {@code null} if none or unparsable or if the given name was null.
      * @throws IOException If an I/O operation was necessary but failed.
      *
      * @todo Current Units.valueOf(String) implementation ignore direction in "degrees_east" or "degrees_west".

Modified: sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java [UTF-8] (original)
+++ sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -190,7 +190,7 @@ public final class DecoderWrapper extend
      * Returns the value of the attribute of the given name as a number, or {@code null} if none.
      *
      * @param  name The name of the attribute to search, or {@code null}.
-     * @return The attribute value, or {@code null} if none or unparseable or if the given name was null.
+     * @return The attribute value, or {@code null} if none or unparsable or if the given name was null.
      */
     @Override
     public Number numericValue(final String name) {
@@ -216,7 +216,7 @@ public final class DecoderWrapper extend
      * Returns the value of the attribute of the given name as a date, or {@code null} if none.
      *
      * @param  name The name of the attribute to search, or {@code null}.
-     * @return The attribute value, or {@code null} if none or unparseable or if the given name was null.
+     * @return The attribute value, or {@code null} if none or unparsable or if the given name was null.
      */
     @Override
     public Date dateValue(final String name) {