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=1548777&r1=1548776&r2=1548777&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] Sat Dec 7 02:00:42 2013
@@ -24,132 +24,138 @@
# programmatic parameters do not have to be last in the formatted text, since each localized message
# can reorder the parameters as they want.
#
-CanNotAddToExclusiveSet_2 = No element can be added to this set because properties \u2018{0}\u2019 and \u2018{1}\u2019 are mutually exclusive.
-CanNotConnectTo_1 = Can not connect to \u201c{0}\u201d.
-CanNotConvertFromType_2 = Can not convert from type \u2018{0}\u2019 to type \u2018{1}\u2019.
-CanNotConvertValue_2 = Can not convert value \u201c{0}\u201d to type \u2018{1}\u2019.
-CanNotComputeDerivative = Can not compute the derivative.
-CanNotInstantiate_1 = Can not instantiate an object of type \u2018{0}\u2019.
-CanNotMapAxisToDirection_2 = Can not map an axis from \u201c{0}\u201d to direction \u201c{1}\u201d.
-CanNotOpen_1 = Can not open \u201c{0}\u201d.
-CanNotParseFile_2 = Can not parse \u201c{1}\u201d as a file in the {0} format.
-CanNotRead_1 = Can not read \u201c{0}\u201d.
-CanNotRepresentInFormat_2 = Can not represent \u201c{1}\u201d in the {0} format.
-CanNotSetPropertyValue_1 = Can not set a value for property \u201c{0}\u201d.
-ClassNotFinal_1 = Class \u2018{0}\u2019 is not final.
-CloneNotSupported_1 = Can not clone an object of type \u2018{0}\u2019.
-ColinearAxisDirections_2 = Axis directions {0} and {1} are colinear.
-DeadThread_1 = Thread \u201c{0}\u201d is dead.
-DuplicatedElement_1 = Element \u201c{0}\u201d is duplicated.
-DuplicatedIdentifier_1 = Identifier \u201c{0}\u201d is duplicated.
-DuplicatedOption_1 = Option \u201c{0}\u201d is duplicated.
-ElementAlreadyPresent_1 = Element \u201c{0}\u201d is already present.
-EmptyArgument_1 = Argument \u2018{0}\u2019 shall not be empty.
-EmptyDictionary = The dictionary shall contain at least one entry.
-EmptyEnvelope2D = Envelope must be at least two-dimensional and non-empty.
-EmptyProperty_1 = Property named \u201c{0}\u201d shall not be empty.
-ExcessiveArgumentSize_3 = Argument \u2018{0}\u2019 shall not contain more than {1} elements. A number of {2} is excessive.
-ExcessiveListSize_2 = A size of {1} elements is excessive for the \u201c{0}\u201d list.
-ForbiddenAttribute_2 = Attribute \u201c{0}\u201d is not allowed for an object of type \u2018{1}\u2019.
-IllegalArgumentClass_2 = Argument \u2018{0}\u2019 can not be an instance of \u2018{1}\u2019.
-IllegalArgumentClass_3 = Argument \u2018{0}\u2019 can not be an instance of \u2018{2}\u2019. Expected an instance of \u2018{1}\u2019 or derived type.
-IllegalArgumentField_4 = Argument \u2018{0}\u2019 can not take the \u201c{1}\u201d value, because the \u2018{2}\u2019 field can not take the \u201c{3}\u201d value.
-IllegalArgumentValue_2 = Argument \u2018{0}\u2019 can not take the \u201c{1}\u201d value.
-IllegalOptionValue_2 = Option \u2018{0}\u2019 can not take the \u201c{1}\u201d value.
-IllegalBitsPattern_1 = Illegal bits pattern: {0}.
-IllegalClass_2 = Class \u2018{1}\u2019 is illegal. It must be \u2018{0}\u2019 or a derived class.
-IllegalFormatPatternForClass_2 = The \u201c{1}\u201d pattern can not be applied to formating of objects of type \u2018{0}\u2019.
-IllegalLanguageCode_1 = The \u201c{0}\u201d language is not recognized.
-IllegalMemberType_2 = Member \u201c{0}\u201d can not be associated to type \u201c{1}\u201d.
-IllegalOrdinateRange_3 = The [{0} \u2026 {1}] range of ordinate values is not valid for the \u201c{2}\u201d axis.
-IllegalPropertyClass_2 = Property \u2018{0}\u2019 does not accept instances of \u2018{1}\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.
-IncompatiblePropertyValue_1 = Property \u201c{0}\u201d has an incompatible value.
-IncompatibleUnits_2 = Units \u201c{0}\u201d and \u201c{1}\u201d are incompatible.
-InconsistentAttribute_2 = Value \u201c{1}\u201d of attribute \u2018{0}\u2019 is inconsistent with other attributes.
-InconsistentTableColumns = Inconsistent table columns.
-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.
-InfiniteArgumentValue_1 = Argument \u2018{0}\u2019 can not take an infinite value.
-InfiniteRecursivity = Infinite recursivity.
-InsufficientArgumentSize_3 = Argument \u2018{0}\u2019 shall contain at least {1} elements. A number of {2} is insufficient.
-KeyCollision_1 = A different value is already associated to the \u201c{0}\u201d key.
-MandatoryAttribute_2 = Attribute \u201c{0}\u201d is mandatory for an object of type \u2018{1}\u2019.
-MismatchedArrayLengths = Mismatched array lengths.
-MismatchedCRS = The coordinate reference system must be the same for all objects.
-MismatchedDimension_2 = Mismatched object dimensions: {0}D and {1}D.
-MismatchedDimension_3 = Argument \u2018{0}\u2019 has {2} dimension{2,choice,1#|2#s}, while {1} was expected.
-MismatchedMatrixSize_4 = Mismatched matrix sizes: expected {0}\u00d7{1} but got {2}\u00d7{3}.
-MissingRequiredModule_1 = This operation requires the \u201c{0}\u201d module.
-MissingSchemeInURI = Missing scheme in URI.
-MissingValueForOption_1 = Missing value for option \u201c{0}\u201d.
-MissingValueForProperty_1 = Missing value for property \u201c{0}\u201d.
-MissingValueInColumn_1 = Missing value in the \u201c{0}\u201d column.
-MutuallyExclusiveOptions_2 = Options \u201c{0}\u201d and \u201c{1}\u201d are mutually exclusive.
-NegativeArgument_2 = Argument \u2018{0}\u2019 shall not be negative. The given value was {1}.
-NegativeArrayLength_1 = Can not create a \u201c{0}\u201d array of negative length.
-NoConvergenceForPoints_2 = No convergence for points {0} and {1}.
-NodeChildOfItself_1 = Node \u201c{0}\u201d can not be a child of itself.
-NodeHasAnotherParent_1 = Node \u201c{0}\u201d already has another parent.
-NodeHasNoParent_1 = Node \u201c{0}\u201d has no parent.
-NodeIsLeaf_1 = Node \u201c{0}\u201d is a leaf.
-NodeNotFound_1 = No \u201c{0}\u201d node found.
-NonEquilibratedParenthesis_2 = Missing a \u2018{1}\u2019 parenthesis in \u201c{0}\u201d.
-NonInvertibleConversion = Conversion is not invertible.
-NonInvertibleMatrix_2 = Non invertible {0}\u00d7{1} matrix.
-NonInvertibleTransform = Transform is not invertible.
-NonAngularUnit_1 = \u201c{0}\u201d is not an angular unit.
-NonLinearUnit_1 = \u201c{0}\u201d is not a linear unit.
-NonScaleUnit_1 = \u201c{0}\u201d is not a scale unit.
-NonTemporalUnit_1 = \u201c{0}\u201d is not a time unit.
-NonUniformScale = Scale is not uniform.
-NotAnAffineTransform = Transform is not affine.
-NotANumber_1 = Argument \u2018{0}\u2019 shall not be NaN (Not-a-Number).
-NotAPrimitiveWrapper_1 = Class \u2018{0}\u2019 is not a primitive type wrapper.
-NotASkewSymmetricMatrix = Matrix is not skew-symmetric.
-NotAUnicodeIdentifier_1 = Text \u201c{0}\u201d is not a Unicode identifier.
-NotComparableClass_1 = Class \u2018{0}\u2019 is not a comparable.
-NoSuchElement_1 = Element \u201c{0}\u201d has not been found.
-NoSuchProperty_2 = No property named \u201c{0}\u201d has been found in \u201c{1}\u201d.
-NoUnit = No unit of measurement has been specified.
-NullArgument_1 = Argument \u2018{0}\u2019 shall not be null.
+CanNotAddToExclusiveSet_2 = No element can be added to this set because properties \u2018{0}\u2019 and \u2018{1}\u2019 are mutually exclusive.
+CanNotConnectTo_1 = Can not connect to \u201c{0}\u201d.
+CanNotConvertFromType_2 = Can not convert from type \u2018{0}\u2019 to type \u2018{1}\u2019.
+CanNotConvertValue_2 = Can not convert value \u201c{0}\u201d to type \u2018{1}\u2019.
+CanNotComputeDerivative = Can not compute the derivative.
+CanNotInstantiate_1 = Can not instantiate an object of type \u2018{0}\u2019.
+CanNotMapAxisToDirection_2 = Can not map an axis from \u201c{0}\u201d to direction \u201c{1}\u201d.
+CanNotOpen_1 = Can not open \u201c{0}\u201d.
+CanNotParseFile_2 = Can not parse \u201c{1}\u201d as a file in the {0} format.
+CanNotRead_1 = Can not read \u201c{0}\u201d.
+CanNotRepresentInFormat_2 = Can not represent \u201c{1}\u201d in the {0} format.
+CanNotSetPropertyValue_1 = Can not set a value for property \u201c{0}\u201d.
+ClassNotFinal_1 = Class \u2018{0}\u2019 is not final.
+CloneNotSupported_1 = Can not clone an object of type \u2018{0}\u2019.
+ColinearAxisDirections_2 = Axis directions {0} and {1} are colinear.
+DeadThread_1 = Thread \u201c{0}\u201d is dead.
+DuplicatedElement_1 = Element \u201c{0}\u201d is duplicated.
+DuplicatedIdentifier_1 = Identifier \u201c{0}\u201d is duplicated.
+DuplicatedOption_1 = Option \u201c{0}\u201d is duplicated.
+ElementAlreadyPresent_1 = Element \u201c{0}\u201d is already present.
+EmptyArgument_1 = Argument \u2018{0}\u2019 shall not be empty.
+EmptyDictionary = The dictionary shall contain at least one entry.
+EmptyEnvelope2D = Envelope must be at least two-dimensional and non-empty.
+EmptyProperty_1 = Property named \u201c{0}\u201d shall not be empty.
+ExcessiveArgumentSize_3 = Argument \u2018{0}\u2019 shall not contain more than {1} elements. A number of {2} is excessive.
+ExcessiveListSize_2 = A size of {1} elements is excessive for the \u201c{0}\u201d list.
+ForbiddenAttribute_2 = Attribute \u201c{0}\u201d is not allowed for an object of type \u2018{1}\u2019.
+IllegalArgumentClass_2 = Argument \u2018{0}\u2019 can not be an instance of \u2018{1}\u2019.
+IllegalArgumentClass_3 = Argument \u2018{0}\u2019 can not be an instance of \u2018{2}\u2019. Expected an instance of \u2018{1}\u2019 or derived type.
+IllegalArgumentField_4 = Argument \u2018{0}\u2019 can not take the \u201c{1}\u201d value, because the \u2018{2}\u2019 field can not take the \u201c{3}\u201d value.
+IllegalArgumentValue_2 = Argument \u2018{0}\u2019 can not take the \u201c{1}\u201d value.
+IllegalAxisDirection_2 = Coordinate system of class \u2018{0}\u2019 can not have axis in the {1} direction.
+IllegalOptionValue_2 = Option \u2018{0}\u2019 can not take the \u201c{1}\u201d value.
+IllegalBitsPattern_1 = Illegal bits pattern: {0}.
+IllegalClass_2 = Class \u2018{1}\u2019 is illegal. It must be \u2018{0}\u2019 or a derived class.
+IllegalFormatPatternForClass_2 = The \u201c{1}\u201d pattern can not be applied to formating of objects of type \u2018{0}\u2019.
+IllegalLanguageCode_1 = The \u201c{0}\u201d language is not recognized.
+IllegalMemberType_2 = Member \u201c{0}\u201d can not be associated to type \u201c{1}\u201d.
+IllegalOrdinateRange_3 = The [{0} \u2026 {1}] range of ordinate values is not valid for the \u201c{2}\u201d axis.
+IllegalPropertyClass_2 = Property \u2018{0}\u2019 does not accept instances of \u2018{1}\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.
+IncompatibleCoordinateSystemTypes = Incompatible coordinate system types.
+IncompatiblePropertyValue_1 = Property \u201c{0}\u201d has an incompatible value.
+IncompatibleUnits_2 = Units \u201c{0}\u201d and \u201c{1}\u201d are incompatible.
+InconsistentAttribute_2 = Value \u201c{1}\u201d of attribute \u2018{0}\u2019 is inconsistent with other attributes.
+InconsistentTableColumns = Inconsistent table columns.
+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.
+InfiniteArgumentValue_1 = Argument \u2018{0}\u2019 can not take an infinite value.
+InfiniteRecursivity = Infinite recursivity.
+InsufficientArgumentSize_3 = Argument \u2018{0}\u2019 shall contain at least {1} elements. A number of {2} is insufficient.
+KeyCollision_1 = A different value is already associated to the \u201c{0}\u201d key.
+MandatoryAttribute_2 = Attribute \u201c{0}\u201d is mandatory for an object of type \u2018{1}\u2019.
+MismatchedArrayLengths = Mismatched array lengths.
+MismatchedCRS = The coordinate reference system must be the same for all objects.
+MismatchedDimension_2 = Mismatched object dimensions: {0}D and {1}D.
+MismatchedDimension_3 = Argument \u2018{0}\u2019 has {2} dimension{2,choice,1#|2#s}, while {1} was expected.
+MismatchedMatrixSize_4 = Mismatched matrix sizes: expected {0}\u00d7{1} but got {2}\u00d7{3}.
+MissingRequiredModule_1 = This operation requires the \u201c{0}\u201d module.
+MissingSchemeInURI = Missing scheme in URI.
+MissingValueForOption_1 = Missing value for option \u201c{0}\u201d.
+MissingValueForProperty_1 = Missing value for property \u201c{0}\u201d.
+MissingValueInColumn_1 = Missing value in the \u201c{0}\u201d column.
+MutuallyExclusiveOptions_2 = Options \u201c{0}\u201d and \u201c{1}\u201d are mutually exclusive.
+NegativeArgument_2 = Argument \u2018{0}\u2019 shall not be negative. The given value was {1}.
+NegativeArrayLength_1 = Can not create a \u201c{0}\u201d array of negative length.
+NoConvergenceForPoints_2 = No convergence for points {0} and {1}.
+NodeChildOfItself_1 = Node \u201c{0}\u201d can not be a child of itself.
+NodeHasAnotherParent_1 = Node \u201c{0}\u201d already has another parent.
+NodeHasNoParent_1 = Node \u201c{0}\u201d has no parent.
+NodeIsLeaf_1 = Node \u201c{0}\u201d is a leaf.
+NodeNotFound_1 = No \u201c{0}\u201d node found.
+NonEquilibratedParenthesis_2 = Missing a \u2018{1}\u2019 parenthesis in \u201c{0}\u201d.
+NonInvertibleConversion = Conversion is not invertible.
+NonInvertibleMatrix_2 = Non invertible {0}\u00d7{1} matrix.
+NonInvertibleTransform = Transform is not invertible.
+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.
+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.
+NonUniformScale = Scale is not uniform.
+NotAnAffineTransform = Transform is not affine.
+NotANumber_1 = Argument \u2018{0}\u2019 shall not be NaN (Not-a-Number).
+NotAPrimitiveWrapper_1 = Class \u2018{0}\u2019 is not a primitive type wrapper.
+NotASkewSymmetricMatrix = Matrix is not skew-symmetric.
+NotAUnicodeIdentifier_1 = Text \u201c{0}\u201d is not a Unicode identifier.
+NotComparableClass_1 = Class \u2018{0}\u2019 is not a comparable.
+NoSuchElement_1 = Element \u201c{0}\u201d has not been found.
+NoSuchProperty_2 = No property named \u201c{0}\u201d has been found in \u201c{1}\u201d.
+NoUnit = No unit of measurement has been specified.
+NullArgument_1 = Argument \u2018{0}\u2019 shall not be null.
# Use the OGC/ISO "Dictionary" word instead of "Map" for avoiding confusion with geographic map.
-NullMapKey = Null key is not allowed in this dictionary.
-NullMapValue = Null values are not allowed in this dictionary.
-OddArrayLength_1 = Array length is {0}, while we expected an even length.
-SingularMatrix = Matrix is singular.
-RecursiveCreateCallForKey_1 = Recursive call while creating an object for the \u201c{0}\u201d key.
-RequireDecimalSeparator = A decimal separator is required.
-StalledThread_1 = Thread \u201c{0}\u201d seems stalled.
-StreamIsForwardOnly_1 = Can not move backward in the \u201c{0}\u201d stream.
-TooFewArguments_2 = Expected at least {0} argument{0,choice,1#|2#s}, but got {1}.
-TooManyArguments_2 = Expected at most {0} argument{0,choice,1#|2#s}, but got {1}.
-UndefinedOrderingForElements_2 = Ordering between \u201c{0}\u201d and \u201c{1}\u201d elements is undefined.
-UnexpectedArrayLength_2 = Expected an array of length {0}, but got {1}.
-UnexpectedChange_1 = Unexpected change in \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}.
-UnknownCommand_1 = Command \u201c{0}\u201d is not recognized.
-UnknownEnumValue_1 = Unknown enumeration value: {0}.
-UnknownFormatFor_1 = Format of \u201c{0}\u201d is not recognized.
-UnknownOption_1 = Option \u201c{0}\u201d is not recognized.
-UnknownType_1 = Type \u2018{0}\u2019 is unknown in this context.
-UnknownTypeForProperty_1 = Type of the \u201c{0}\u201d property is unknown.
-UnmodifiableAffineTransform = This affine transform is unmodifiable.
-UnmodifiableCellValue_2 = The cell at column \u201c{1}\u201d of row \u201c{0}\u201d is unmodifiable.
-UnmodifiableGeometry = This geometry is unmodifiable.
-UnmodifiableMetadata = This metadata is unmodifiable.
-UnmodifiableObject_1 = Object \u2018{0}\u2019 is unmodifiable.
-UnparsableStringForClass_2 = Text \u201c{1}\u201d can not be parsed as an object of type \u2018{0}\u2019.
-UnparsableStringForClass_3 = Text \u201c{1}\u201d can not be parsed as an object of type \u2018{0}\u2019, because of the \u201c{2}\u201d characters.
-UnspecifiedFormatForClass_1 = No format is specified for objects of class \u2018{0}\u2019.
-UnsupportedImplementation_1 = Can not handle instances of \u2018{0}\u2019 because arbitrary implementations are not yet supported.
-UnsupportedOperation_1 = The \u2018{0}\u2019 operation is unsupported.
-UnsupportedType_1 = The \u2018{0}\u2019 type is unsupported.
-UnsupportedVersion_1 = Version {0} is not supported.
-ValueAlreadyDefined_1 = A value is already defined for \u201c{0}\u201d.
-ValueNotGreaterThanZero_2 = Value \u2018{0}\u2019={1} is invalid. Expected a number greater than 0.
-ValueOutOfRange_4 = Value \u2018{0}\u2019={3} is invalid. Expected a value in the [{1} \u2026 {2}] range.
+NullMapKey = Null key is not allowed in this dictionary.
+NullMapValue = Null values are not allowed in this dictionary.
+OddArrayLength_1 = Array length is {0}, while we expected an even length.
+SingularMatrix = Matrix is singular.
+RecursiveCreateCallForKey_1 = Recursive call while creating an object for the \u201c{0}\u201d key.
+RequireDecimalSeparator = A decimal separator is required.
+StalledThread_1 = Thread \u201c{0}\u201d seems stalled.
+StreamIsForwardOnly_1 = Can not move backward in the \u201c{0}\u201d stream.
+TooFewArguments_2 = Expected at least {0} argument{0,choice,1#|2#s}, but got {1}.
+TooManyArguments_2 = Expected at most {0} argument{0,choice,1#|2#s}, but got {1}.
+UndefinedOrderingForElements_2 = Ordering between \u201c{0}\u201d and \u201c{1}\u201d elements is undefined.
+UnexpectedArrayLength_2 = Expected an array of length {0}, but got {1}.
+UnexpectedChange_1 = Unexpected change in \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}.
+UnknownAxisDirection_1 = Axis direction \u201c{0}\u201d is unknown.
+UnknownCommand_1 = Command \u201c{0}\u201d is not recognized.
+UnknownEnumValue_1 = Unknown enumeration value: {0}.
+UnknownFormatFor_1 = Format of \u201c{0}\u201d is not recognized.
+UnknownOption_1 = Option \u201c{0}\u201d is not recognized.
+UnknownType_1 = Type \u2018{0}\u2019 is unknown in this context.
+UnknownTypeForProperty_1 = Type of the \u201c{0}\u201d property is unknown.
+UnmodifiableAffineTransform = This affine transform is unmodifiable.
+UnmodifiableCellValue_2 = The cell at column \u201c{1}\u201d of row \u201c{0}\u201d is unmodifiable.
+UnmodifiableGeometry = This geometry is unmodifiable.
+UnmodifiableMetadata = This metadata is unmodifiable.
+UnmodifiableObject_1 = Object \u2018{0}\u2019 is unmodifiable.
+UnparsableStringForClass_2 = Text \u201c{1}\u201d can not be parsed as an object of type \u2018{0}\u2019.
+UnparsableStringForClass_3 = Text \u201c{1}\u201d can not be parsed as an object of type \u2018{0}\u2019, because of the \u201c{2}\u201d characters.
+UnspecifiedFormatForClass_1 = No format is specified for objects of class \u2018{0}\u2019.
+UnsupportedImplementation_1 = Can not handle instances of \u2018{0}\u2019 because arbitrary implementations are not yet supported.
+UnsupportedOperation_1 = The \u2018{0}\u2019 operation is unsupported.
+UnsupportedType_1 = The \u2018{0}\u2019 type is unsupported.
+UnsupportedVersion_1 = Version {0} is not supported.
+ValueAlreadyDefined_1 = A value is already defined for \u201c{0}\u201d.
+ValueNotGreaterThanZero_2 = Value \u2018{0}\u2019={1} is invalid. Expected a number greater than 0.
+ValueOutOfRange_4 = Value \u2018{0}\u2019={3} is invalid. Expected a value in the [{1} \u2026 {2}] range.
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=1548777&r1=1548776&r2=1548777&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] Sat Dec 7 02:00:42 2013
@@ -14,131 +14,137 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-CanNotAddToExclusiveSet_2 = Aucun \u00e9l\u00e9ment ne peut \u00eatre ajout\u00e9 \u00e0 cet ensemble car les propri\u00e9t\u00e9s \u2018{0}\u2019 et \u2018{1}\u2019 sont mutuellement exclusives.
-CanNotConnectTo_1 = Ne peut pas se connecter \u00e0 \u201c{0}\u201d.
-CanNotConvertFromType_2 = Ne peut pas convertir du type \u2018{0}\u2019 vers le type \u2018{1}\u2019.
-CanNotConvertValue_2 = La valeur \u201c{0}\u201d ne peut pas \u00eatre convertie vers le type \u2018{1}\u2019.
-CanNotComputeDerivative = La d\u00e9riv\u00e9 ne peut pas \u00eatre calcul\u00e9e.
-CanNotInstantiate_1 = Ne peut pas cr\u00e9er un objet de type \u2018{0}\u2019.
-CanNotMapAxisToDirection_2 = Aucun axe de \u201c{0}\u201d n\u2019a pu \u00eatre associ\u00e9 \u00e0 la direction \u201c{1}\u201d.
-CanNotOpen_1 = Ne peut pas ouvrir \u201c{0}\u201d.
-CanNotParseFile_2 = Ne peut pas lire \u201c{1}\u201d comme un fichier au format {0}.
-CanNotRead_1 = Ne peut pas lire \u201c{0}\u201d.
-CanNotRepresentInFormat_2 = Ne peut pas repr\u00e9senter \u201c{1}\u201d dans le format {0}.
-CanNotSetPropertyValue_1 = Ne peut pas d\u00e9finir une valeur pour la propri\u00e9t\u00e9 \u201c{0}\u201d.
-ClassNotFinal_1 = La classe \u2018{0}\u2019 n\u2019est pas finale.
-CloneNotSupported_1 = Un objet de type \u2018{0}\u2019 ne peut pas \u00eatre clon\u00e9.
-ColinearAxisDirections_2 = Les directions d\u2019axes {0} et {1} sont colin\u00e9aires.
-DeadThread_1 = La t\u00e2che \u201c{0}\u201d est morte.
-DuplicatedElement_1 = L\u2019\u00e9lement \u201c{0}\u201d est dupliqu\u00e9.
-DuplicatedIdentifier_1 = L\u2019identifiant \u201c{0}\u201d est dupliqu\u00e9.
-DuplicatedOption_1 = L\u2019option \u201c{0}\u201d est dupliqu\u00e9e.
-ElementAlreadyPresent_1 = L\u2019\u00e9lement \u201c{0}\u201d est d\u00e9j\u00e0 pr\u00e9sent.
-EmptyArgument_1 = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre vide.
-EmptyDictionary = Le dictionnaire doit contenir au moins une entr\u00e9e.
-EmptyEnvelope2D = L\u2019enveloppe doit avoir au moins deux dimensions et ne pas \u00eatre vide.
-EmptyProperty_1 = La propri\u00e9t\u00e9 nomm\u00e9e \u201c{0}\u201d ne doit pas \u00eatre vide.
-ExcessiveArgumentSize_3 = L\u2019argument \u2018{0}\u2019 ne peut pas contenir plus de {1} \u00e9l\u00e9ments. Un nombre de {2} est excessif.
-ExcessiveListSize_2 = Une taille de {1} \u00e9l\u00e9ments est excessive pour la liste \u201c{0}\u201d.
-ForbiddenAttribute_2 = L\u2019attribut \u201c{0}\u201d n\u2019est pas autoris\u00e9 pour un objet de type \u2018{1}\u2019.
-IllegalArgumentClass_2 = L\u2019argument \u2018{0}\u2019 ne peut pas \u00eatre de type \u2018{1}\u2019.
-IllegalArgumentClass_3 = L\u2019argument \u2018{0}\u2019 ne peut pas \u00eatre de type \u2018{2}\u2019. Une instance de \u2018{1}\u2019 ou d\u2019un type d\u00e9riv\u00e9 \u00e9tait attendue.
-IllegalArgumentField_4 = L\u2019argument \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d parce que le champs \u2018{2}\u2019 ne peut pas prendre la valeur \u201c{3}\u201d.
-IllegalArgumentValue_2 = L\u2019argument \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d.
-IllegalOptionValue_2 = L\u2019option \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d.
-IllegalBitsPattern_1 = Pattern de bits invalide: {0}.
-IllegalClass_2 = La classe \u2018{1}\u2019 est ill\u00e9gale. Il doit s\u2019agir d\u2019une classe \u2018{0}\u2019 ou d\u00e9riv\u00e9e.
-IllegalFormatPatternForClass_2 = Le mod\u00e8le \u201c{1}\u201d ne peut pas \u00eatre appliqu\u00e9 au formatage d\u2019objets de type \u2018{0}\u2019.
-IllegalLanguageCode_1 = Le code de langue \u201c{0}\u201d n\u2019est pas reconnu.
-IllegalMemberType_2 = Le membre \u201c{0}\u201d ne peut pas \u00eatre associ\u00e9 au type \u201c{1}\u201d.
-IllegalOrdinateRange_3 = La plage de valeurs de coordonn\u00e9es [{1} \u2026 {2}] n\u2019est pas valide pour l\u2019axe \u201c{0}\u201d.
-IllegalPropertyClass_2 = La propri\u00e9t\u00e9 \u2018{0}\u2019 n\u2019accepte pas les valeurs de type \u2018{1}\u2019.
-IllegalRange_2 = La plage [{0} \u2026 {1}] n\u2019est pas valide.
-IllegalUnicodeCodePoint_2 = La valeur {1} de \u201c{0}\u201d n\u2019est pas un code Unicode valide.
-IncompatiblePropertyValue_1 = La valeur de la propri\u00e9t\u00e9 \u201c{0}\u201d n\u2019est pas compatible.
-IncompatibleUnits_2 = Les unit\u00e9s \u201c{0}\u201d et \u201c{1}\u201d ne sont pas compatibles.
-InconsistentAttribute_2 = La valeur \u201c{1}\u201d de l\u2019attribut \u2018{0}\u2019 n\u2019est pas coh\u00e9rente avec celles des autres attributs.
-InconsistentTableColumns = Les colonnes des tables ne sont pas coh\u00e9rentes.
-IdentifierAlreadyBound_1 = L\u2019identifiant \u201c{0}\u201d 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.
-InfiniteArgumentValue_1 = L\u2019argument \u2018{0}\u2019 ne peut pas prendre une valeur infinie.
-InfiniteRecursivity = R\u00e9cursivit\u00e9 infinie.
-InsufficientArgumentSize_3 = L\u2019argument \u2018{0}\u2019 doit contenir au moins {1} \u00e9l\u00e9ments. Un nombre de {2} est insuffisant.
-KeyCollision_1 = Une valeur diff\u00e9rente est d\u00e9j\u00e0 associ\u00e9e \u00e0 la cl\u00e9 \u201c{0}\u201d.
-MandatoryAttribute_2 = L\u2019attribut \u201c{0}\u201d est obligatoire pour un objet de type \u2018{1}\u2019.
-MismatchedArrayLengths = Les dimensions des tableaux ne correspondent pas.
-MismatchedCRS = Le syst\u00e8me de r\u00e9f\u00e9rence des coordonn\u00e9es doit \u00eatre le m\u00eame pour tous les objets.
-MismatchedDimension_2 = Les dimensions des objets ({0}D et {1}D) ne concordent pas.
-MismatchedDimension_3 = L\u2019argument \u2018{0}\u2019 a {2} dimension{2,choice,1#|2#s}, alors qu\u2019on en attendait {1}.
-MismatchedMatrixSize_4 = Une matrice de taille de {0}\u00d7{1} \u00e9tait attendue mais la matrice donn\u00e9es est de taille {2}\u00d7{3}.
-MissingRequiredModule_1 = Cette op\u00e9ration requiert le module \u201c{0}\u201d.
-MissingSchemeInURI = Il manque le sch\u00e9ma d\u2019URI.
-MissingValueForOption_1 = Aucune valeur n\u2019a \u00e9t\u00e9 d\u00e9finie pour l\u2019option \u201c{0}\u201d.
-MissingValueForProperty_1 = Aucune valeur n\u2019a \u00e9t\u00e9 d\u00e9finie pour la propri\u00e9t\u00e9 \u201c{0}\u201d.
-MissingValueInColumn_1 = Il manque une valeur dans la colonne \u201c{0}\u201d.
-MutuallyExclusiveOptions_2 = Les options \u201c{0}\u201d et \u201c{1}\u201d sont mutuellement exclusives.
-NegativeArgument_2 = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre n\u00e9gatif. La valeur donn\u00e9e \u00e9tait {1}.
-NegativeArrayLength_1 = Ne peut pas cr\u00e9er un tableau \u201c{0}\u201d de longueur n\u00e9gative.
-NoConvergenceForPoints_2 = Le calcul ne converge pas pour les points {0} et {1}.
-NodeChildOfItself_1 = Le n\u0153ud \u201c{0}\u201d ne peut pas \u00eatre un enfant de lui-m\u00eame.
-NodeHasAnotherParent_1 = Le n\u0153ud \u201c{0}\u201d a d\u00e9j\u00e0 un autre parent.
-NodeHasNoParent_1 = Le n\u0153ud \u201c{0}\u201d n\u2019a pas de parent.
-NodeIsLeaf_1 = Le n\u0153ud \u201c{0}\u201d est une feuille.
-NodeNotFound_1 = Aucun n\u0153ud \u201c{0}\u201d n\u2019a \u00e9t\u00e9 trouv\u00e9.
-NonEquilibratedParenthesis_2 = Il manque une parenth\u00e8se \u2018{1}\u2019 dans \u201c{0}\u201d.
-NonInvertibleConversion = La conversion n\u2019est pas inversible.
-NonInvertibleMatrix_2 = Matrice {0}\u00d7{1} non inversible.
-NonInvertibleTransform = La transformation n\u2019est pas inversible.
-NonAngularUnit_1 = \u201c{0}\u201d n\u2019est pas une unit\u00e9 d\u2019angles.
-NonLinearUnit_1 = \u201c{0}\u201d n\u2019est pas une unit\u00e9 de longueurs.
-NonScaleUnit_1 = \u201c{0}\u201d n\u2019est pas une unit\u00e9 d\u2019\u00e9chelles.
-NonTemporalUnit_1 = \u201c{0}\u201d n\u2019est pas une unit\u00e9 de temps.
-NonUniformScale = L\u2019\u00e9chelle n\u2019est pas uniforme.
-NotAnAffineTransform = La transformation n\u2019est pas affine.
-NotANumber_1 = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre NaN (Not-a-Number).
-NotAPrimitiveWrapper_1 = La classe \u2018{0}\u2019 n\u2019est pas un adaptateur d\u2019un type primitif.
-NotASkewSymmetricMatrix = La matrice n\u2019est pas antisym\u00e9trique.
-NotAUnicodeIdentifier_1 = Le texte \u201c{0}\u201d n\u2019est pas un identifiant Unicode.
-NotComparableClass_1 = La classe \u2018{0}\u2019 n\u2019est pas comparable.
-NoSuchElement_1 = L\u2019\u00e9lement \u201c{0}\u201d n\u2019a pas \u00e9t\u00e9 trouv\u00e9.
-NoSuchProperty_2 = Aucune propri\u00e9t\u00e9 nomm\u00e9e \u201c{0}\u201d n\u2019a \u00e9t\u00e9 trouv\u00e9e dans \u201c{1}\u201d.
-NoUnit = Aucune unit\u00e9 de mesure n\u2019a \u00e9t\u00e9 sp\u00e9cifi\u00e9e.
-NullArgument_1 = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre nul.
-NullMapKey = La cl\u00e9 nulle n\u2019est pas autoris\u00e9e dans ce dictionnaire.
-NullMapValue = Les valeurs nulles ne sont pas autoris\u00e9es dans ce dictionnaire.
-OddArrayLength_1 = La longueur du tableau est {0}, alors qu\u2019on attendait une longueur paire.
-RecursiveCreateCallForKey_1 = Appel r\u00e9cursif lors de la cr\u00e9ation d\u2019un objet pour la cl\u00e9 \u201c{0}\u201d.
-RequireDecimalSeparator = Un s\u00e9parateur d\u00e9cimal est requis.
-SingularMatrix = La matrice est singuli\u00e8re.
-StalledThread_1 = La t\u00e2che \u201c{0}\u201d semble bloqu\u00e9e.
-StreamIsForwardOnly_1 = Ne peut pas reculer dans le flux de donn\u00e9es \u201c{0}\u201d.
-TooFewArguments_2 = Au moins {0} argument{0,choice,1# \u00e9tait attendu|2#s \u00e9taient attendus}, mais seulement {1} {1,choice,1#a \u00e9t\u00e9 sp\u00e9cifi\u00e9|2#ont \u00e9t\u00e9 sp\u00e9cifi\u00e9s}.
-TooManyArguments_2 = Au plus {0} argument{0,choice,1# \u00e9tait attendu|2#s \u00e9taient attendus}, mais {1} {1,choice,1#a \u00e9t\u00e9 sp\u00e9cifi\u00e9|2#ont \u00e9t\u00e9 sp\u00e9cifi\u00e9s}.
-UndefinedOrderingForElements_2 = L\u2019ordre entre les \u00e9l\u00e9ments \u201c{0}\u201d et \u201c{1}\u201d n\u2019est pas d\u00e9fini.
-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.
-UnexpectedEndOfFile_1 = Fin de fichier inattendue lors de la lecture de \u201c{0}\u201d.
-UnexpectedEndOfString_1 = D\u2019autres caract\u00e8res \u00e9taient attendus \u00e0 la fin du texte \u201c{0}\u201d.
-UnexpectedFileFormat_2 = Le fichier \u201c{1}\u201d semble \u00eatre encod\u00e9 dans un autre format que {0}.
-UnknownCommand_1 = La commande \u201c{0}\u201d n\u2019est pas reconnue.
-UnknownEnumValue_1 = Valeur d\u2019\u00e9num\u00e9ration inconnue: {0}.
-UnknownFormatFor_1 = Le format de \u201c{0}\u201d n\u2019est pas reconnu.
-UnknownOption_1 = L\u2019option \u201c{0}\u201d n\u2019est pas reconnue.
-UnknownType_1 = Le type \u2018{0}\u2019 n\u2019est pas reconnu dans ce contexte.
-UnknownTypeForProperty_1 = Le type de la propri\u00e9t\u00e9 \u201c{0}\u201d est inconnu.
-UnmodifiableAffineTransform = Cette transformation affine n\u2019est pas modifiable.
-UnmodifiableCellValue_2 = La cellule \u00e0 la colonne \u201c{1}\u201d de la ligne \u201c{0}\u201d n\u2019est pas modifiable.
-UnmodifiableGeometry = Cette g\u00e9om\u00e9trie n\u2019est pas modifiable.
-UnmodifiableMetadata = Cette m\u00e9ta-donn\u00e9e n\u2019est pas modifiable.
-UnmodifiableObject_1 = L\u2019objet \u2018{0}\u2019 n\u2019est pas modifiable.
-UnspecifiedFormatForClass_1 = Aucun format n\u2019est sp\u00e9cifi\u00e9 pour les objets de classe \u2018{0}\u2019.
-UnparsableStringForClass_2 = Le texte \u201c{1}\u201d n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019.
-UnparsableStringForClass_3 = Le texte \u201c{1}\u201d n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019, \u00e0 cause des caract\u00e8res \u201c{2}\u201d.
-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.
-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.
-UnsupportedVersion_1 = La version {0} n\u2019est pas support\u00e9e.
-ValueAlreadyDefined_1 = Une valeur est d\u00e9j\u00e0 d\u00e9finie pour \u201c{0}\u201d.
-ValueNotGreaterThanZero_2 = La valeur \u2018{0}\u2019={1} n\u2019est pas valide. On attendait un nombre positif non-nul.
-ValueOutOfRange_4 = La valeur \u2018{0}\u2019={3} est invalide. Une valeur dans la plage [{1} \u2026 {2}] \u00e9tait attendue.
+CanNotAddToExclusiveSet_2 = Aucun \u00e9l\u00e9ment ne peut \u00eatre ajout\u00e9 \u00e0 cet ensemble car les propri\u00e9t\u00e9s \u2018{0}\u2019 et \u2018{1}\u2019 sont mutuellement exclusives.
+CanNotConnectTo_1 = Ne peut pas se connecter \u00e0 \u201c{0}\u201d.
+CanNotConvertFromType_2 = Ne peut pas convertir du type \u2018{0}\u2019 vers le type \u2018{1}\u2019.
+CanNotConvertValue_2 = La valeur \u201c{0}\u201d ne peut pas \u00eatre convertie vers le type \u2018{1}\u2019.
+CanNotComputeDerivative = La d\u00e9riv\u00e9 ne peut pas \u00eatre calcul\u00e9e.
+CanNotInstantiate_1 = Ne peut pas cr\u00e9er un objet de type \u2018{0}\u2019.
+CanNotMapAxisToDirection_2 = Aucun axe de \u201c{0}\u201d n\u2019a pu \u00eatre associ\u00e9 \u00e0 la direction \u201c{1}\u201d.
+CanNotOpen_1 = Ne peut pas ouvrir \u201c{0}\u201d.
+CanNotParseFile_2 = Ne peut pas lire \u201c{1}\u201d comme un fichier au format {0}.
+CanNotRead_1 = Ne peut pas lire \u201c{0}\u201d.
+CanNotRepresentInFormat_2 = Ne peut pas repr\u00e9senter \u201c{1}\u201d dans le format {0}.
+CanNotSetPropertyValue_1 = Ne peut pas d\u00e9finir une valeur pour la propri\u00e9t\u00e9 \u201c{0}\u201d.
+ClassNotFinal_1 = La classe \u2018{0}\u2019 n\u2019est pas finale.
+CloneNotSupported_1 = Un objet de type \u2018{0}\u2019 ne peut pas \u00eatre clon\u00e9.
+ColinearAxisDirections_2 = Les directions d\u2019axes {0} et {1} sont colin\u00e9aires.
+DeadThread_1 = La t\u00e2che \u201c{0}\u201d est morte.
+DuplicatedElement_1 = L\u2019\u00e9lement \u201c{0}\u201d est dupliqu\u00e9.
+DuplicatedIdentifier_1 = L\u2019identifiant \u201c{0}\u201d est dupliqu\u00e9.
+DuplicatedOption_1 = L\u2019option \u201c{0}\u201d est dupliqu\u00e9e.
+ElementAlreadyPresent_1 = L\u2019\u00e9lement \u201c{0}\u201d est d\u00e9j\u00e0 pr\u00e9sent.
+EmptyArgument_1 = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre vide.
+EmptyDictionary = Le dictionnaire doit contenir au moins une entr\u00e9e.
+EmptyEnvelope2D = L\u2019enveloppe doit avoir au moins deux dimensions et ne pas \u00eatre vide.
+EmptyProperty_1 = La propri\u00e9t\u00e9 nomm\u00e9e \u201c{0}\u201d ne doit pas \u00eatre vide.
+ExcessiveArgumentSize_3 = L\u2019argument \u2018{0}\u2019 ne peut pas contenir plus de {1} \u00e9l\u00e9ments. Un nombre de {2} est excessif.
+ExcessiveListSize_2 = Une taille de {1} \u00e9l\u00e9ments est excessive pour la liste \u201c{0}\u201d.
+ForbiddenAttribute_2 = L\u2019attribut \u201c{0}\u201d n\u2019est pas autoris\u00e9 pour un objet de type \u2018{1}\u2019.
+IllegalArgumentClass_2 = L\u2019argument \u2018{0}\u2019 ne peut pas \u00eatre de type \u2018{1}\u2019.
+IllegalArgumentClass_3 = L\u2019argument \u2018{0}\u2019 ne peut pas \u00eatre de type \u2018{2}\u2019. Une instance de \u2018{1}\u2019 ou d\u2019un type d\u00e9riv\u00e9 \u00e9tait attendue.
+IllegalArgumentField_4 = L\u2019argument \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d parce que le champs \u2018{2}\u2019 ne peut pas prendre la valeur \u201c{3}\u201d.
+IllegalArgumentValue_2 = L\u2019argument \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d.
+IllegalAxisDirection_2 = Les syst\u00e8mes de coordonn\u00e9es de classe \u2018{0}\u2019 ne peuvent pas avoir d\u2019axe dans la direction \u201c{1}\u201d.
+IllegalOptionValue_2 = L\u2019option \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d.
+IllegalBitsPattern_1 = Pattern de bits invalide: {0}.
+IllegalClass_2 = La classe \u2018{1}\u2019 est ill\u00e9gale. Il doit s\u2019agir d\u2019une classe \u2018{0}\u2019 ou d\u00e9riv\u00e9e.
+IllegalFormatPatternForClass_2 = Le mod\u00e8le \u201c{1}\u201d ne peut pas \u00eatre appliqu\u00e9 au formatage d\u2019objets de type \u2018{0}\u2019.
+IllegalLanguageCode_1 = Le code de langue \u201c{0}\u201d n\u2019est pas reconnu.
+IllegalMemberType_2 = Le membre \u201c{0}\u201d ne peut pas \u00eatre associ\u00e9 au type \u201c{1}\u201d.
+IllegalOrdinateRange_3 = La plage de valeurs de coordonn\u00e9es [{1} \u2026 {2}] n\u2019est pas valide pour l\u2019axe \u201c{0}\u201d.
+IllegalPropertyClass_2 = La propri\u00e9t\u00e9 \u2018{0}\u2019 n\u2019accepte pas les valeurs de type \u2018{1}\u2019.
+IllegalRange_2 = La plage [{0} \u2026 {1}] n\u2019est pas valide.
+IllegalUnicodeCodePoint_2 = La valeur {1} de \u201c{0}\u201d n\u2019est pas un code Unicode valide.
+IllegalUnitFor_2 = L\u2019unit\u00e9 de mesure \u201c{1}\u201d n\u2019est pas valide pour les valeurs de \u201c{0}\u201d.
+IncompatibleCoordinateSystemTypes = Types de syst\u00e8mes de coordonn\u00e9es incompatibles.
+IncompatiblePropertyValue_1 = La valeur de la propri\u00e9t\u00e9 \u201c{0}\u201d n\u2019est pas compatible.
+IncompatibleUnits_2 = Les unit\u00e9s \u201c{0}\u201d et \u201c{1}\u201d ne sont pas compatibles.
+InconsistentAttribute_2 = La valeur \u201c{1}\u201d de l\u2019attribut \u2018{0}\u2019 n\u2019est pas coh\u00e9rente avec celles des autres attributs.
+InconsistentTableColumns = Les colonnes des tables ne sont pas coh\u00e9rentes.
+IdentifierAlreadyBound_1 = L\u2019identifiant \u201c{0}\u201d 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.
+InfiniteArgumentValue_1 = L\u2019argument \u2018{0}\u2019 ne peut pas prendre une valeur infinie.
+InfiniteRecursivity = R\u00e9cursivit\u00e9 infinie.
+InsufficientArgumentSize_3 = L\u2019argument \u2018{0}\u2019 doit contenir au moins {1} \u00e9l\u00e9ments. Un nombre de {2} est insuffisant.
+KeyCollision_1 = Une valeur diff\u00e9rente est d\u00e9j\u00e0 associ\u00e9e \u00e0 la cl\u00e9 \u201c{0}\u201d.
+MandatoryAttribute_2 = L\u2019attribut \u201c{0}\u201d est obligatoire pour un objet de type \u2018{1}\u2019.
+MismatchedArrayLengths = Les dimensions des tableaux ne correspondent pas.
+MismatchedCRS = Le syst\u00e8me de r\u00e9f\u00e9rence des coordonn\u00e9es doit \u00eatre le m\u00eame pour tous les objets.
+MismatchedDimension_2 = Les dimensions des objets ({0}D et {1}D) ne concordent pas.
+MismatchedDimension_3 = L\u2019argument \u2018{0}\u2019 a {2} dimension{2,choice,1#|2#s}, alors qu\u2019on en attendait {1}.
+MismatchedMatrixSize_4 = Une matrice de taille de {0}\u00d7{1} \u00e9tait attendue mais la matrice donn\u00e9es est de taille {2}\u00d7{3}.
+MissingRequiredModule_1 = Cette op\u00e9ration requiert le module \u201c{0}\u201d.
+MissingSchemeInURI = Il manque le sch\u00e9ma d\u2019URI.
+MissingValueForOption_1 = Aucune valeur n\u2019a \u00e9t\u00e9 d\u00e9finie pour l\u2019option \u201c{0}\u201d.
+MissingValueForProperty_1 = Aucune valeur n\u2019a \u00e9t\u00e9 d\u00e9finie pour la propri\u00e9t\u00e9 \u201c{0}\u201d.
+MissingValueInColumn_1 = Il manque une valeur dans la colonne \u201c{0}\u201d.
+MutuallyExclusiveOptions_2 = Les options \u201c{0}\u201d et \u201c{1}\u201d sont mutuellement exclusives.
+NegativeArgument_2 = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre n\u00e9gatif. La valeur donn\u00e9e \u00e9tait {1}.
+NegativeArrayLength_1 = Ne peut pas cr\u00e9er un tableau \u201c{0}\u201d de longueur n\u00e9gative.
+NoConvergenceForPoints_2 = Le calcul ne converge pas pour les points {0} et {1}.
+NodeChildOfItself_1 = Le n\u0153ud \u201c{0}\u201d ne peut pas \u00eatre un enfant de lui-m\u00eame.
+NodeHasAnotherParent_1 = Le n\u0153ud \u201c{0}\u201d a d\u00e9j\u00e0 un autre parent.
+NodeHasNoParent_1 = Le n\u0153ud \u201c{0}\u201d n\u2019a pas de parent.
+NodeIsLeaf_1 = Le n\u0153ud \u201c{0}\u201d est une feuille.
+NodeNotFound_1 = Aucun n\u0153ud \u201c{0}\u201d n\u2019a \u00e9t\u00e9 trouv\u00e9.
+NonEquilibratedParenthesis_2 = Il manque une parenth\u00e8se \u2018{1}\u2019 dans \u201c{0}\u201d.
+NonInvertibleConversion = La conversion n\u2019est pas inversible.
+NonInvertibleMatrix_2 = Matrice {0}\u00d7{1} non inversible.
+NonInvertibleTransform = La transformation n\u2019est pas inversible.
+NonAngularUnit_1 = \u201c{0}\u201d n\u2019est pas une unit\u00e9 d\u2019angles.
+NonLinearUnit_1 = \u201c{0}\u201d n\u2019est pas une unit\u00e9 de longueurs.
+NonLinearUnitConversion_2 = La conversion des unit\u00e9s \u201c{0}\u201d vers \u201c{1}\u201d n\u2019est pas lin\u00e9aire.
+NonPerpendicularDirections_2 = Les directions {0} et {1} ne sont pas perpendiculaires.
+NonScaleUnit_1 = \u201c{0}\u201d n\u2019est pas une unit\u00e9 d\u2019\u00e9chelles.
+NonTemporalUnit_1 = \u201c{0}\u201d n\u2019est pas une unit\u00e9 de temps.
+NonUniformScale = L\u2019\u00e9chelle n\u2019est pas uniforme.
+NotAnAffineTransform = La transformation n\u2019est pas affine.
+NotANumber_1 = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre NaN (Not-a-Number).
+NotAPrimitiveWrapper_1 = La classe \u2018{0}\u2019 n\u2019est pas un adaptateur d\u2019un type primitif.
+NotASkewSymmetricMatrix = La matrice n\u2019est pas antisym\u00e9trique.
+NotAUnicodeIdentifier_1 = Le texte \u201c{0}\u201d n\u2019est pas un identifiant Unicode.
+NotComparableClass_1 = La classe \u2018{0}\u2019 n\u2019est pas comparable.
+NoSuchElement_1 = L\u2019\u00e9lement \u201c{0}\u201d n\u2019a pas \u00e9t\u00e9 trouv\u00e9.
+NoSuchProperty_2 = Aucune propri\u00e9t\u00e9 nomm\u00e9e \u201c{0}\u201d n\u2019a \u00e9t\u00e9 trouv\u00e9e dans \u201c{1}\u201d.
+NoUnit = Aucune unit\u00e9 de mesure n\u2019a \u00e9t\u00e9 sp\u00e9cifi\u00e9e.
+NullArgument_1 = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre nul.
+NullMapKey = La cl\u00e9 nulle n\u2019est pas autoris\u00e9e dans ce dictionnaire.
+NullMapValue = Les valeurs nulles ne sont pas autoris\u00e9es dans ce dictionnaire.
+OddArrayLength_1 = La longueur du tableau est {0}, alors qu\u2019on attendait une longueur paire.
+RecursiveCreateCallForKey_1 = Appel r\u00e9cursif lors de la cr\u00e9ation d\u2019un objet pour la cl\u00e9 \u201c{0}\u201d.
+RequireDecimalSeparator = Un s\u00e9parateur d\u00e9cimal est requis.
+SingularMatrix = La matrice est singuli\u00e8re.
+StalledThread_1 = La t\u00e2che \u201c{0}\u201d semble bloqu\u00e9e.
+StreamIsForwardOnly_1 = Ne peut pas reculer dans le flux de donn\u00e9es \u201c{0}\u201d.
+TooFewArguments_2 = Au moins {0} argument{0,choice,1# \u00e9tait attendu|2#s \u00e9taient attendus}, mais seulement {1} {1,choice,1#a \u00e9t\u00e9 sp\u00e9cifi\u00e9|2#ont \u00e9t\u00e9 sp\u00e9cifi\u00e9s}.
+TooManyArguments_2 = Au plus {0} argument{0,choice,1# \u00e9tait attendu|2#s \u00e9taient attendus}, mais {1} {1,choice,1#a \u00e9t\u00e9 sp\u00e9cifi\u00e9|2#ont \u00e9t\u00e9 sp\u00e9cifi\u00e9s}.
+UndefinedOrderingForElements_2 = L\u2019ordre entre les \u00e9l\u00e9ments \u201c{0}\u201d et \u201c{1}\u201d n\u2019est pas d\u00e9fini.
+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.
+UnexpectedEndOfFile_1 = Fin de fichier inattendue lors de la lecture de \u201c{0}\u201d.
+UnexpectedEndOfString_1 = D\u2019autres caract\u00e8res \u00e9taient attendus \u00e0 la fin du texte \u201c{0}\u201d.
+UnexpectedFileFormat_2 = Le fichier \u201c{1}\u201d semble \u00eatre encod\u00e9 dans un autre format que {0}.
+UnknownAxisDirection_1 = La direction d\u2019axe \u201c{0}\u201d n\u2019est pas reconnue.
+UnknownCommand_1 = La commande \u201c{0}\u201d n\u2019est pas reconnue.
+UnknownEnumValue_1 = Valeur d\u2019\u00e9num\u00e9ration inconnue: {0}.
+UnknownFormatFor_1 = Le format de \u201c{0}\u201d n\u2019est pas reconnu.
+UnknownOption_1 = L\u2019option \u201c{0}\u201d n\u2019est pas reconnue.
+UnknownType_1 = Le type \u2018{0}\u2019 n\u2019est pas reconnu dans ce contexte.
+UnknownTypeForProperty_1 = Le type de la propri\u00e9t\u00e9 \u201c{0}\u201d est inconnu.
+UnmodifiableAffineTransform = Cette transformation affine n\u2019est pas modifiable.
+UnmodifiableCellValue_2 = La cellule \u00e0 la colonne \u201c{1}\u201d de la ligne \u201c{0}\u201d n\u2019est pas modifiable.
+UnmodifiableGeometry = Cette g\u00e9om\u00e9trie n\u2019est pas modifiable.
+UnmodifiableMetadata = Cette m\u00e9ta-donn\u00e9e n\u2019est pas modifiable.
+UnmodifiableObject_1 = L\u2019objet \u2018{0}\u2019 n\u2019est pas modifiable.
+UnspecifiedFormatForClass_1 = Aucun format n\u2019est sp\u00e9cifi\u00e9 pour les objets de classe \u2018{0}\u2019.
+UnparsableStringForClass_2 = Le texte \u201c{1}\u201d n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019.
+UnparsableStringForClass_3 = Le texte \u201c{1}\u201d n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019, \u00e0 cause des caract\u00e8res \u201c{2}\u201d.
+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.
+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.
+UnsupportedVersion_1 = La version {0} n\u2019est pas support\u00e9e.
+ValueAlreadyDefined_1 = Une valeur est d\u00e9j\u00e0 d\u00e9finie pour \u201c{0}\u201d.
+ValueNotGreaterThanZero_2 = La valeur \u2018{0}\u2019={1} n\u2019est pas valide. On attendait un nombre positif non-nul.
+ValueOutOfRange_4 = La valeur \u2018{0}\u2019={3} est invalide. Une valeur dans la plage [{1} \u2026 {2}] \u00e9tait attendue.
Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/Namespaces.java
URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/Namespaces.java?rev=1548777&r1=1548776&r2=1548777&view=diff
==============================================================================
--- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/Namespaces.java [UTF-8] (original)
+++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/Namespaces.java [UTF-8] Sat Dec 7 02:00:42 2013
@@ -109,14 +109,16 @@ public final class Namespaces extends St
/**
* The <code>{@value}</code> URL.
* The usual prefix for this namespace is {@code "gml"}.
+ * The current version is 3.2 (ISO 19136), but this may change in any future SIS release.
*
* @category OGC
*/
- public static final String GML = "http://www.opengis.net/gml";
+ public static final String GML = "http://www.opengis.net/gml/3.2";
/**
* The <code>{@value}</code> URL.
* The usual prefix for this namespace is {@code "csw"}.
+ * The current version is 2.0.2, but this may change in any future SIS release.
*
* @category OGC
*/
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=1548777&r1=1548776&r2=1548777&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] Sat Dec 7 02:00:42 2013
@@ -36,6 +36,7 @@ import org.apache.sis.util.resources.Err
import org.apache.sis.util.logging.WarningListener;
import org.apache.sis.internal.util.CollectionsExt;
import org.apache.sis.internal.jaxb.Context;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
/**
@@ -118,8 +119,26 @@ abstract class Pooled {
private Map<String,String> schemas;
/**
+ * Whether {@link FilteredNamespaces} shall be used of not. Values can be:
+ *
+ * <ul>
+ * <li>0 for the default behavior, which is apply namespace replacements only if the {@link XML#GML_VERSION}
+ * property is set to an older value than the one supported natively by SIS.</li>
+ * <li>1 for forcing namespace replacements at unmarshalling time. This is useful for reading a XML document
+ * of unknown GML version.</li>
+ * <li>2 for disabling namespace replacements. XML (un)marshalling will use the namespaces URI supported
+ * natively by SIS as declared in JAXB annotations. This is sometime useful for debugging purpose.</li>
+ * </ul>
+ *
+ * @see LegacyNamespaces#APPLY_NAMESPACE_REPLACEMENTS
+ */
+ private byte applyNamespaceReplacements;
+
+ /**
* The GML version to be marshalled or unmarshalled, or {@code null} if unspecified.
* If null, then the latest version is assumed.
+ *
+ * @see #getGMLVersion()
*/
private Version gmlVersion;
@@ -186,14 +205,6 @@ abstract class Pooled {
}
/**
- * Returns the initial value of {@link Context#bitMasks}. Shall be 0 if this object is
- * an unmarshaller, or {@link Context#MARSHALLING} if it is an {@link Unmarshaller}.
- */
- private int initialBitMasks() {
- return (this instanceof Marshaller) ? Context.MARSHALLING : 0;
- }
-
- /**
* Releases resources and resets the (un)marshaller to its initial state.
* This method is invoked by {@link MarshallerPool} just before to push a
* (un)marshaller in the pool after its usage.
@@ -206,7 +217,7 @@ abstract class Pooled {
reset(entry.getKey(), entry.getValue());
}
initialProperties.clear();
- bitMasks = initialBitMasks();
+ bitMasks = template.bitMasks;
locale = template.locale;
timezone = template.timezone;
schemas = template.schemas;
@@ -215,6 +226,9 @@ abstract class Pooled {
converter = template.converter;
warningListener = template.warningListener;
resetTime = System.nanoTime();
+ if (this instanceof Marshaller) {
+ bitMasks |= Context.MARSHALLING;
+ }
}
/**
@@ -231,6 +245,38 @@ abstract class Pooled {
protected abstract void reset(final Object key, final Object value) throws JAXBException;
/**
+ * Returns the {@code FilterVersion} enumeration value to use for the current GML version, or
+ * {@code null} if the SIS native version is suitable. If this method returns a non-null value,
+ * then the output generated by JAXB will need to go through a {@link FilteredStreamWriter}
+ * in order to replace the namespace of the GML version implemented by SIS by the namespace of
+ * the GML version asked by the user.
+ *
+ * @see FilteredNamespaces
+ */
+ final FilterVersion getFilterVersion() {
+ switch (applyNamespaceReplacements) {
+ case 0: {
+ // Apply namespace replacements only for older versions than the one supported natively by SIS.
+ if (gmlVersion != null) {
+ if (gmlVersion.compareTo(LegacyNamespaces.VERSION_3_2, 2) < 0) {
+ return FilterVersion.GML31;
+ }
+ }
+ break;
+ }
+ case 1: {
+ // Force namespace replacements at unmarshalling time (illegal for marshalling).
+ if ((bitMasks & Context.MARSHALLING) == 0) {
+ return FilterVersion.ALL;
+ }
+ break;
+ }
+ // case 2: disable namespace replacements.
+ }
+ return null;
+ }
+
+ /**
* Returns {@code true} if the initial property is already saved for the given key.
* Note that a property set to {@code null} is still considered as defined.
*/
@@ -282,11 +328,11 @@ abstract class Pooled {
locale = (value instanceof CharSequence) ? Locales.parse(value.toString()) : (Locale) value;
return;
}
- else if (name.equals(XML.TIMEZONE)) {
+ if (name.equals(XML.TIMEZONE)) {
timezone = (value instanceof CharSequence) ? TimeZone.getTimeZone(value.toString()) : (TimeZone) value;
return;
}
- else if (name.equals(XML.SCHEMAS)) {
+ if (name.equals(XML.SCHEMAS)) {
final Map<?,?> map = (Map<?,?>) value;
Map<String,String> copy = null;
if (map != null) {
@@ -306,40 +352,49 @@ abstract class Pooled {
schemas = copy;
return;
}
- else if (name.equals(XML.GML_VERSION)) {
+ if (name.equals(XML.GML_VERSION)) {
gmlVersion = (value instanceof CharSequence) ? new Version(value.toString()) : (Version) value;
return;
}
- else if (name.equals(XML.RESOLVER)) {
+ if (name.equals(XML.RESOLVER)) {
resolver = (ReferenceResolver) value;
return;
}
- else if (name.equals(XML.CONVERTER)) {
+ if (name.equals(XML.CONVERTER)) {
converter = (ValueConverter) value;
return;
}
- else if (name.equals(XML.STRING_SUBSTITUTES)) {
- int mask = initialBitMasks();
+ if (name.equals(XML.STRING_SUBSTITUTES)) {
+ bitMasks &= ~(Context.SUBSTITUTE_LANGUAGE |
+ Context.SUBSTITUTE_COUNTRY |
+ Context.SUBSTITUTE_FILENAME |
+ Context.SUBSTITUTE_MIMETYPE);
if (value != null) {
for (final CharSequence substitute : (CharSequence[]) value) {
if (CharSequences.equalsIgnoreCase(substitute, "language")) {
- mask |= Context.SUBSTITUTE_LANGUAGE;
+ bitMasks |= Context.SUBSTITUTE_LANGUAGE;
} else if (CharSequences.equalsIgnoreCase(substitute, "country")) {
- mask |= Context.SUBSTITUTE_COUNTRY;
+ bitMasks |= Context.SUBSTITUTE_COUNTRY;
} else if (CharSequences.equalsIgnoreCase(substitute, "filename")) {
- mask |= Context.SUBSTITUTE_FILENAME;
+ bitMasks |= Context.SUBSTITUTE_FILENAME;
} else if (CharSequences.equalsIgnoreCase(substitute, "mimetype")) {
- mask |= Context.SUBSTITUTE_MIMETYPE;
+ bitMasks |= Context.SUBSTITUTE_MIMETYPE;
}
}
}
- bitMasks = mask;
return;
}
- else if (name.equals(XML.WARNING_LISTENER)) {
+ if (name.equals(XML.WARNING_LISTENER)) {
warningListener = (WarningListener<?>) value;
return;
}
+ if (name.equals(LegacyNamespaces.APPLY_NAMESPACE_REPLACEMENTS)) {
+ applyNamespaceReplacements = 0;
+ if (value != null) {
+ applyNamespaceReplacements = ((Boolean) value) ? (byte) 1 : (byte) 2;
+ }
+ return;
+ }
}
} catch (RuntimeException e) { // (ClassCastException | IllegalArgumentException) on the JDK7 branch.
throw new PropertyException(Errors.format(
@@ -380,9 +435,14 @@ abstract class Pooled {
if ((bitMasks & Context.SUBSTITUTE_MIMETYPE) != 0) substitutes[n++] = "mimetype";
return (n != 0) ? ArraysExt.resize(substitutes, n) : null;
}
- else {
- return getStandardProperty(convertPropertyKey(name));
+ if (name.equals(LegacyNamespaces.APPLY_NAMESPACE_REPLACEMENTS)) {
+ switch (applyNamespaceReplacements) {
+ case 1: return Boolean.TRUE;
+ case 2: return Boolean.FALSE;
+ default: return null;
+ }
}
+ return getStandardProperty(convertPropertyKey(name));
}
}
Modified: sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/PooledMarshaller.java
URL: http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/PooledMarshaller.java?rev=1548777&r1=1548776&r2=1548777&view=diff
==============================================================================
--- sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/PooledMarshaller.java [UTF-8] (original)
+++ sis/trunk/core/sis-utility/src/main/java/org/apache/sis/xml/PooledMarshaller.java [UTF-8] Sat Dec 7 02:00:42 2013
@@ -19,6 +19,9 @@ package org.apache.sis.xml;
import java.io.File;
import java.io.Writer;
import java.io.OutputStream;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.JAXBException;
import javax.xml.bind.PropertyException;
@@ -27,28 +30,32 @@ import javax.xml.bind.annotation.adapter
import javax.xml.bind.attachment.AttachmentMarshaller;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLStreamWriter;
+import javax.xml.stream.XMLStreamException;
import javax.xml.transform.Result;
import javax.xml.validation.Schema;
import org.xml.sax.ContentHandler;
import org.w3c.dom.Node;
import org.apache.sis.util.Decorator;
import org.apache.sis.internal.jaxb.Context;
+import org.apache.sis.internal.system.XMLOutputFactory;
/**
* Wraps a {@link Marshaller} in order to have some control on the modifications applied on it.
- * This wrapper serves two purpose:
+ * This wrapper serves three purposes:
*
* <ul>
* <li>Save properties before modification, in order to restore them to their original values
* when the marshaller is recycled.</li>
* <li>Constructs a SIS {@link Context} object on marshalling, in order to give
* additional information to the SIS object being marshalled.</li>
+ * <li>Wraps the output stream in a {@link FilteredStreamWriter} if the desired GML version
+ * in not the SIS native GML version.</li>
* </ul>
*
* @author Martin Desruisseaux (Geomatys)
* @since 0.3 (derived from geotk-3.00)
- * @version 0.3
+ * @version 0.4
* @module
*/
@Decorator(Marshaller.class)
@@ -86,7 +93,7 @@ final class PooledMarshaller extends Poo
if (key instanceof String) {
final String k = (String) key;
if (value == null && (k.endsWith(".xmlHeaders") || k.equals(JAXB_SCHEMA_LOCATION))) {
- value = ""; // Null value doesn't seem to be accepted.
+ value = ""; // Null value doesn't seem to be accepted for those properties.
}
marshaller.setProperty(k, value);
} else if (key == AttachmentMarshaller.class) {
@@ -103,16 +110,54 @@ final class PooledMarshaller extends Poo
}
/**
- * Delegates the marshalling to the wrapped marshaller.
+ * Returns the encoding of the XML document to write.
*/
- @Override
- public void marshal(final Object object, final Result output) throws JAXBException {
+ private String getEncoding() throws PropertyException {
+ return (String) marshaller.getProperty(JAXB_ENCODING);
+ }
+
+ /**
+ * Marshals to the given output with on-the-fly substitution of namespaces.
+ * This method is invoked only when the user asked to marshal to a different GML version
+ * than the one supported natively by SIS, i.e. when {@link #getFilterVersion()} returns
+ * a non-null value.
+ *
+ * @param object The object to marshall.
+ * @param output The writer created by SIS (<b>not</b> the writer given by the user).
+ * @param version Identify the namespace substitutions to perform.
+ */
+ private void marshal(final Object object, XMLStreamWriter output, final FilterVersion version)
+ throws XMLStreamException, JAXBException
+ {
+ output = new FilteredStreamWriter(output, version);
final Context context = begin();
try {
marshaller.marshal(object, output);
} finally {
context.finish();
}
+ output.close(); // Despite its name, this method does not close the underlying output stream.
+ }
+
+ /**
+ * Delegates the marshalling to the wrapped marshaller.
+ */
+ @Override
+ public void marshal(final Object object, final Result output) throws JAXBException {
+ final FilterVersion version = getFilterVersion();
+ if (version != null) try {
+ marshal(object, XMLOutputFactory.createXMLStreamWriter(output), version);
+ } catch (XMLStreamException e) {
+ throw new JAXBException(e);
+ } else {
+ // Marshalling to the default GML version.
+ final Context context = begin();
+ try {
+ marshaller.marshal(object, output);
+ } finally {
+ context.finish();
+ }
+ }
}
/**
@@ -120,11 +165,19 @@ final class PooledMarshaller extends Poo
*/
@Override
public void marshal(final Object object, final OutputStream output) throws JAXBException {
- final Context context = begin();
- try {
- marshaller.marshal(object, output);
- } finally {
- context.finish();
+ final FilterVersion version = getFilterVersion();
+ if (version != null) try {
+ marshal(object, XMLOutputFactory.createXMLStreamWriter(output, getEncoding()), version);
+ } catch (XMLStreamException e) {
+ throw new JAXBException(e);
+ } else {
+ // Marshalling to the default GML version.
+ final Context context = begin();
+ try {
+ marshaller.marshal(object, output);
+ } finally {
+ context.finish();
+ }
}
}
@@ -133,11 +186,24 @@ final class PooledMarshaller extends Poo
*/
@Override
public void marshal(final Object object, final File output) throws JAXBException {
- final Context context = begin();
- try {
- marshaller.marshal(object, output);
- } finally {
- context.finish();
+ final FilterVersion version = getFilterVersion();
+ if (version != null) try {
+ final OutputStream s = new BufferedOutputStream(new FileOutputStream(output));
+ try {
+ marshal(object, XMLOutputFactory.createXMLStreamWriter(s, getEncoding()), version);
+ } finally {
+ s.close();
+ }
+ } catch (Exception e) { // (IOException | XMLStreamException) on the JDK7 branch.
+ throw new JAXBException(e);
+ } else {
+ // Marshalling to the default GML version.
+ final Context context = begin();
+ try {
+ marshaller.marshal(object, output);
+ } finally {
+ context.finish();
+ }
}
}
@@ -146,11 +212,19 @@ final class PooledMarshaller extends Poo
*/
@Override
public void marshal(final Object object, final Writer output) throws JAXBException {
- final Context context = begin();
- try {
- marshaller.marshal(object, output);
- } finally {
- context.finish();
+ final FilterVersion version = getFilterVersion();
+ if (version != null) try {
+ marshal(object, XMLOutputFactory.createXMLStreamWriter(output), version);
+ } catch (XMLStreamException e) {
+ throw new JAXBException(e);
+ } else {
+ // Marshalling to the default GML version.
+ final Context context = begin();
+ try {
+ marshaller.marshal(object, output);
+ } finally {
+ context.finish();
+ }
}
}
@@ -159,11 +233,19 @@ final class PooledMarshaller extends Poo
*/
@Override
public void marshal(final Object object, final ContentHandler output) throws JAXBException {
- final Context context = begin();
- try {
- marshaller.marshal(object, output);
- } finally {
- context.finish();
+ final FilterVersion version = getFilterVersion();
+ if (version != null) try {
+ marshal(object, XMLOutputFactory.createXMLStreamWriter(output), version);
+ } catch (XMLStreamException e) {
+ throw new JAXBException(e);
+ } else {
+ // Marshalling to the default GML version.
+ final Context context = begin();
+ try {
+ marshaller.marshal(object, output);
+ } finally {
+ context.finish();
+ }
}
}
@@ -172,11 +254,19 @@ final class PooledMarshaller extends Poo
*/
@Override
public void marshal(final Object object, final Node output) throws JAXBException {
- final Context context = begin();
- try {
- marshaller.marshal(object, output);
- } finally {
- context.finish();
+ final FilterVersion version = getFilterVersion();
+ if (version != null) try {
+ marshal(object, XMLOutputFactory.createXMLStreamWriter(output), version);
+ } catch (XMLStreamException e) {
+ throw new JAXBException(e);
+ } else {
+ // Marshalling to the default GML version.
+ final Context context = begin();
+ try {
+ marshaller.marshal(object, output);
+ } finally {
+ context.finish();
+ }
}
}
@@ -184,7 +274,11 @@ final class PooledMarshaller extends Poo
* Delegates the marshalling to the wrapped marshaller.
*/
@Override
- public void marshal(final Object object, final XMLStreamWriter output) throws JAXBException {
+ public void marshal(final Object object, XMLStreamWriter output) throws JAXBException {
+ final FilterVersion version = getFilterVersion();
+ if (version != null) {
+ output = new FilteredStreamWriter(output, version);
+ }
final Context context = begin();
try {
marshaller.marshal(object, output);
@@ -198,11 +292,19 @@ final class PooledMarshaller extends Poo
*/
@Override
public void marshal(final Object object, final XMLEventWriter output) throws JAXBException {
- final Context context = begin();
- try {
- marshaller.marshal(object, output);
- } finally {
- context.finish();
+ final FilterVersion version = getFilterVersion();
+ if (version != null) try {
+ marshal(object, XMLOutputFactory.createXMLStreamWriter(output), version);
+ } catch (XMLStreamException e) {
+ throw new JAXBException(e);
+ } else {
+ // Marshalling to the default GML version.
+ final Context context = begin();
+ try {
+ marshaller.marshal(object, output);
+ } finally {
+ context.finish();
+ }
}
}
@@ -211,11 +313,17 @@ final class PooledMarshaller extends Poo
*/
@Override
public Node getNode(final Object object) throws JAXBException {
- final Context context = begin();
- try {
- return marshaller.getNode(object);
- } finally {
- context.finish();
+ final FilterVersion version = getFilterVersion();
+ if (version != null) {
+ // This exception is thrown by javax.xml.bind.helpers.AbstractMarshallerImpl anyway.
+ throw new UnsupportedOperationException();
+ } else {
+ final Context context = begin();
+ try {
+ return marshaller.getNode(object);
+ } finally {
+ context.finish();
+ }
}
}
|