Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/Classes.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/Classes.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/Classes.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/Classes.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -285,7 +285,7 @@ public final class Classes extends Stati * * @see Class#getInterfaces() */ - @SuppressWarnings({"unchecked","rawtypes"}) // Generic array creation. + @SuppressWarnings({"unchecked","rawtypes"}) // Generic array creation. public static <T> Class<? super T>[] getAllInterfaces(final Class<T> type) { final Set<Class<?>> interfaces = getInterfaceSet(type); return (interfaces != null) ? interfaces.toArray(new Class[interfaces.size()]) : EMPTY_ARRAY; @@ -370,10 +370,10 @@ next: for (final Class<?> candidat for (int i=0; i<count; i++) { final Class<?> old = types[i]; if (candidate.isAssignableFrom(old)) { - continue next; // A more specialized interface already exists. + continue next; // A more specialized interface already exists. } if (old.isAssignableFrom(candidate)) { - types[i] = candidate; // This interface specializes a previous interface. + types[i] = candidate; // This interface specializes a previous interface. continue next; } } @@ -501,14 +501,14 @@ next: for (final Class<?> candidat */ public static Set<Class<?>> findCommonInterfaces(final Class<?> c1, final Class<?> c2) { final Set<Class<?>> interfaces = getInterfaceSet(c1); - final Set<Class<?>> buffer = getInterfaceSet(c2); // To be recycled. + final Set<Class<?>> buffer = getInterfaceSet(c2); // To be recycled. if (interfaces == null || buffer == null) { return Collections.emptySet(); } interfaces.retainAll(buffer); for (Iterator<Class<?>> it=interfaces.iterator(); it.hasNext();) { final Class<?> candidate = it.next(); - buffer.clear(); // Safe because the buffer can not be Collections.EMPTY_SET at this point. + buffer.clear(); // Safe because the buffer can not be Collections.EMPTY_SET at this point. getInterfaceSet(candidate, buffer); if (interfaces.removeAll(buffer)) { it = interfaces.iterator(); @@ -561,9 +561,9 @@ cmp: for (final Class<?> c : c1) { continue cmp; } } - return false; // Interface not found in 'c2'. + return false; // Interface not found in 'c2'. } - return n == 0; // If n>0, at least one interface was not found in 'c1'. + return n == 0; // If n>0, at least one interface was not found in 'c1'. } /**
Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/collection/Containers.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/collection/Containers.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/collection/Containers.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/collection/Containers.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -243,7 +243,7 @@ public final class Containers extends St final Object value = properties.get(key); if (value != null && !type.isInstance(value)) { throw new IllegalArgumentException(Errors.getResources(properties) - .getString(Errors.Keys.IllegalPropertyClass_2, key, value.getClass())); + .getString(Errors.Keys.IllegalPropertyValueClass_3, key, type, value.getClass())); } return (T) value; } Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecord.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecord.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecord.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecord.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -261,8 +261,8 @@ public class DefaultRecord implements Re if (value != null) { final Class<?> valueClass = definition.getValueClass(index); if (valueClass != null && !valueClass.isInstance(value)) { - throw new ClassCastException(Errors.format(Errors.Keys.IllegalPropertyClass_2, - name, value.getClass())); + throw new ClassCastException(Errors.format(Errors.Keys.IllegalPropertyValueClass_3, + name, valueClass, value.getClass())); } } Array.set(values, index, value); @@ -287,8 +287,8 @@ public class DefaultRecord implements Re if (value != null) { final Class<?> valueClass = definition.getValueClass(i); if (valueClass != null && !valueClass.isInstance(value)) { - throw new ClassCastException(Errors.format(Errors.Keys.IllegalPropertyClass_2, - definition.getName(i), value.getClass())); + throw new ClassCastException(Errors.format(Errors.Keys.IllegalPropertyValueClass_3, + definition.getName(i), valueClass, value.getClass())); } } Array.set(values, i, value); Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/iso/Types.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/iso/Types.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/iso/Types.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/iso/Types.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -752,7 +752,7 @@ public final class Types extends Static if (value != null) { if (!(value instanceof CharSequence)) { throw new IllegalArgumentException(Errors.getResources(properties) - .getString(Errors.Keys.IllegalPropertyClass_2, key, value.getClass())); + .getString(Errors.Keys.IllegalPropertyValueClass_2, key, value.getClass())); } if (i18n == null) { i18n = (CharSequence) value; Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -454,9 +454,19 @@ public final class Errors extends Indexe public static final short IllegalParameterValue_2 = 144; /** + * Property “{0}” can not be of type ‘{1}’. + */ + public static final short IllegalPropertyType_2 = 223; + + /** * Property “{0}” does not accept instances of ‘{1}’. */ - public static final short IllegalPropertyClass_2 = 40; + public static final short IllegalPropertyValueClass_2 = 40; + + /** + * Expected an instance of ‘{1}’ for the “{0}” property, but got an instance of ‘{2}’. + */ + public static final short IllegalPropertyValueClass_3 = 224; /** * Range [{0} … {1}] is not valid. @@ -519,6 +529,11 @@ public final class Errors extends Indexe public static final short InconsistentTableColumns = 48; /** + * Unit of measurement “{0}” is inconsistent with coordinate system axes. + */ + public static final short InconsistentUnitsForCS_1 = 222; + + /** * Index {0} is out of bounds. */ public static final short IndexOutOfBounds_1 = 49; @@ -791,6 +806,11 @@ public final class Errors extends Indexe public static final short NonLinearUnit_1 = 84; /** + * The “{0}” sequence is not monotonic. + */ + public static final short NonMonotonicSequence_1 = 221; + + /** * Axis directions {0} and {1} are not perpendicular. */ public static final short NonPerpendicularDirections_2 = 85; @@ -981,6 +1001,11 @@ public final class Errors extends Indexe public static final short UnexpectedCharactersAfter_2 = 198; /** + * Text for ‘{0}’ was expected to {1,choice,0#begin|1#end} with “{2}”, but found “{3}”. + */ + public static final short UnexpectedCharactersAtBound_4 = 225; + + /** * Unexpected dimension for a coordinate system of type ‘{0}’. */ public static final short UnexpectedDimensionForCS_1 = 212; @@ -1001,6 +1026,11 @@ public final class Errors extends Indexe public static final short UnexpectedFileFormat_2 = 111; /** + * Expected {1} components in “{0}” but found {2}. + */ + public static final short UnexpectedNumberOfComponents_3 = 226; + + /** * Parameter “{0}” was not expected. */ public static final short UnexpectedParameter_1 = 152; @@ -1136,7 +1166,8 @@ public final class Errors extends Indexe public static final short UnspecifiedParameterValues = 185; /** - * Can not handle instances of ‘{0}’ because arbitrary implementations are not yet supported. + * Can not handle this instance of ‘{0}’ because arbitrary implementations are not yet + * supported. */ public static final short UnsupportedImplementation_1 = 127; @@ -1197,9 +1228,9 @@ public final class Errors extends Indexe /** * Returns resources in the given locale. * - * @param locale The locale, or {@code null} for the default locale. - * @return Resources in the given locale. - * @throws MissingResourceException if resources can't be found. + * @param locale the locale, or {@code null} for the default locale. + * @return resources in the given locale. + * @throws MissingResourceException if resources can not be found. */ public static Errors getResources(final Locale locale) throws MissingResourceException { return getBundle(Errors.class, locale); Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties [ISO-8859-1] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties [ISO-8859-1] Wed Apr 20 17:40:11 2016 @@ -100,7 +100,9 @@ IllegalOrdinateRange_3 = The IllegalParameterType_2 = Parameter \u201c{0}\u201d can not be of type \u2018{1}\u2019. IllegalParameterValue_2 = Parameter \u201c{0}\u201d can not take the \u201c{1}\u201d value. IllegalParameterValueClass_3 = Parameter \u201c{0}\u201d does not accept values of \u2018{2}\u2019 type. Expected an instance of \u2018{1}\u2019 or derived type. -IllegalPropertyClass_2 = Property \u201c{0}\u201d does not accept instances of \u2018{1}\u2019. +IllegalPropertyType_2 = Property \u201c{0}\u201d can not be of type \u2018{1}\u2019. +IllegalPropertyValueClass_2 = Property \u201c{0}\u201d does not accept instances of \u2018{1}\u2019. +IllegalPropertyValueClass_3 = Expected an instance of \u2018{1}\u2019 for the \u201c{0}\u201d property, but got an instance of \u2018{2}\u2019. IllegalRange_2 = Range [{0} \u2026 {1}] is not valid. IllegalUnicodeCodePoint_2 = Value {1} for \u201c{0}\u201d is not a valid Unicode code point. IllegalUnitFor_2 = Unit of measurement \u201c{1}\u201d is not valid for \u201c{0}\u201d values. @@ -113,6 +115,7 @@ IncompatibleUnits_2 = Unit InconsistentAttribute_2 = Value \u201c{1}\u201d of attribute \u2018{0}\u2019 is inconsistent with other attributes. InconsistentNamespace_2 = Expected \u201c{0}\u201d namespace for \u201c{1}\u201d. InconsistentTableColumns = Inconsistent table columns. +InconsistentUnitsForCS_1 = Unit of measurement \u201c{0}\u201d is inconsistent with coordinate system axes. IdentifierAlreadyBound_1 = Identifier \u201c{0}\u201d is already associated to another object. IndexOutOfBounds_1 = Index {0} is out of bounds. IndicesOutOfBounds_2 = Indices ({0}, {1}) are out of bounds. @@ -164,6 +167,7 @@ NonInvertibleTransform = Tran NonAngularUnit_1 = \u201c{0}\u201d is not an angular unit. NonLinearUnit_1 = \u201c{0}\u201d is not a linear unit. NonLinearUnitConversion_2 = Unit conversion from \u201c{0}\u201d to \u201c{1}\u201d is non-linear. +NonMonotonicSequence_1 = The \u201c{0}\u201d sequence is not monotonic. NonPerpendicularDirections_2 = Axis directions {0} and {1} are not perpendicular. NonScaleUnit_1 = \u201c{0}\u201d is not a scale unit. NonTemporalUnit_1 = \u201c{0}\u201d is not a time unit. @@ -207,10 +211,12 @@ UndefinedOrderingForElements_2 = Orde UnexpectedArrayLength_2 = Expected an array of length {0}, but got {1}. UnexpectedChange_1 = Unexpected change in \u2018{0}\u2019. UnexpectedCharactersAfter_2 = The \u201c{1}\u201d characters after \u201c{0}\u201d was unexpected. +UnexpectedCharactersAtBound_4 = Text for \u2018{0}\u2019 was expected to {1,choice,0#begin|1#end} with \u201c{2}\u201d, but found \u201c{3}\u201d. UnexpectedDimensionForCS_1 = Unexpected dimension for a coordinate system of type \u2018{0}\u2019. UnexpectedEndOfFile_1 = Unexpected end of file while reading \u201c{0}\u201d. UnexpectedEndOfString_1 = More characters were expected at the end of \u201c{0}\u201d. UnexpectedFileFormat_2 = File \u201c{1}\u201d seems to be encoded in an other format than {0}. +UnexpectedNumberOfComponents_3 = Expected {1} components in \u201c{0}\u201d but found {2}. UnexpectedParameter_1 = Parameter \u201c{0}\u201d was not expected. UnexpectedTypeForReference_3 = Expected \u201c{0}\u201d to reference an instance of \u2018{1}\u2019, but found an instance of \u2018{2}\u2019. UnexpectedValueInElement_2 = Unexpected value \u201c{1}\u201d in \u201c{0}\u201d element. @@ -238,7 +244,7 @@ UnspecifiedCRS = Coor UnspecifiedDimensions = Dimensions have not been specified. UnspecifiedFormatForClass_1 = No format is specified for objects of class \u2018{0}\u2019. UnspecifiedParameterValues = Parameter values have not been specified. -UnsupportedImplementation_1 = Can not handle instances of \u2018{0}\u2019 because arbitrary implementations are not yet supported. +UnsupportedImplementation_1 = Can not handle this instance of \u2018{0}\u2019 because arbitrary implementations are not yet supported. UnsupportedInterpolation_1 = The \u201c{0}\u201d interpolation is unsupported. UnsupportedOperation_1 = The \u2018{0}\u2019 operation is unsupported. UnsupportedType_1 = The \u2018{0}\u2019 type is unsupported. Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties [ISO-8859-1] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties [ISO-8859-1] Wed Apr 20 17:40:11 2016 @@ -97,7 +97,9 @@ IllegalOrdinateRange_3 = La p IllegalParameterType_2 = Le param\u00e8tre \u00ab\u202f{0}\u202f\u00bb ne peut pas \u00eatre du type \u2018{1}\u2019. IllegalParameterValue_2 = Le param\u00e8tre \u00ab\u202f{0}\u202f\u00bb n\u2019accepte pas la valeur \u00ab\u202f{1}\u202f\u00bb. IllegalParameterValueClass_3 = Le param\u00e8tre \u00ab\u202f{0}\u202f\u00bb n\u2019accepte pas les valeurs de type \u2018{2}\u2019. Une instance de \u2018{1}\u2019 ou d\u2019un type d\u00e9riv\u00e9 \u00e9tait attendue. -IllegalPropertyClass_2 = La propri\u00e9t\u00e9 \u00ab\u202f{0}\u202f\u00bb n\u2019accepte pas les valeurs de type \u2018{1}\u2019. +IllegalPropertyType_2 = La propri\u00e9t\u00e9 \u00ab\u202f{0}\u202f\u00bb ne peut pas \u00eatre du type \u2018{1}\u2019. +IllegalPropertyValueClass_2 = La propri\u00e9t\u00e9 \u00ab\u202f{0}\u202f\u00bb n\u2019accepte pas les valeurs de type \u2018{1}\u2019. +IllegalPropertyValueClass_3 = Une instance \u2018{1}\u2019 \u00e9tait attendue pour la propri\u00e9t\u00e9 \u00ab\u202f{0}\u202f\u00bb, mais la valeur donn\u00e9e est une instance de \u2018{2}\u2019. IllegalRange_2 = La plage [{0} \u2026 {1}] n\u2019est pas valide. IllegalUnicodeCodePoint_2 = La valeur {1} de \u00ab\u202f{0}\u202f\u00bb n\u2019est pas un code Unicode valide. IllegalUnitFor_2 = L\u2019unit\u00e9 de mesure \u00ab\u202f{1}\u202f\u00bb n\u2019est pas valide pour les valeurs de \u00ab\u202f{0}\u202f\u00bb. @@ -110,6 +112,7 @@ IncompatibleUnits_2 = Les InconsistentAttribute_2 = La valeur \u00ab\u202f{1}\u202f\u00bb de l\u2019attribut \u2018{0}\u2019 n\u2019est pas coh\u00e9rente avec celles des autres attributs. InconsistentNamespace_2 = L\u2019espace de nom \u201c{0}\u201d \u00e9tait attendu pour \u201c{1}\u201d. InconsistentTableColumns = Les colonnes des tables ne sont pas coh\u00e9rentes. +InconsistentUnitsForCS_1 = L\u2019unit\u00e9 de mesure \u00ab\u202f{0}\u202f\u00bb n\u2019est pas coh\u00e9rente avec les axes du syst\u00e8me de coordonn\u00e9es. IdentifierAlreadyBound_1 = L\u2019identifiant \u00ab\u202f{0}\u202f\u00bb est d\u00e9j\u00e0 associ\u00e9 \u00e0 un autre objet. IndexOutOfBounds_1 = L\u2019index {0} est en dehors des limites permises. IndicesOutOfBounds_2 = Les index ({0}, {1}) sont en dehors des limites permises. @@ -161,6 +164,7 @@ NonInvertibleTransform = La t NonAngularUnit_1 = \u00ab\u202f{0}\u202f\u00bb n\u2019est pas une unit\u00e9 d\u2019angles. NonLinearUnit_1 = \u00ab\u202f{0}\u202f\u00bb n\u2019est pas une unit\u00e9 de longueurs. NonLinearUnitConversion_2 = La conversion des unit\u00e9s \u00ab\u202f{0}\u202f\u00bb vers \u00ab\u202f{1}\u202f\u00bb n\u2019est pas lin\u00e9aire. +NonMonotonicSequence_1 = La s\u00e9quence \u00ab\u202f{0}\u202f\u00bb n\u2019est pas monotone. NonPerpendicularDirections_2 = Les directions {0} et {1} ne sont pas perpendiculaires. NonScaleUnit_1 = \u00ab\u202f{0}\u202f\u00bb n\u2019est pas une unit\u00e9 d\u2019\u00e9chelles. NonTemporalUnit_1 = \u00ab\u202f{0}\u202f\u00bb n\u2019est pas une unit\u00e9 de temps. @@ -203,9 +207,11 @@ UndefinedOrderingForElements_2 = L\u2 UnexpectedArrayLength_2 = Un tableau de longueur {0} \u00e9tait attendu, mais le tableau re\u00e7u est de longueur {1}. UnexpectedChange_1 = Changement inattendu dans \u2018{0}\u2019. UnexpectedCharactersAfter_2 = Les caract\u00e8res \u00ab\u202f{1}\u202f\u00bb apr\u00e8s \u00ab\u202f{0}\u202f\u00bb sont inattendus. +UnexpectedCharactersAtBound_4 = Le texte pour \u2018{0}\u2019 devait {1,choice,0#commencer|1#finir} par \u00ab\u202f{2}\u202f\u00bb, mais on a trouv\u00e9 \u00ab\u202f{3}\u202f\u00bb. UnexpectedDimensionForCS_1 = Dimension inattendue pour un syst\u00e8me de coordonn\u00e9es de type \u2018{0}\u2019. UnexpectedEndOfFile_1 = Fin de fichier inattendue lors de la lecture de \u00ab\u202f{0}\u202f\u00bb. UnexpectedEndOfString_1 = D\u2019autres caract\u00e8res \u00e9taient attendus \u00e0 la fin du texte \u00ab\u202f{0}\u202f\u00bb. +UnexpectedNumberOfComponents_3 = Il y a {2} composantes dans \u00ab\u202f{0}\u202f\u00bb alors qu\u2019on en attendait {1}. UnexpectedFileFormat_2 = Le fichier \u00ab\u202f{1}\u202f\u00bb semble \u00eatre encod\u00e9 dans un autre format que {0}. UnexpectedParameter_1 = Le param\u00e8tre \u00ab\u202f{0}\u202f\u00bb est inattendu. UnexpectedTypeForReference_3 = L\u2019identifiant \u201c{0}\u201d r\u00e9f\u00e9rence une instance de \u2018{2}\u2019 alors qu\u2019on attendait une instance de \u2018{1}\u2019. @@ -234,7 +240,7 @@ UnparsableStringForClass_2 = Le t UnparsableStringForClass_3 = Le texte \u00ab\u202f{1}\u202f\u00bb n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019, \u00e0 cause des caract\u00e8res \u00ab\u202f{2}\u202f\u00bb. UnparsableStringInElement_2 = Le texte \u00ab\u202f{1}\u202f\u00bb dans l\u2019\u00e9l\u00e9ment \u00ab\u202f{0}\u202f\u00bb ne peut pas \u00eatre lu. UnresolvedFeatureName_1 = L\u2019entit\u00e9 nomm\u00e9e \u00ab\u202f{0}\u202f\u00bb n\u2019a pas encore \u00e9t\u00e9 r\u00e9solue. -UnsupportedImplementation_1 = Les instances de \u2018{0}\u2019 ne peuvent pas \u00eatre g\u00e9r\u00e9es parce que les impl\u00e9mentations arbitraires ne sont pas encore support\u00e9es. +UnsupportedImplementation_1 = Cette instance de \u2018{0}\u2019 ne peut pas \u00eatre g\u00e9r\u00e9e parce que les impl\u00e9mentations arbitraires ne sont pas encore support\u00e9es. UnsupportedInterpolation_1 = L\u2019interpolation \u201c{0}\u201d n\u2019est pas support\u00e9e. UnsupportedOperation_1 = L\u2019op\u00e9ration \u2018{0}\u2019 n\u2019est pas support\u00e9e. UnsupportedType_1 = Le type \u2018{0}\u2019 n\u2019est pas support\u00e9. Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/IndexedResourceBundle.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/IndexedResourceBundle.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/IndexedResourceBundle.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/IndexedResourceBundle.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -434,7 +434,7 @@ public class IndexedResourceBundle exten /** * If the given class is not public, returns the first public interface or the first public super-class. * This is for avoiding confusing the user with private class in message like "Value can not be instance - * of XYZ". In the worst case (nothing public other than {@code Object}), returns {@code Object.class}. + * of XYZ". */ private static Class<?> getPublicType(Class<?> c) { while (!Modifier.isPublic(c.getModifiers())) { Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -208,6 +208,16 @@ public final class Messages extends Inde public static final short InsertDuration_2 = 40; /** + * Inverse operation uses this parameter value with opposite sign. + */ + public static final short InverseOperationUsesOppositeSign = 42; + + /** + * Inverse operation uses the same parameter value. + */ + public static final short InverseOperationUsesSameSign = 43; + + /** * No object associated to the “{0}” JNDI name. */ public static final short JNDINotSpecified_1 = 32; Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties [ISO-8859-1] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties [ISO-8859-1] Wed Apr 20 17:40:11 2016 @@ -44,6 +44,8 @@ IgnoredPropertyAssociatedTo_1 = Ignor IgnoredServiceProvider_3 = More than one service provider of type \u2018{0}\u2019 are declared for \u201c{1}\u201d. Only the first provider (an instance of \u2018{2}\u2019) will be used. IncompleteParsing_1 = Parsing of \u201c{0}\u201d done, but some elements were ignored. InsertDuration_2 = Inserted {0} records in {1} seconds. +InverseOperationUsesSameSign = Inverse operation uses the same parameter value. +InverseOperationUsesOppositeSign = Inverse operation uses this parameter value with opposite sign. JNDINotSpecified_1 = No object associated to the \u201c{0}\u201d JNDI name. LoadingDatumShiftFile_1 = Loading datum shift file \u201c{0}\u201d. LocalesDiscarded = Text were discarded for some locales. Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties [ISO-8859-1] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties [ISO-8859-1] Wed Apr 20 17:40:11 2016 @@ -51,6 +51,8 @@ IgnoredPropertyAssociatedTo_1 = Une p IgnoredServiceProvider_3 = Plusieurs fournisseurs de service de type \u2018{0}\u2019 sont d\u00e9clar\u00e9s pour \u00ab\u202f{1}\u202f\u00bb. Seul le premier fournisseur (une instance de \u2018{2}\u2019) sera utilis\u00e9. IncompleteParsing_1 = La lecture de \u00ab\u202f{0}\u202f\u00bb a \u00e9t\u00e9 faite, mais en ignorant certains \u00e9l\u00e9ments. InsertDuration_2 = {0} enregistrements ont \u00e9t\u00e9 ajout\u00e9s en {1} secondes. +InverseOperationUsesSameSign = L\u2019op\u00e9ration inverse utilise la m\u00eame valeur pour ce param\u00e8tre. +InverseOperationUsesOppositeSign = L\u2019op\u00e9ration inverse utilise ce param\u00e8tre avec la valeur de signe oppos\u00e9. JNDINotSpecified_1 = Aucun objet n\u2019est associ\u00e9 au nom JNDI \u00ab\u202f{0}\u202f\u00bb. LoadingDatumShiftFile_1 = Chargement du fichier de changement de r\u00e9f\u00e9rentiel \u00ab\u202f{0}\u202f\u00bb. LocalesDiscarded = Des textes ont \u00e9t\u00e9 ignor\u00e9s pour certaines langues. Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -17,6 +17,7 @@ package org.apache.sis.util.resources; import java.net.URL; +import java.util.Map; import java.util.Locale; import java.util.MissingResourceException; import javax.annotation.Generated; @@ -28,7 +29,7 @@ import org.opengis.util.InternationalStr * * @author Martin Desruisseaux (IRD, Geomatys) * @since 0.3 - * @version 0.4 + * @version 0.7 * @module */ public final class Vocabulary extends IndexedResourceBundle { @@ -191,6 +192,11 @@ public final class Vocabulary extends In public static final short DefaultValue = 71; /** + * Derived from {0} + */ + public static final short DerivedFrom_1 = 108; + + /** * Description */ public static final short Description = 75; @@ -626,6 +632,21 @@ public final class Vocabulary extends In } /** + * Returns resources in the locale specified in the given property map. This convenience method looks + * for the {@link #LOCALE_KEY} entry. If the given map is null, or contains no entry for the locale key, + * or the value is not an instance of {@link Locale}, then this method fallback on the default locale. + * + * @param properties the map of properties, or {@code null} if none. + * @return resources in the given locale. + * @throws MissingResourceException if resources can not be found. + * + * @since 0.7 + */ + public static Vocabulary getResources(final Map<?,?> properties) throws MissingResourceException { + return getResources(getLocale(properties)); + } + + /** * Gets a string for the given key from this resource bundle or one of its parents. * * @param key The key for the desired string. @@ -633,7 +654,7 @@ public final class Vocabulary extends In * @throws MissingResourceException If no object for the given key can be found. */ public static String format(final short key) throws MissingResourceException { - return getResources(null).getString(key); + return getResources((Locale) null).getString(key); } /** Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties [ISO-8859-1] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties [ISO-8859-1] Wed Apr 20 17:40:11 2016 @@ -41,6 +41,7 @@ Datum = Datum DatumShift = Datum shift DaylightTime = Daylight time DefaultValue = Default value +DerivedFrom_1 = Derived from {0} Description = Description Destination = Destination Dimensions = Dimensions Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties [ISO-8859-1] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties [ISO-8859-1] Wed Apr 20 17:40:11 2016 @@ -48,6 +48,7 @@ Datum = R\u00e9f\u00e9 DatumShift = Changement de r\u00e9f\u00e9rentiel DaylightTime = Heure normale DefaultValue = Valeur par d\u00e9faut +DerivedFrom_1 = D\u00e9riv\u00e9 de {0} Description = Description Destination = Destination Dimensions = Dimensions Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/Pooled.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/Pooled.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/Pooled.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/Pooled.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -342,7 +342,7 @@ abstract class Pooled { final Object schema = map.get(key); if (schema != null) { if (!(schema instanceof String)) { - throw new PropertyException(Errors.format(Errors.Keys.IllegalPropertyClass_2, + throw new PropertyException(Errors.format(Errors.Keys.IllegalPropertyValueClass_2, name + "[\"" + key + "\"]", value.getClass())); } copy.put(key, (String) schema); @@ -399,7 +399,7 @@ abstract class Pooled { } } catch (RuntimeException e) { // (ClassCastException | IllformedLocaleException) on the JDK7 branch. throw new PropertyException(Errors.format( - Errors.Keys.IllegalPropertyClass_2, name, value.getClass()), e); + Errors.Keys.IllegalPropertyValueClass_2, name, value.getClass()), e); } /* * If we reach this point, the given name is not a SIS property. Try to handle Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/PooledTemplate.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/PooledTemplate.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/PooledTemplate.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/PooledTemplate.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -96,7 +96,7 @@ final class PooledTemplate extends Poole if (value == null) { return defaultValue; } - throw new PropertyException(Errors.format(Errors.Keys.IllegalPropertyClass_2, name, value.getClass())); + throw new PropertyException(Errors.format(Errors.Keys.IllegalPropertyValueClass_2, name, value.getClass())); } /** Modified: sis/trunk/core/sis-utility/src/test/java/org/apache/sis/internal/util/LazySetTest.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/test/java/org/apache/sis/internal/util/LazySetTest.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/test/java/org/apache/sis/internal/util/LazySetTest.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/test/java/org/apache/sis/internal/util/LazySetTest.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -43,7 +43,7 @@ public final strictfp class LazySetTest * Creates the set to use for testing purpose. */ private static LazySet<String> create() { - return new LazySet<String>(Arrays.asList(LABELS)); + return new LazySet<String>(Arrays.asList(LABELS).iterator()); } /** Modified: sis/trunk/core/sis-utility/src/test/java/org/apache/sis/math/MathFunctionsTest.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/test/java/org/apache/sis/math/MathFunctionsTest.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/test/java/org/apache/sis/math/MathFunctionsTest.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/test/java/org/apache/sis/math/MathFunctionsTest.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -35,8 +35,9 @@ import org.apache.sis.internal.jdk8.JDK8 * Tests the {@link MathFunctions} static methods. * * @author Martin Desruisseaux (IRD, Geomatys) + * @author Johann Sorel (Geomatys) * @since 0.3 - * @version 0.4 + * @version 0.7 * @module */ @DependsOn({ @@ -259,6 +260,70 @@ public final strictfp class MathFunction } /** + * Tests the {@link MathFunctions#quadrupleToDouble(long, long)} method. Values used in this test are taken from + * <a href="https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format">Quadruple-precision + * floating-point format</a> on Wikipedia. + */ + @Test + public void testQuadrupleToDouble(){ + long l0, l1; + + // 1.0 + l0 = 0x3FFF000000000000L; + l1 = 0x0000000000000000L; + assertEquals(doubleToLongBits(1.0), + doubleToLongBits(quadrupleToDouble(l0, l1))); + + // -2.0 + l0 = 0xC000000000000000L; + l1 = 0x0000000000000000L; + assertEquals(doubleToLongBits(-2.0), + doubleToLongBits(quadrupleToDouble(l0, l1))); + + // 3.1415926535897932384626433832795028 + l0 = 0x4000921FB54442D1L; + l1 = 0x8469898CC51701B8L; + assertEquals(doubleToLongBits(3.1415926535897932384626433832795028), + doubleToLongBits(quadrupleToDouble(l0, l1))); + + // ~1/3 + l0 = 0x3FFD555555555555L; + l1 = 0x5555555555555555L; + assertEquals(doubleToLongBits(1.0/3.0), + doubleToLongBits(quadrupleToDouble(l0, l1))); + + // positive zero + l0 = 0x0000000000000000L; + l1 = 0x0000000000000000L; + assertEquals(doubleToLongBits(+0.0), + doubleToLongBits(quadrupleToDouble(l0, l1))); + + // negative zero + l0 = 0x8000000000000000L; + l1 = 0x0000000000000000L; + assertEquals(doubleToLongBits(-0.0), + doubleToLongBits(quadrupleToDouble(l0, l1))); + + // positive infinite + l0 = 0x7FFF000000000000L; + l1 = 0x0000000000000000L; + assertEquals(doubleToLongBits(Double.POSITIVE_INFINITY), + doubleToLongBits(quadrupleToDouble(l0, l1))); + + // negative infinite + l0 = 0xFFFF000000000000L; + l1 = 0x0000000000000000L; + assertEquals(doubleToLongBits(Double.NEGATIVE_INFINITY), + doubleToLongBits(quadrupleToDouble(l0, l1))); + + // a random NaN + l0 = 0x7FFF000100040000L; + l1 = 0x0001005000080000L; + assertEquals(doubleToLongBits(Double.NaN), + doubleToLongBits(quadrupleToDouble(l0, l1))); + } + + /** * Tests the {@link MathFunctions#primeNumberAt(int)} method. */ @Test Modified: sis/trunk/core/sis-utility/src/test/java/org/apache/sis/test/TestRunner.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/test/java/org/apache/sis/test/TestRunner.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/test/java/org/apache/sis/test/TestRunner.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/test/java/org/apache/sis/test/TestRunner.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -229,6 +229,7 @@ public final class TestRunner extends Bl * * @return The test method to be executed in dependencies order. */ + @SuppressWarnings("ReturnOfCollectionOrArrayField") private FrameworkMethod[] getFilteredChildren() { if (filteredChildren == null) { final List<FrameworkMethod> children = super.getChildren(); Modified: sis/trunk/core/sis-utility/src/test/java/org/apache/sis/test/TestUtilities.java URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/test/java/org/apache/sis/test/TestUtilities.java?rev=1740177&r1=1740176&r2=1740177&view=diff ============================================================================== --- sis/trunk/core/sis-utility/src/test/java/org/apache/sis/test/TestUtilities.java [UTF-8] (original) +++ sis/trunk/core/sis-utility/src/test/java/org/apache/sis/test/TestUtilities.java [UTF-8] Wed Apr 20 17:40:11 2016 @@ -45,7 +45,7 @@ import static org.junit.Assert.*; * * @author Martin Desruisseaux (Geomatys) * @since 0.3 - * @version 0.5 + * @version 0.7 * @module */ public final strictfp class TestUtilities extends Static { @@ -285,7 +285,7 @@ public final strictfp class TestUtilitie * " └─" * } * - * This method is used for comparing two tree having string representation in different locales. + * This method is used for comparing two trees having string representation in different locales. * In such case, we can not compare the actual text content. The best we can do is to compare * the tree structure. * @@ -341,6 +341,26 @@ public final strictfp class TestUtilitie } /** + * Returns a copy of the given array with the last ordinate values dropped for each coordinates. + * + * @param coordinates The source coordinates from which to drop the last ordinate values. + * @param sourceDim Number of dimensions of each point in the {@code coordinates} array. + * @param targetDim Number of dimensions to retain. + * @return Copy of the given {@code coordinates} array with only the {@code targetDim} first dimension for each point. + * + * @since 0.7 + */ + public static double[] dropLastDimensions(final double[] coordinates, final int sourceDim, final int targetDim) { + assertEquals("Unexpected array length.", 0, coordinates.length % sourceDim); + final int numPts = coordinates.length / sourceDim; + final double[] reduced = new double[numPts * targetDim]; + for (int i=0; i<numPts; i++) { + System.arraycopy(coordinates, i*sourceDim, reduced, i*targetDim, targetDim); + } + return reduced; + } + + /** * If the given failure is not null, re-thrown it as an {@link Error} or * {@link RuntimeException}. Otherwise do nothing. *
