Author: desruisseaux
Date: Fri Apr 22 16:15:28 2016
New Revision: 1740554
URL: http://svn.apache.org/viewvc?rev=1740554&view=rev
Log:
WKT parser should verify that the unit of measurements are consistent.
Modified:
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/AbstractParser.java
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/WKTFormat.java
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
Modified:
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/AbstractParser.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/AbstractParser.java?rev=1740554&r1=1740553&r2=1740554&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/AbstractParser.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/AbstractParser.java
[UTF-8] Fri Apr 22 16:15:28 2016
@@ -83,13 +83,6 @@ abstract class AbstractParser implements
static final int MANDATORY = 2;
/**
- * The logger to use for reporting warnings when this parser is used
through the {@link #createFromWKT(String)}.
- * This happen most often when the user invoke the {@link
org.apache.sis.referencing.CRS#fromWKT(String)}
- * convenience method.
- */
- private static final Logger LOGGER = Logging.getLogger(Loggers.WKT);
-
- /**
* The locale for error messages (not for number parsing), or {@code null}
for the system default.
*/
final Locale errorLocale;
@@ -196,6 +189,14 @@ abstract class AbstractParser implements
abstract String getPublicFacade();
/**
+ * Returns the name of the method invoked from {@link #getPublicFacade()}.
+ * This information is used for logging purpose only.
+ */
+ String getFacadeMethod() {
+ return "createFromWKT";
+ }
+
+ /**
* Creates the object from a string. This method is for implementation of
{@code createFromWKT(String)}
* method is SIS factories only.
*
@@ -220,16 +221,24 @@ abstract class AbstractParser implements
}
final Warnings warnings = getAndClearWarnings(value);
if (warnings != null) {
- final LogRecord record = new LogRecord(Level.WARNING,
warnings.toString());
- record.setSourceClassName(getPublicFacade());
- record.setSourceMethodName("createFromWKT");
- record.setLoggerName(LOGGER.getName());
- LOGGER.log(record);
+ log(new LogRecord(Level.WARNING, warnings.toString()));
}
return value;
}
/**
+ * Logs the given record. This is used only when we can not use the {@link
#warning warning methods},
+ * or when the information is not worth to report as a warning.
+ */
+ final void log(final LogRecord record) {
+ Logger logger = Logging.getLogger(Loggers.WKT);
+ record.setSourceClassName(getPublicFacade());
+ record.setSourceMethodName(getFacadeMethod());
+ record.setLoggerName(logger.getName());
+ logger.log(record);
+ }
+
+ /**
* Returns the index after the end of the fragment name starting at the
given index.
* Current implementation assumes that the fragment name is a Unicode
identifier.
*/
@@ -323,7 +332,7 @@ abstract class AbstractParser implements
/**
* Parses the given unit symbol.
*/
- final Unit<?> parseUnit(final String text) throws ParseException {
+ final Unit<?> parseUnit(final String text) throws ParseException,
IllegalArgumentException {
if (unitFormat == null) {
if (symbols.getLocale() == Locale.ROOT) {
return Units.valueOf(text); // Most common case,
avoid the convolved code below.
Modified:
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java?rev=1740554&r1=1740553&r2=1740554&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java
[UTF-8] Fri Apr 22 16:15:28 2016
@@ -26,6 +26,8 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParsePosition;
@@ -38,6 +40,7 @@ import javax.measure.quantity.Angle;
import javax.measure.quantity.Length;
import javax.measure.quantity.Quantity;
import javax.measure.quantity.Duration;
+import javax.measure.converter.ConversionException;
import org.opengis.util.Factory;
import org.opengis.metadata.Identifier;
@@ -70,6 +73,7 @@ import org.apache.sis.internal.metadata.
import org.apache.sis.internal.metadata.TransformationAccuracy;
import org.apache.sis.internal.util.LocalizedParseException;
import org.apache.sis.internal.system.DefaultFactories;
+import org.apache.sis.internal.util.Numerics;
import org.apache.sis.util.CharSequences;
import org.apache.sis.util.resources.Errors;
import org.apache.sis.util.iso.DefaultNameSpace;
@@ -91,7 +95,7 @@ import static java.util.Collections.sing
* @version 0.7
* @module
*/
-final class GeodeticObjectParser extends MathTransformParser implements
Comparator<CoordinateSystemAxis> {
+class GeodeticObjectParser extends MathTransformParser implements
Comparator<CoordinateSystemAxis> {
/**
* The names of the 7 parameters in a {@code TOWGS84[…]} element.
* Those names are derived from the <cite>Well Known Text</cite> (WKT)
version 1 specification.
@@ -276,7 +280,7 @@ final class GeodeticObjectParser extends
* @throws ParseException if the string can not be parsed.
*/
@Override
- public Object parseObject(final String text, final ParsePosition position)
throws ParseException {
+ public final Object parseObject(final String text, final ParsePosition
position) throws ParseException {
final Object object;
try {
object = super.parseObject(text, position);
@@ -321,7 +325,7 @@ final class GeodeticObjectParser extends
* @throws ParseException if the element can not be parsed.
*/
@Override
- Object parseObject(final Element element) throws ParseException {
+ final Object parseObject(final Element element) throws ParseException {
Object value = parseCoordinateReferenceSystem(element, false);
if (value != null) {
return value;
@@ -617,7 +621,7 @@ final class GeodeticObjectParser extends
* @return The {@code "UNIT"} element as an {@link Unit} object, or {@code
null} if none.
* @throws ParseException if the {@code "UNIT"} can not be parsed.
*
- * @todo Authority code is currently ignored. We may consider to create a
subclass of
+ * @todo Authority code is currently discarded after parsing. We may
consider to create a subclass of
* {@link Unit} which implements {@link IdentifiedObject} in a
future version.
*/
@SuppressWarnings("unchecked")
@@ -630,16 +634,46 @@ final class GeodeticObjectParser extends
}
final String name = element.pullString("name");
final double factor = element.pullDouble("factor");
- final Unit<?> unit = parseUnitID(element);
+ Unit<Q> unit = Units.multiply(baseUnit, factor);
+ Unit<?> verify = parseUnitID(element);
element.close(ignoredElements);
- if (unit != null) {
- if (baseUnit.toSI().equals(unit.toSI())) {
- return (Unit<Q>) unit;
+ /*
+ * Consider the following element: UNIT[“km”, 1000, ID[“EPSG”, “9036”]]
+ *
+ * - if the authority code (“9036”) refers to a unit incompatible
with 'baseUnit' (“metre”), log a warning.
+ * - otherwise: 1) unconditionally replace the parsed unit (“km”) by
the unit referenced by the authority code.
+ * 2) if the new unit is not equivalent to the old one
(i.e. different scale factor), log a warning.
+ */
+ if (verify != null) {
+ if (!baseUnit.toSI().equals(verify.toSI())) {
+ warning(parent, element,
Errors.formatInternational(Errors.Keys.InconsistentUnitsForCS_1, verify), null);
+ } else if (Math.abs(unit.getConverterTo(unit = (Unit<Q>)
verify).convert(1) - 1) > Numerics.COMPARISON_THRESHOLD) {
+ warning(parent, element,
Errors.formatInternational(Errors.Keys.UnexpectedScaleFactorForUnit_2, verify,
factor), null);
} else {
- warning(parent, element,
Errors.formatInternational(Errors.Keys.IllegalUnitFor_2, keyword, unit), null);
+ verify = null; //
Means to perform additional verifications.
+ }
+ }
+ /*
+ * Above block verified the ID[“EPSG”, “9036”] authority code. Now
verify the unit parsed from the “km” symbol.
+ * This is only a verification; we will not replace the unit by the
parsed one (i.e. authority code or scale
+ * factor have precedence over the unit symbol).
+ */
+ if (verify == null) {
+ try {
+ verify = parseUnit(name);
+ } catch (IllegalArgumentException | ParseException e) {
+ log(new LogRecord(Level.FINE, e.toString()));
+ }
+ if (verify != null) try {
+ if (Math.abs(verify.getConverterToAny(unit).convert(1) - 1) >
Numerics.COMPARISON_THRESHOLD) {
+ warning(parent, element,
Errors.formatInternational(Errors.Keys.UnexpectedScaleFactorForUnit_2, verify,
factor), null);
+ }
+ } catch (ConversionException e) {
+ throw (ParseException) new LocalizedParseException(errorLocale,
+ Errors.Keys.InconsistentUnitsForCS_1, new Object[]
{verify}, element.offset).initCause(e);
}
}
- return Units.multiply(baseUnit, factor);
+ return unit;
}
/**
@@ -1092,7 +1126,7 @@ final class GeodeticObjectParser extends
* 0 if undetermined (no axis order change).
*/
@Override
- public int compare(final CoordinateSystemAxis o1, final
CoordinateSystemAxis o2) {
+ public final int compare(final CoordinateSystemAxis o1, final
CoordinateSystemAxis o2) {
final Integer n1 = axisOrder.get(o1);
final Integer n2 = axisOrder.get(o2);
if (n1 != null) {
Modified:
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java?rev=1740554&r1=1740553&r2=1740554&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java
[UTF-8] Fri Apr 22 16:15:28 2016
@@ -245,7 +245,12 @@ class MathTransformParser extends Abstra
return Units.multiply(BASE_UNITS[index], factor);
}
// If we can not infer the base type, we have to rely on the name.
- return parseUnit(name);
+ try {
+ return parseUnit(name);
+ } catch (IllegalArgumentException e) {
+ throw (ParseException) new LocalizedParseException(errorLocale,
+ Errors.Keys.UnknownUnit_1, new Object[] {name},
element.offset).initCause(e);
+ }
}
/**
Modified:
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/WKTFormat.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/WKTFormat.java?rev=1740554&r1=1740553&r2=1740554&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/WKTFormat.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/WKTFormat.java
[UTF-8] Fri Apr 22 16:15:28 2016
@@ -726,7 +726,7 @@ public class WKTFormat extends CompoundF
private AbstractParser parser() {
AbstractParser parser = this.parser;
if (parser == null) {
- this.parser = parser = new GeodeticObjectParser(symbols,
fragments(),
+ this.parser = parser = new Parser(symbols, fragments(),
(NumberFormat) getFormat(Number.class),
(DateFormat) getFormat(Date.class),
(UnitFormat) getFormat(Unit.class),
@@ -739,6 +739,23 @@ public class WKTFormat extends CompoundF
}
/**
+ * The parser created by {@link #parser()}, identical to {@link
GeodeticObjectParser} except for
+ * the source of logging messages which is the enclosing {@code WKTParser}
instead than a factory.
+ */
+ private static final class Parser extends GeodeticObjectParser {
+ Parser(final Symbols symbols, final Map<String,Element> fragments,
+ final NumberFormat numberFormat, final DateFormat dateFormat,
final UnitFormat unitFormat,
+ final Convention convention, final Transliterator
transliterator, final Locale errorLocale,
+ final Map<Class<?>,Factory> factories)
+ {
+ super(symbols, fragments, numberFormat, dateFormat, unitFormat,
convention, transliterator, errorLocale, factories);
+ }
+
+ @Override String getPublicFacade() {return WKTFormat.class.getName();}
+ @Override String getFacadeMethod() {return "parse";}
+ }
+
+ /**
* Formats the specified object as a Well Know Text. The formatter accepts
at least the following types:
* {@link FormattableObject}, {@link IdentifiedObject},
* {@link org.opengis.referencing.operation.MathTransform},
Modified:
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java?rev=1740554&r1=1740553&r2=1740554&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
[UTF-8] Fri Apr 22 16:15:28 2016
@@ -42,6 +42,7 @@ import org.opengis.referencing.cs.*;
import org.opengis.referencing.crs.*;
import org.opengis.referencing.datum.*;
import org.opengis.referencing.operation.*;
+import org.opengis.parameter.ParameterNotFoundException;
import org.apache.sis.referencing.cs.*;
import org.apache.sis.referencing.crs.*;
import org.apache.sis.referencing.datum.*;
@@ -1629,7 +1630,25 @@ public class GeodeticObjectFactory exten
} catch (ReflectiveOperationException e) {
throw new FactoryException(e);
}
- final Object object = p.createFromWKT(text);
+ final Object object;
+ try {
+ object = p.createFromWKT(text);
+ } catch (FactoryException e) {
+ /*
+ * In the case of map projection, the parsing may fail because a
projection parameter is not known to SIS.
+ * If this happen, replace the generic exception thrown be the
parser (which is FactoryException) by a
+ * more specific one. Note that InvalidGeodeticParameterException
is defined only in this sis-referencing
+ * module, so we could not throw it from the sis-metadata module
that contain the parser.
+ */
+ Throwable cause = e.getCause();
+ while (cause != null) {
+ if (cause instanceof ParameterNotFoundException) {
+ throw new
InvalidGeodeticParameterException(e.getMessage(), cause); // More accurate
exception.
+ }
+ cause = cause.getCause();
+ }
+ throw e;
+ }
parser.set(p);
if (object instanceof CoordinateReferenceSystem) {
return (CoordinateReferenceSystem) object;
Modified:
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java?rev=1740554&r1=1740553&r2=1740554&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
[UTF-8] Fri Apr 22 16:15:28 2016
@@ -1371,7 +1371,25 @@ public class DefaultMathTransformFactory
* No need to check the type of the parsed object, because
MathTransformParser
* should return only instance of MathTransform.
*/
- final Object object = p.createFromWKT(text);
+ final Object object;
+ try {
+ object = p.createFromWKT(text);
+ } catch (FactoryException e) {
+ /*
+ * The parsing may fail because a operation parameter is not known
to SIS. If this happen, replace
+ * the generic exception thrown be the parser (which is
FactoryException) by a more specific one.
+ * Note that InvalidGeodeticParameterException is defined only in
this sis-referencing module,
+ * so we could not throw it from the sis-metadata module that
contain the parser.
+ */
+ Throwable cause = e.getCause();
+ while (cause != null) {
+ if (cause instanceof ParameterNotFoundException) {
+ throw new
InvalidGeodeticParameterException(e.getMessage(), cause); // More accurate
exception.
+ }
+ cause = cause.getCause();
+ }
+ throw e;
+ }
parser.set(p);
return (MathTransform) object;
}
Modified:
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java?rev=1740554&r1=1740553&r2=1740554&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
[UTF-8] Fri Apr 22 16:15:28 2016
@@ -1087,6 +1087,25 @@ public final strictfp class GeodeticObje
}
/**
+ * Ensures that parsing a WKT with wrong units throws an exception.
+ */
+ @Test
+ public void testIncompatibleUnits() {
+ try {
+ parse(GeographicCRS.class,
+ "GEOGCS[“NAD83”,\n" +
+ " DATUM[“North American Datum 1983”,\n" +
+ " SPHEROID[“GRS 1980”, 6378137.0, 298.257222]],\n" +
+ " PRIMEM[“Greenwich”, 0],\n" +
+ " UNIT[“km”, 1000]]");
// Wrong unit
+ fail("Should not have parsed a CRS with wrong unit of
measurement.");
+ } catch (ParseException e) {
+ final String message = e.getMessage();
+ assertTrue(message, message.contains("km"));
+ }
+ }
+
+ /**
* Tests the production of a warning messages when the WKT contains
unknown elements.
*
* @throws ParseException if the parsing failed.
@@ -1098,7 +1117,7 @@ public final strictfp class GeodeticObje
"GEOGCS[“WGS 84”,\n" +
" DATUM[“World Geodetic System 1984”,\n" +
" SPHEROID[“WGS84”, 6378137.0, 298.257223563, Ext1[“foo”],
Ext2[“bla”]]],\n" +
- " PRIMEM[“Greenwich”, 0.0, Intruder[“unknown”]],\n" +
+ " PRIMEM[“Greenwich”, 0.0, Intruder[“unknown”],
UNIT[“degree”, 0.01745]],\n" + // Truncated scale factor.
" UNIT[“degree”, 0.017453292519943295], Intruder[“foo”]]");
verifyGeographicCRS(0, crs);
@@ -1128,12 +1147,14 @@ public final strictfp class GeodeticObje
warnings.getUnknownElementLocations("Ext2").toArray());
assertMultilinesEquals("Parsing of “WGS 84” done, but some elements
were ignored.\n" +
+ " • Unexpected scale factor 0.017 for unit of
measurement “°”.\n" +
" • The text contains unknown elements:\n" +
" ‣ “Intruder” in PRIMEM, GEOGCS.\n" +
" ‣ “Ext1” in SPHEROID.\n" +
" ‣ “Ext2” in SPHEROID.",
warnings.toString(Locale.US));
assertMultilinesEquals("La lecture de « WGS 84 » a été faite, mais en
ignorant certains éléments.\n" +
+ " • Le facteur d’échelle 0,017 est inattendu
pour l’unité de mesure « ° ».\n" +
" • Le texte contient des éléments inconnus
:\n" +
" ‣ « Intruder » dans PRIMEM, GEOGCS.\n" +
" ‣ « Ext1 » dans SPHEROID.\n" +
Modified:
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java?rev=1740554&r1=1740553&r2=1740554&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
[UTF-8] Fri Apr 22 16:15:28 2016
@@ -1036,6 +1036,11 @@ public final class Errors extends Indexe
public static final short UnexpectedParameter_1 = 152;
/**
+ * Unexpected scale factor {1} for unit of measurement “{0}”.
+ */
+ public static final short UnexpectedScaleFactorForUnit_2 = 227;
+
+ /**
* Expected “{0}” to reference an instance of ‘{1}’, but found an
instance of ‘{2}’.
*/
public static final short UnexpectedTypeForReference_3 = 200;
Modified:
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties?rev=1740554&r1=1740553&r2=1740554&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
[ISO-8859-1] (original)
+++
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
[ISO-8859-1] Fri Apr 22 16:15:28 2016
@@ -218,6 +218,7 @@ UnexpectedEndOfString_1 = More
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.
+UnexpectedScaleFactorForUnit_2 = Unexpected scale factor {1} for unit of
measurement \u201c{0}\u201d.
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.
UnitlessParameter_1 = Parameter \u201c{0}\u201d has no unit.
Modified:
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties?rev=1740554&r1=1740553&r2=1740554&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
[ISO-8859-1] (original)
+++
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
[ISO-8859-1] Fri Apr 22 16:15:28 2016
@@ -214,6 +214,7 @@ UnexpectedEndOfString_1 = D\u2
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.
+UnexpectedScaleFactorForUnit_2 = Le facteur d\u2019\u00e9chelle {1} est
inattendu pour l\u2019unit\u00e9 de mesure \u00ab\u202f{0}\u202f\u00bb.
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.
UnexpectedValueInElement_2 = La valeur \u00ab\u202f{1}\u202f\u00bb dans
l\u2019\u00e9l\u00e9ment \u00ab\u202f{0}\u202f\u00bb est inattendue.
UnitlessParameter_1 = Le param\u00e8tre
\u00ab\u202f{0}\u202f\u00bb n\u2019a pas d\u2019unit\u00e9.