You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2016/04/20 15:49:35 UTC

svn commit: r1740146 [1/7] - in /sis/branches/JDK7: ./ core/sis-feature/ core/sis-feature/src/main/java/org/apache/sis/feature/ core/sis-feature/src/main/java/org/apache/sis/internal/ core/sis-feature/src/main/java/org/apache/sis/internal/feature/ core...

Author: desruisseaux
Date: Wed Apr 20 13:49:33 2016
New Revision: 1740146

URL: http://svn.apache.org/viewvc?rev=1740146&view=rev
Log:
Merge from the JDK8 branch. The sis-xmlstore module and the org.apache.sis.filter package
have been excluded from this merge in order to give more time for tuning them.
They will be merged after the SIS 0.7 release.

Added:
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java
      - copied, changed from r1740143, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureOperations.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureOperations.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/InvalidFeatureException.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/InvalidFeatureException.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/StringJoinOperation.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/StringJoinOperation.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/internal/
      - copied from r1740143, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/internal/
    sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/EnvelopeOperationTest.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/EnvelopeOperationTest.java
    sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/StringJoinOperationTest.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/StringJoinOperationTest.java
    sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/internal/
      - copied from r1740143, sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/internal/
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ParametricDatum.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ParametricDatum.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_ParametricCS.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_ParametricCS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/CoordinateOperations.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/CoordinateOperations.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/SignReversalComment.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/SignReversalComment.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeodeticOperation.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeodeticOperation.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic2Dto3D.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic2Dto3D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3DtoVertical.txt
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3DtoVertical.txt
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Interpolation1D.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Interpolation1D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Providers.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Providers.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
      - copied, changed from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/SubOperationInfo.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/SubOperationInfo.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/ProviderMock.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/ProviderMock.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/ProvidersTest.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/ProvidersTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationFinderTest.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationFinderTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationRegistryTest.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationRegistryTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactoryTest.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactoryTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1DTest.java
      - copied unchanged from r1740143, sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1DTest.java
Removed:
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/CoordinateOperations.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationInference.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/AllProvidersTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/MockProvider.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationInferenceTest.java
Modified:
    sis/branches/JDK7/   (props changed)
    sis/branches/JDK7/core/sis-feature/pom.xml
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractOperation.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/LinkOperation.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/MultiValuedAttribute.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/internal/feature/FeatureTypeBuilder.java
    sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/FeaturesTest.java
    sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/LinkOperationTest.java
    sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/SingletonAttributeTest.java
    sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisDirections.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ReferencingServices.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/WKTKeywords.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/AbstractParser.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/Formatter.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/ArrayEnvelope.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralDirectPosition.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralEnvelope.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/SubEnvelope.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationMethod.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/GeodeticObjectBuilder.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Legacy.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/PositionalAccuracyConstant.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/ReferencingUtilities.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/ServicesForMetadata.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/AbridgedMolodensky.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/AbstractProvider.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Affine.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/CoordinateFrameRotation.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/CoordinateFrameRotation2D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/CoordinateFrameRotation3D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/FranceGeocentricInterpolation.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricAffine.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricAffineBetweenGeographic.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricTranslation.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricTranslation2D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricTranslation3D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3Dto2D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeographicOffsets.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeographicOffsets2D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LongitudeRotation.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Molodensky.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MolodenskyInterpolation.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PositionVector7Param.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PositionVector7Param2D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PositionVector7Param3D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/VerticalOffset.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptorGroup.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/AuthorityFactories.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeocentricCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeodeticCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeographicCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultProjectedCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/package-info.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCompoundCS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/AbstractDatum.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/CommonAuthorityFactory.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectFinder.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/InstallationScriptProvider.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CRSPair.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationContext.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactory.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/InverseOperationMethod.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/AffineTransforms2D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/MatrixSIS.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/package-info.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform1D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform1D.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MathTransforms.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/package-info.java
    sis/branches/JDK7/core/sis-referencing/src/main/resources/META-INF/services/org.opengis.referencing.operation.OperationMethod
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/ReferencingUtilitiesTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/PoleRotationMock.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/SeismicBinGridMock.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/TopocentricConversionMock.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/WKTParserTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/HardCodedCRS.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedCS.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGDataFormatter.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperationTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConversionTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultTransformationTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatricesTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/NonSquareMatrixTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/CoordinateSystemTransformTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactoryTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/ReferencingAssert.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/converter/StringConverter.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/LazySet.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedException.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/math/MathFunctions.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Classes.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/Containers.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecord.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/iso/Types.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/IndexedResourceBundle.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/xml/Pooled.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/xml/PooledTemplate.java
    sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/internal/util/LazySetTest.java
    sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/math/MathFunctionsTest.java
    sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/TestRunner.java
    sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/TestUtilities.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java
    sis/branches/JDK7/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/csv/StoreTest.java

Propchange: sis/branches/JDK7/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Apr 20 13:49:33 2016
@@ -1,4 +1,4 @@
 /sis/branches/Android:1430670-1480699
 /sis/branches/JDK6:1394913-1508480
-/sis/branches/JDK8:1584960-1737071
+/sis/branches/JDK8:1584960-1740143
 /sis/trunk:1394364-1508466,1519089-1519674

Modified: sis/branches/JDK7/core/sis-feature/pom.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/pom.xml?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/pom.xml (original)
+++ sis/branches/JDK7/core/sis-feature/pom.xml Wed Apr 20 13:49:33 2016
@@ -132,6 +132,20 @@ Representations of geographic features.
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.sis.core</groupId>
+      <artifactId>sis-metadata</artifactId>
+      <version>${project.version}</version>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.sis.core</groupId>
+      <artifactId>sis-referencing</artifactId>
+      <version>${project.version}</version>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -103,7 +103,7 @@ public abstract class AbstractAttribute<
     /**
      * Creates a new attribute of the given type.
      *
-     * @param type Information about the attribute (base Java class, domain of values, <i>etc.</i>).
+     * @param type  information about the attribute (base Java class, domain of values, <i>etc.</i>).
      *
      * @see #create(AttributeType)
      */
@@ -115,9 +115,9 @@ public abstract class AbstractAttribute<
      * Creates a new attribute of the given type initialized to the
      * {@linkplain DefaultAttributeType#getDefaultValue() default value}.
      *
-     * @param  <V>  The type of attribute values.
-     * @param  type Information about the attribute (base Java class, domain of values, <i>etc.</i>).
-     * @return The new attribute.
+     * @param  <V>   the type of attribute values.
+     * @param  type  information about the attribute (base Java class, domain of values, <i>etc.</i>).
+     * @return the new attribute.
      *
      * @see DefaultAttributeType#newInstance()
      */
@@ -132,9 +132,9 @@ public abstract class AbstractAttribute<
      * Creates a new attribute of the given type initialized to the given value.
      * Note that a {@code null} value may not be the same as the default value.
      *
-     * @param  <V>   The type of attribute values.
-     * @param  type  Information about the attribute (base Java class, domain of values, <i>etc.</i>).
-     * @param  value The initial value (may be {@code null}).
+     * @param  <V>    the type of attribute values.
+     * @param  type   information about the attribute (base Java class, domain of values, <i>etc.</i>).
+     * @param  value  the initial value (may be {@code null}).
      * @return The new attribute.
      */
     static <V> AbstractAttribute<V> create(final AttributeType<V> type, final Object value) {
@@ -147,8 +147,8 @@ public abstract class AbstractAttribute<
     /**
      * Invoked on serialization for saving the {@link #characteristics} field.
      *
-     * @param  out The output stream where to serialize this attribute.
-     * @throws IOException If an I/O error occurred while writing.
+     * @param  out  the output stream where to serialize this attribute.
+     * @throws IOException if an I/O error occurred while writing.
      */
     private void writeObject(final ObjectOutputStream out) throws IOException {
         out.defaultWriteObject();
@@ -164,9 +164,9 @@ public abstract class AbstractAttribute<
     /**
      * Invoked on deserialization for restoring the {@link #characteristics} field.
      *
-     * @param  in The input stream from which to deserialize an attribute.
-     * @throws IOException If an I/O error occurred while reading or if the stream contains invalid data.
-     * @throws ClassNotFoundException If the class serialized on the stream is not on the classpath.
+     * @param  in  the input stream from which to deserialize an attribute.
+     * @throws IOException if an I/O error occurred while reading or if the stream contains invalid data.
+     * @throws ClassNotFoundException if the class serialized on the stream is not on the classpath.
      */
     private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException {
         in.defaultReadObject();
@@ -185,7 +185,7 @@ public abstract class AbstractAttribute<
      * Returns the name of this attribute as defined by its {@linkplain #getType() type}.
      * This convenience method delegates to {@link AttributeType#getName()}.
      *
-     * @return The attribute name specified by its type.
+     * @return the attribute name specified by its type.
      */
     @Override
     public GenericName getName() {
@@ -195,7 +195,7 @@ public abstract class AbstractAttribute<
     /**
      * Returns information about the attribute (base Java class, domain of values, <i>etc.</i>).
      *
-     * @return Information about the attribute.
+     * @return information about the attribute.
      */
     @Override
     public AttributeType<V> getType() {
@@ -207,7 +207,7 @@ public abstract class AbstractAttribute<
      * the common case where the {@linkplain DefaultAttributeType#getMaximumOccurs() maximum number}
      * of attribute values is restricted to 1 or 0.
      *
-     * @return The attribute value (may be {@code null}).
+     * @return the attribute value (may be {@code null}).
      * @throws MultiValuedPropertyException if this attribute contains more than one value.
      *
      * @see AbstractFeature#getPropertyValue(String)
@@ -223,7 +223,7 @@ public abstract class AbstractAttribute<
      * <p>The default implementation returns a collection which will delegate its work to
      * {@link #getValue()} and {@link #setValue(Object)}.</p>
      *
-     * @return The attribute values in a <cite>live</cite> collection.
+     * @return the attribute values in a <cite>live</cite> collection.
      */
     @Override
     public Collection<V> getValues() {
@@ -239,12 +239,14 @@ public abstract class AbstractAttribute<
      * and also because some rules may be temporarily broken while constructing a feature.
      * A more exhaustive verification can be performed by invoking the {@link #quality()} method.
      *
-     * @param value The new value, or {@code null} for removing all values from this attribute.
+     * @param  value  the new value, or {@code null} for removing all values from this attribute.
+     * @throws InvalidPropertyValueException if this method verifies argument validity and the given value
+     *         does not met the attribute constraints.
      *
      * @see AbstractFeature#setPropertyValue(String, Object)
      */
     @Override
-    public abstract void setValue(final V value);
+    public abstract void setValue(final V value) throws InvalidPropertyValueException;
 
     /**
      * Sets the attribute values. All previous values are replaced by the given collection.
@@ -252,7 +254,7 @@ public abstract class AbstractAttribute<
      * <p>The default implementation ensures that the given collection contains at most one element,
      * then delegates to {@link #setValue(Object)}.</p>
      *
-     * @param  values The new values.
+     * @param  values  the new values.
      * @throws InvalidPropertyValueException if the given collection contains too many elements.
      */
     @Override
@@ -331,7 +333,7 @@ public abstract class AbstractAttribute<
      *     }</li>
      * </ol>
      *
-     * @return Other attribute types that describes this attribute type, or an empty map if none.
+     * @return other attribute types that describes this attribute type, or an empty map if none.
      *
      * @see DefaultAttributeType#characteristics()
      */
@@ -341,7 +343,7 @@ public abstract class AbstractAttribute<
         if (characteristics == null) {
             characteristics = newCharacteristicsMap();
         }
-        return characteristics;     // Intentionally modifiable
+        return characteristics;                                 // Intentionally modifiable
     }
 
     /**
@@ -436,7 +438,7 @@ public abstract class AbstractAttribute<
      * }
      * </div>
      *
-     * @return Reports on all constraint violations found.
+     * @return reports on all constraint violations found.
      *
      * @see AbstractFeature#quality()
      */
@@ -456,7 +458,7 @@ public abstract class AbstractAttribute<
      *     └─ characteristics: units=°C, accuracy=0.1
      * }
      *
-     * @return A string representation of this attribute for debugging purpose.
+     * @return a string representation of this attribute for debugging purpose.
      */
     @Debug
     @Override
@@ -481,7 +483,7 @@ public abstract class AbstractAttribute<
      * are <strong>not</strong> cloned.
      * However subclasses may choose to do otherwise.
      *
-     * @return A clone of this attribute.
+     * @return a clone of this attribute.
      * @throws CloneNotSupportedException if this attribute, the {@linkplain #getValue() value}
      *         or one of its {@linkplain #characteristics() characteristics} can not be cloned.
      */

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -74,7 +74,7 @@ import org.opengis.feature.Operation;
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.5
- * @version 0.6
+ * @version 0.7
  * @module
  *
  * @see DefaultFeatureType#newInstance()
@@ -228,7 +228,7 @@ public abstract class AbstractFeature im
     final Object getOperationValue(final String name) {
         final Operation operation = (Operation) type.getProperty(name);
         if (operation instanceof LinkOperation) {
-            return getPropertyValue(((LinkOperation) operation).propertyName);
+            return getPropertyValue(((LinkOperation) operation).referentName);
         }
         final Property result = operation.apply(this, null);
         if (result instanceof Attribute<?>) {
@@ -246,7 +246,7 @@ public abstract class AbstractFeature im
     final void setOperationValue(final String name, final Object value) {
         final Operation operation = (Operation) type.getProperty(name);
         if (operation instanceof LinkOperation) {
-            setPropertyValue(((LinkOperation) operation).propertyName, value);
+            setPropertyValue(((LinkOperation) operation).referentName, value);
         } else {
             final Property result = operation.apply(this, null);
             if (result != null) {
@@ -270,7 +270,8 @@ public abstract class AbstractFeature im
         if (pt instanceof AttributeType<?>) {
             return getDefaultValue((AttributeType<?>) pt);
         } else if (pt instanceof FeatureAssociationRole) {
-            return null; // No default value for associations.
+            final int maximumOccurs = ((FeatureAssociationRole) pt).getMaximumOccurs();
+            return maximumOccurs > 1 ? Collections.EMPTY_LIST : null;       // No default value for associations.
         } else {
             throw unsupportedPropertyType(pt.getName());
         }
@@ -585,14 +586,14 @@ public abstract class AbstractFeature im
      * @param value The value, which shall be non-null.
      */
     private static ClassCastException illegalValueClass(final GenericName name, final Object value) {
-        return new ClassCastException(Errors.format(Errors.Keys.IllegalPropertyClass_2, name, value.getClass()));
+        return new ClassCastException(Errors.format(Errors.Keys.IllegalPropertyValueClass_2, name, value.getClass()));
     }
 
     /**
      * Returns the exception for a property value (usually a feature) of wrong type.
      */
     private static InvalidPropertyValueException illegalPropertyType(final GenericName name, final Object value) {
-        return new InvalidPropertyValueException(Errors.format(Errors.Keys.IllegalPropertyClass_2, name, value));
+        return new InvalidPropertyValueException(Errors.format(Errors.Keys.IllegalPropertyValueClass_2, name, value));
     }
 
     /**
@@ -645,20 +646,7 @@ public abstract class AbstractFeature im
      */
     public DataQuality quality() {
         final Validator v = new Validator(ScopeCode.FEATURE);
-        for (final PropertyType pt : type.getProperties(true)) {
-            final Property property = getProperty(pt.getName().toString());
-            final DataQuality quality;
-            if (property instanceof AbstractAttribute<?>) {
-                quality = ((AbstractAttribute<?>) property).quality();
-            } else if (property instanceof AbstractAssociation) {
-                quality = ((AbstractAssociation) property).quality();
-            } else {
-                continue;
-            }
-            if (quality != null) { // Should not be null, but let be safe.
-                v.quality.getReports().addAll(quality.getReports());
-            }
-        }
+        v.validate(type, this);
         return v.quality;
     }
 

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -162,7 +162,7 @@ public class AbstractIdentifiedType impl
      * is used only on a <cite>best effort</cite> basis. The locale is discarded after successful construction
      * since localizations are applied by the {@link InternationalString#toString(Locale)} method.</p>
      *
-     * @param  identification The name and other information to be given to this identified type.
+     * @param  identification  the name and other information to be given to this identified type.
      * @throws IllegalArgumentException if a property has an invalid value.
      */
     @SuppressWarnings("OverridableMethodCallDuringObjectConstruction")
@@ -178,7 +178,7 @@ public class AbstractIdentifiedType impl
             name = (GenericName) value;
         } else {
             throw new IllegalArgumentException(Errors.getResources(identification).getString(
-                    Errors.Keys.IllegalPropertyClass_2, NAME_KEY, value.getClass()));
+                    Errors.Keys.IllegalPropertyValueClass_2, NAME_KEY, value.getClass()));
         }
         definition  = Types.toInternationalString(identification, DEFINITION_KEY );
         designation = Types.toInternationalString(identification, DESIGNATION_KEY);

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractOperation.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractOperation.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractOperation.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -19,6 +19,7 @@ package org.apache.sis.feature;
 import java.util.Map;
 import java.util.Set;
 import java.util.Collections;
+import java.util.HashMap;
 import org.opengis.util.GenericName;
 import org.opengis.parameter.GeneralParameterDescriptor;
 import org.opengis.parameter.ParameterDescriptorGroup;
@@ -66,6 +67,12 @@ public abstract class AbstractOperation
     private static final long serialVersionUID = -179930765502963170L;
 
     /**
+     * The prefix for result identification entries in the {@code identification} map.
+     * This prefix is documented in {@link FeatureOperations} javadoc.
+     */
+    static final String RESULT_PREFIX = "result.";
+
+    /**
      * Constructs an operation from the given properties. The identification map is given unchanged to
      * the {@linkplain AbstractIdentifiedType#AbstractIdentifiedType(Map) super-class constructor}.
      *
@@ -76,6 +83,27 @@ public abstract class AbstractOperation
     }
 
     /**
+     * Returns a map that can be used for creating the {@link #getResult()} type.
+     * This method can be invoked for subclass constructor.
+     */
+    final Map<String,Object> resultIdentification(final Map<String,?> identification) {
+        final Map<String,Object> properties = new HashMap<>(6);
+        for (final Map.Entry<String,?> entry : identification.entrySet()) {
+            final String key = entry.getKey();
+            if (key != null && key.startsWith(RESULT_PREFIX)) {
+                properties.put(key.substring(RESULT_PREFIX.length()), entry.getValue());
+            }
+        }
+        if (properties.isEmpty()) {
+            properties.put(NAME_KEY,        super.getName());           // Do not invoke user-overrideable method.
+            properties.put(DEFINITION_KEY,  super.getDefinition());
+            properties.put(DESIGNATION_KEY, super.getDesignation());
+            properties.put(DESCRIPTION_KEY, super.getDescription());
+        }
+        return properties;
+    }
+
+    /**
      * Returns a description of the input parameters.
      *
      * @return Description of the input parameters.
@@ -123,6 +151,9 @@ public abstract class AbstractOperation
 
     /**
      * Returns the names of feature properties that this operation needs for performing its task.
+     * This method does not resolve transitive dependencies, i.e. if a dependency is itself an operation having
+     * other dependencies, the returned set will contain the name of that operation but not the names of that
+     * operation dependencies (unless they are the same that the direct dependencies of {@code this}).
      *
      * <div class="note"><b>Rational:</b>
      * this information is needed for writing the {@code SELECT} SQL statement to send to a database server.
@@ -140,7 +171,7 @@ public abstract class AbstractOperation
 
     /**
      * Returns a hash code value for this operation.
-     * The default implementation computes a hash code from the {@linkplain #getParameters() parameters}
+     * The default implementation computes a hash code from the {@linkplain #getParameters() parameters descriptor}
      * and {@linkplain #getResult() result type}.
      *
      * @return {@inheritDoc}
@@ -152,7 +183,7 @@ public abstract class AbstractOperation
 
     /**
      * Compares this operation with the given object for equality.
-     * The default implementation compares the {@linkplain #getParameters() parameters}
+     * The default implementation compares the {@linkplain #getParameters() parameters descriptor}
      * and {@linkplain #getResult() result type}.
      *
      * @return {@inheritDoc}

Copied: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java (from r1740143, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java?p2=sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java&p1=sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java&r1=1740143&r2=1740146&rev=1740146&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -45,6 +45,7 @@ import org.opengis.feature.IdentifiedTyp
 import org.opengis.feature.Operation;
 import org.opengis.feature.Property;
 import org.opengis.feature.PropertyType;
+import org.apache.sis.internal.jdk8.JDK8;
 
 
 /**
@@ -164,7 +165,7 @@ final class EnvelopeOperation extends Ab
                     }
                     characterizedByCRS = true;
                 }
-                names.putIfAbsent(attributeName, attributeCRS);
+                JDK8.putIfAbsent(names, attributeName, attributeCRS);
             }
         }
         /*

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -236,12 +236,12 @@ header: for (int i=0; ; i++) {
                     if (propertyType instanceof AttributeType &&
                             ((AttributeType) propertyType).getMinimumOccurs() == 0)
                     {
-                        continue;   // If no value, skip the full row.
+                        continue;                                       // If no value, skip the full row.
                     }
                     if (propertyType instanceof FeatureAssociationRole &&
                             ((FeatureAssociationRole) propertyType).getMinimumOccurs() == 0)
                     {
-                        continue;   // If no value, skip the full row.
+                        continue;                                       // If no value, skip the full row.
                     }
                 }
             } else if (propertyType instanceof AttributeType<?>) {
@@ -339,7 +339,7 @@ header: for (int i=0; ; i++) {
                         Object c = attribute.getDefaultValue();
                         if (feature != null) {
                             final Property p = feature.getProperty(propertyType.getName().toString());
-                            if (p instanceof Attribute<?>) {  // Should always be true, but we are paranoiac.
+                            if (p instanceof Attribute<?>) {            // Should always be true, but we are paranoiac.
                                 c = ((Attribute<?>) p).characteristics().get(attribute.getName().toString());
                             }
                         }
@@ -360,11 +360,11 @@ header: for (int i=0; ; i++) {
      * Returns the display name for the given {@code GenericName}.
      */
     private String toString(final GenericName name) {
-        if (name == null) { // Should not be null, but let be safe.
+        if (name == null) {                                             // Should not be null, but let be safe.
             return "";
         }
         final InternationalString i18n = name.toInternationalString();
-        if (i18n != null) { // Should not be null, but let be safe.
+        if (i18n != null) {                                             // Should not be null, but let be safe.
             final String s = i18n.toString(displayLocale);
             if (s != null) {
                 return s;

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -16,20 +16,29 @@
  */
 package org.apache.sis.feature;
 
+import org.opengis.util.InternationalString;
+import org.opengis.metadata.maintenance.ScopeCode;
+import org.opengis.metadata.quality.ConformanceResult;
+import org.opengis.metadata.quality.DataQuality;
+import org.opengis.metadata.quality.Element;
+import org.opengis.metadata.quality.Result;
 import org.apache.sis.util.Static;
 import org.apache.sis.util.resources.Errors;
 
 // Branch-dependent imports
 import org.opengis.feature.Attribute;
 import org.opengis.feature.AttributeType;
+import org.opengis.feature.Feature;
+import org.opengis.feature.InvalidPropertyValueException;
 
 
 /**
  * Static methods working on features or attributes.
  *
  * @author  Martin Desruisseaux (Geomatys)
+ * @author  Johann Sorel (Geomatys)
  * @since   0.5
- * @version 0.5
+ * @version 0.7
  * @module
  */
 public final class Features extends Static {
@@ -96,4 +105,56 @@ public final class Features extends Stat
         }
         return (Attribute<V>) attribute;
     }
+
+    /**
+     * Ensures that all characteristics and property values in the given feature are valid.
+     * An attribute is valid if it contains a number of values between the
+     * {@linkplain DefaultAttributeType#getMinimumOccurs() minimum} and
+     * {@linkplain DefaultAttributeType#getMaximumOccurs() maximum number of occurrences} (inclusive),
+     * all values are instances of the expected {@linkplain DefaultAttributeType#getValueClass() value class},
+     * and the attribute is compliant with any other restriction that the implementation may add.
+     *
+     * <p>This method gets a quality report as documented in the {@link AbstractFeature#quality()} method
+     * and verifies that all {@linkplain org.apache.sis.metadata.iso.quality.DefaultConformanceResult#pass()
+     * conformance tests pass}. If at least one {@code ConformanceResult.pass} attribute is false, then an
+     * {@code InvalidPropertyValueException} is thrown. Otherwise this method returns doing nothing.
+     *
+     * @param  feature  the feature to validate, or {@code null}.
+     * @throws InvalidPropertyValueException if the given feature is non-null and does not pass validation.
+     *
+     * @since 0.7
+     */
+    public static void validate(final Feature feature) throws InvalidPropertyValueException {
+        if (feature != null) {
+            /*
+             * Delegate to AbstractFeature.quality() if possible because the user may have overridden the method.
+             * Otherwise fallback on the same code than AbstractFeature.quality() default implementation.
+             */
+            final DataQuality quality;
+            if (feature instanceof AbstractFeature) {
+                quality = ((AbstractFeature) feature).quality();
+            } else {
+                final Validator v = new Validator(ScopeCode.FEATURE);
+                v.validate(feature.getType(), feature);
+                quality = v.quality;
+            }
+            /*
+             * Loop on quality elements and check conformance results.
+             * NOTE: other types of result are ignored for now, since those other
+             * types may require threshold and other informations to be evaluated.
+             */
+            for (Element element : quality.getReports()) {
+                for (Result result : element.getResults()) {
+                    if (result instanceof ConformanceResult) {
+                        if (Boolean.FALSE.equals(((ConformanceResult) result).pass())) {
+                            final InternationalString message = ((ConformanceResult) result).getExplanation();
+                            if (message != null) {
+                                throw new InvalidFeatureException(message);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
 }

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/LinkOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/LinkOperation.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/LinkOperation.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/LinkOperation.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -82,18 +82,20 @@ final class LinkOperation extends Abstra
     /**
      * The name of the referenced attribute or feature association.
      */
-    final String propertyName;
+    final String referentName;
 
     /**
      * Creates a new link to the given attribute or association.
      *
-     * @param identification The name of the link, together with optional information.
-     * @param propertyType   The referenced attribute or feature association.
+     * @param identification  the name of the link, together with optional information.
+     * @param referent        the referenced attribute or feature association.
+     *
+     * @see FeatureOperations#link(Map, PropertyType)
      */
-    LinkOperation(final Map<String, ?> identification, final PropertyType propertyType) {
+    LinkOperation(final Map<String,?> identification, final PropertyType referent) {
         super(identification);
-        result = propertyType;
-        propertyName = propertyType.getName().toString();
+        result = referent;
+        referentName = referent.getName().toString();
     }
 
     /**
@@ -117,19 +119,36 @@ final class LinkOperation extends Abstra
      */
     @Override
     public Set<String> getDependencies() {
-        return Collections.singleton(propertyName);
+        return Collections.singleton(referentName);
     }
 
     /**
      * Returns the property from the referenced attribute of feature association.
      *
-     * @param  feature    The feature from which to get the property.
-     * @param  parameters Ignored.
-     * @return The property from the given feature.
+     * @param  feature     the feature from which to get the property.
+     * @param  parameters  ignored (can be {@code null}).
+     * @return the linked property from the given feature.
      */
     @Override
     public Property apply(final Feature feature, final ParameterValueGroup parameters) {
         ArgumentChecks.ensureNonNull("feature", feature);
-        return feature.getProperty(propertyName);
+        return feature.getProperty(referentName);
+    }
+
+    /**
+     * Computes a hash-code value for this operation.
+     */
+    @Override
+    public int hashCode() {
+        return super.hashCode() + referentName.hashCode();
+    }
+
+    /**
+     * Compares this operation with the given object for equality.
+     */
+    @Override
+    public boolean equals(final Object obj) {
+        // 'this.result' is compared (indirectly) by the super class.
+        return super.equals(obj) && referentName.equals(((LinkOperation) obj).referentName);
     }
 }

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/MultiValuedAttribute.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/MultiValuedAttribute.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/MultiValuedAttribute.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/MultiValuedAttribute.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -18,6 +18,7 @@ package org.apache.sis.feature;
 
 import java.util.Collection;
 import org.apache.sis.internal.util.CheckedArrayList;
+import org.apache.sis.util.collection.CheckedContainer;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.resources.Errors;
 
@@ -91,7 +92,7 @@ final class MultiValuedAttribute<V> exte
         if (values == null) {
             this.values = new CheckedArrayList<>(valueClass);
         } else {
-            final Class<?> actual = ((CheckedArrayList<?>) values).getElementType();
+            final Class<?> actual = ((CheckedContainer<?>) values).getElementType();
             if (actual == valueClass) {
                 this.values = (CheckedArrayList<V>) values;
             } else {

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -22,6 +22,7 @@ import org.opengis.util.GenericName;
 import org.opengis.util.InternationalString;
 import org.opengis.metadata.Identifier;
 import org.opengis.metadata.maintenance.ScopeCode;
+import org.opengis.metadata.quality.DataQuality;
 import org.opengis.metadata.quality.EvaluationMethodType;
 import org.apache.sis.metadata.iso.quality.AbstractElement;
 import org.apache.sis.metadata.iso.quality.DefaultDataQuality;
@@ -32,10 +33,13 @@ import org.apache.sis.referencing.NamedI
 import org.apache.sis.util.resources.Errors;
 
 // Branch-dependent imports
+import org.opengis.feature.Property;
 import org.opengis.feature.PropertyType;
+import org.opengis.feature.Attribute;
 import org.opengis.feature.AttributeType;
 import org.opengis.feature.Feature;
 import org.opengis.feature.FeatureType;
+import org.opengis.feature.FeatureAssociation;
 import org.opengis.feature.FeatureAssociationRole;
 
 
@@ -44,7 +48,7 @@ import org.opengis.feature.FeatureAssoci
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.5
- * @version 0.5
+ * @version 0.7
  * @module
  */
 final class Validator {
@@ -110,6 +114,35 @@ final class Validator {
     }
 
     /**
+     * Implementation of {@link AbstractFeature#quality()}, also shared by {@link Features} static method.
+     *
+     * @param type     the type of the {@code feature} argument, provided explicitely for protecting from user overriding.
+     * @param feature  the feature to validate.
+     */
+    void validate(final FeatureType type, final Feature feature) {
+        for (final PropertyType pt : type.getProperties(true)) {
+            final Property property = feature.getProperty(pt.getName().toString());
+            final DataQuality pq;
+            if (property instanceof AbstractAttribute<?>) {
+                pq = ((AbstractAttribute<?>) property).quality();
+            } else if (property instanceof AbstractAssociation) {
+                pq = ((AbstractAssociation) property).quality();
+            } else if (property instanceof Attribute<?>) {
+                validateAny(((Attribute<?>) property).getType(), ((Attribute<?>) property).getValues());
+                continue;
+            } else if (property instanceof FeatureAssociation) {
+                validateAny(((FeatureAssociation) property).getRole(), ((FeatureAssociation) property).getValues());
+                continue;
+            } else {
+                continue;
+            }
+            if (pq != null) {                                          // Should not be null, but let be safe.
+                quality.getReports().addAll(pq.getReports());
+            }
+        }
+    }
+
+    /**
      * Verifies if the given value is valid for the given attribute type.
      * This method delegates to one of the {@code validate(…)} methods depending of the value type.
      */
@@ -135,10 +168,13 @@ final class Validator {
              * method signature. However in practice the call to Attribute.setValue(…) is sometime done after type erasure,
              * so we are better to check.
              */
-            if (!type.getValueClass().isInstance(value)) {
+            final Class<?> valueClass = type.getValueClass();
+            if (!valueClass.isInstance(value)) {
                 report = addViolationReport(report, type, Errors.formatInternational(
-                        Errors.Keys.IllegalPropertyClass_2, type.getName(), value.getClass()));
-                break; // Report only the first violation for now.
+                        Errors.Keys.IllegalPropertyValueClass_3, type.getName(), valueClass, value.getClass()));
+
+                // Report only the first violation for now.
+                break;
             }
         }
         verifyCardinality(report, type, type.getMinimumOccurs(), type.getMaximumOccurs(), values.size());
@@ -151,10 +187,13 @@ final class Validator {
         AbstractElement report = null;
         for (final Object value : values) {
             final FeatureType type = ((Feature) value).getType();
-            if (!role.getValueType().isAssignableFrom(type)) {
+            final FeatureType valueType = role.getValueType();
+            if (!valueType.isAssignableFrom(type)) {
                 report = addViolationReport(report, role, Errors.formatInternational(
-                        Errors.Keys.IllegalPropertyClass_2, role.getName(), type.getName()));
-                break; // Report only the first violation for now.
+                        Errors.Keys.IllegalPropertyValueClass_3, role.getName(), valueType.getName(), type.getName()));
+
+                // Report only the first violation for now.
+                break;
             }
         }
         verifyCardinality(report, role, role.getMinimumOccurs(), role.getMaximumOccurs(), values.size());

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/internal/feature/FeatureTypeBuilder.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/internal/feature/FeatureTypeBuilder.java?rev=1740146&r1=1740143&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/internal/feature/FeatureTypeBuilder.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/internal/feature/FeatureTypeBuilder.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -445,7 +445,7 @@ public class FeatureTypeBuilder extends
             this.valueClass = valueClass;
             minimumOccurs   = defaultMinimumOccurs;
             maximumOccurs   = defaultMaximumOccurs;
-            characteristics = Collections.singletonList(new Characteristic<>(typeClass).setDefaultValue(type));
+            characteristics = Collections.<Characteristic<?>>singletonList(new Characteristic<>(typeClass).setDefaultValue(type));
         }
 
         /**

Modified: sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/FeaturesTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/FeaturesTest.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/FeaturesTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/FeaturesTest.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -22,13 +22,18 @@ import org.junit.Test;
 
 import static org.junit.Assert.*;
 
+// Branch-dependent imports
+import org.opengis.feature.Feature;
+import org.opengis.feature.InvalidPropertyValueException;
+
 
 /**
  * Tests {@link Features}.
  *
  * @author  Martin Desruisseaux (Geomatys)
+ * @author  Johann Sorel (Geomatys)
  * @since   0.5
- * @version 0.5
+ * @version 0.7
  * @module
  */
 @DependsOn(SingletonAttributeTest.class)
@@ -68,4 +73,26 @@ public final strictfp class FeaturesTest
             assertTrue(message, message.contains("CharSequence"));
         }
     }
+
+    /**
+     * Tests {@link Features#validate(Feature)}.
+     */
+    @Test
+    public void testValidate() {
+        final Feature feature = DefaultFeatureTypeTest.city().newInstance();
+
+        // Should not pass validation.
+        try {
+            Features.validate(feature);
+            fail("Feature is invalid because of missing property “population”. Validation should have raised an exception.");
+        } catch (InvalidPropertyValueException ex) {
+            String message = ex.getMessage();
+            assertTrue(message, message.contains("city") || message.contains("population"));
+        }
+
+        // Should pass validation.
+        feature.setPropertyValue("city", "Utopia");
+        feature.setPropertyValue("population", 10);
+        Features.validate(feature);
+    }
 }

Modified: sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/LinkOperationTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/LinkOperationTest.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/LinkOperationTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/LinkOperationTest.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -42,8 +42,8 @@ public final strictfp class LinkOperatio
      * The feature contains the following properties:
      *
      * <ul>
-     *   <li>{@code city}       as a  {@link String}  (mandatory)</li>
-     *   <li>{@code population} as an {@link Integer} (mandatory)</li>
+     *   <li>{@code city}       as a  {@link String}  (mandatory).</li>
+     *   <li>{@code population} as an {@link Integer} (mandatory).</li>
      *   <li>{@code name} as a link to the {@code city} attribute.</li>
      * </ul>
      *
@@ -63,14 +63,14 @@ public final strictfp class LinkOperatio
     private static void run(final AbstractFeature feature) {
         assertEquals("Get directly",     "Utopia", feature.getPropertyValue("city"));
         assertEquals("Get through link", "Utopia", feature.getPropertyValue("name"));
-        feature.setPropertyValue("name", "Atlantide");  // Set through link.
+        feature.setPropertyValue("name", "Atlantide");                                          // Set through link.
         assertEquals("Get directly",     "Atlantide", feature.getPropertyValue("city"));
         assertEquals("Get through link", "Atlantide", feature.getPropertyValue("name"));
         assertSame(feature.getProperty("name"), feature.getProperty("name"));
     }
 
     /**
-     * Tests a dense type with operations.
+     * Tests a dense feature type with operations.
      */
     @Test
     public void testDenseFeature() {

Modified: sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/SingletonAttributeTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/SingletonAttributeTest.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/SingletonAttributeTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/feature/SingletonAttributeTest.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -105,7 +105,7 @@ public final strictfp class SingletonAtt
         ((AbstractAttribute) attribute).setValue(4.5f);
         quality = attribute.quality();
         assertEquals("scope.level", ScopeCode.ATTRIBUTE, quality.getScope().getLevel());
-        assertDomainConsistencyEquals("population", "Property “population” does not accept instances of ‘Float’.",
+        assertDomainConsistencyEquals("population", "Expected an instance of ‘Integer’ for the “population” property, but got an instance of ‘Float’.",
                 (DomainConsistency) getSingleton(quality.getReports()));
     }
 

Modified: sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -25,8 +25,9 @@ import org.junit.BeforeClass;
  * All tests from the {@code sis-feature} module, in approximative dependency order.
  *
  * @author  Martin Desruisseaux (Geomatys)
+ * @author  Johann Sorel (Geomatys)
  * @since   0.5
- * @version 0.5
+ * @version 0.7
  * @module
  */
 @Suite.SuiteClasses({
@@ -43,8 +44,12 @@ import org.junit.BeforeClass;
     org.apache.sis.feature.SingletonAssociationTest.class,
     org.apache.sis.feature.AbstractOperationTest.class,
     org.apache.sis.feature.LinkOperationTest.class,
+    org.apache.sis.feature.StringJoinOperationTest.class,
+    org.apache.sis.feature.EnvelopeOperationTest.class,
     org.apache.sis.feature.FeatureFormatTest.class,
-    org.apache.sis.feature.FeaturesTest.class
+    org.apache.sis.feature.FeaturesTest.class,
+    org.apache.sis.internal.feature.AttributeConventionTest.class,
+    org.apache.sis.internal.feature.FeatureTypeBuilderTest.class
 })
 public final strictfp class FeatureTestSuite extends TestSuite {
     /**

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisDirections.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisDirections.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisDirections.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisDirections.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -417,7 +417,7 @@ public final class AxisDirections extend
      *
      * @param  cs The coordinate system from which to get the angular unit, or {@code null}.
      * @param  unit The default unit to return if no angular unit is found.
-     * @return The angular unit, of {@code null} if no angular unit was found.
+     * @return The angular unit, of {@code unit} if no angular unit was found.
      *
      * @since 0.6
      *

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ReferencingServices.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ReferencingServices.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ReferencingServices.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ReferencingServices.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -111,13 +111,23 @@ public class ReferencingServices extends
     public static final String OPERATION_TYPE_KEY = "operationType";
 
     /**
-     * The key for specifying a {@linkplain org.opengis.referencing.operation.MathTransformFactory}
-     * instance to use for the construction of a geodetic object. This is usually not needed for CRS
-     * construction, except in the special case of a derived CRS created from a defining conversion.
+     * The key for specifying a {@link MathTransformFactory} instance to use for geodetic object constructions.
+     * This is usually not needed for CRS construction, except in the special case of a derived CRS created
+     * from a defining conversion.
      */
     public static final String MT_FACTORY = "mtFactory";
 
     /**
+     * The key for specifying a {@link CRSFactory} instance to use for geodetic object constructions.
+     */
+    public static final String CRS_FACTORY = "crsFactory";
+
+    /**
+     * The key for specifying a {@link CSFactory} instance to use for geodetic object constructions.
+     */
+    public static final String CS_FACTORY = "csFactory";
+
+    /**
      * The separator character between an identifier and its namespace in the argument given to
      * {@link #getOperationMethod(String)}. For example this is the separator in {@code "EPSG:9807"}.
      *
@@ -553,11 +563,15 @@ public class ReferencingServices extends
      *
      * @param  properties The default properties.
      * @param  mtFactory  The math transform factory to use.
+     * @param  crsFactory The factory to use if the operation factory needs to create CRS for intermediate steps.
+     * @param  csFactory  The factory to use if the operation factory needs to create CS for intermediate steps.
      * @return The coordinate operation factory to use.
      *
-     * @since 0.6
+     * @since 0.7
      */
-    public CoordinateOperationFactory getCoordinateOperationFactory(Map<String,?> properties, MathTransformFactory mtFactory) {
+    public CoordinateOperationFactory getCoordinateOperationFactory(Map<String,?> properties,
+            final MathTransformFactory mtFactory, final CRSFactory crsFactory, final CSFactory csFactory)
+    {
         /*
          * The check for 'properties' and 'mtFactory' is performed by the ServicesForMetadata subclass. If this code is
          * executed, this means that the "sis-referencing" module is not on the classpath, in which case we do not know

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/WKTKeywords.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/WKTKeywords.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/WKTKeywords.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/WKTKeywords.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -34,8 +34,9 @@ import org.apache.sis.util.Static;
  * This class is intended to be used only at compile-time and could be omitted from the JAR file.</div>
  *
  * @author  Martin Desruisseaux (Geomatys)
+ * @author  Johann Sorel (Geomatys)
  * @since   0.6
- * @version 0.6
+ * @version 0.7
  * @module
  *
  * @see <a href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html">WKT 2 specification</a>
@@ -127,6 +128,15 @@ public final class WKTKeywords extends S
             BaseTimeCRS = "BaseTimeCRS";
 
     /**
+     * Related to {@link org.apache.sis.referencing.crs.DefaultParametricCRS}.
+     */
+    public static final String
+            ParametricDatum = "ParametricDatum",
+            PDatum          = "PDatum",
+            ParametricCRS   = "ParametricCRS",
+            BaseParamCRS    = "BaseParamCRS";
+
+    /**
      * Related to {@link org.apache.sis.referencing.crs.DefaultImageCRS}
      * and {@link org.apache.sis.referencing.crs.DefaultEngineeringCRS}.
      * Former can be seen as a special case of the later.

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -411,7 +411,7 @@ public abstract class Initializer {
             try {
                 ds.getConnection().close();     // Does the actual shutdown.
             } catch (SQLException e) {          // This is the expected exception.
-                final LogRecord record = new LogRecord(Level.CONFIG, e.getLocalizedMessage());
+                final LogRecord record = new LogRecord(Level.FINE, e.getLocalizedMessage());
                 if (!isSuccessfulShutdown(e)) {
                     record.setLevel(Level.WARNING);
                     record.setThrown(e);

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/AbstractParser.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/AbstractParser.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/AbstractParser.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/AbstractParser.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -354,11 +354,23 @@ abstract class AbstractParser implements
      * @param ex      The non-fatal exception that occurred while parsing the element, or {@code null}.
      */
     final void warning(final Element parent, final Element element, final InternationalString message, final Exception ex) {
+        warning(parent, (element != null) ? element.keyword : null, message, ex);
+    }
+
+    /**
+     * Reports a non-fatal warning that occurred while parsing a WKT.
+     *
+     * @param parent  The parent element, or {@code null} if unknown.
+     * @param element The name of the element that we can not parse, or {@code null} if unknown.
+     * @param message The message. Can be {@code null} only if {@code ex} is non-null.
+     * @param ex      The non-fatal exception that occurred while parsing the element, or {@code null}.
+     */
+    final void warning(final Element parent, final String element, final InternationalString message, final Exception ex) {
         if (warnings == null) {
             warnings = new Warnings(errorLocale, true, ignoredElements);
         }
         warnings.add(message, ex, (parent != null && element != null)
-                ? new String[] {parent.keyword, element.keyword} : null);
+                ? new String[] {parent.keyword, element} : null);
     }
 
     /**

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/Formatter.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/Formatter.java?rev=1740146&r1=1740145&r2=1740146&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/Formatter.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/Formatter.java [UTF-8] Wed Apr 20 13:49:33 2016
@@ -53,6 +53,7 @@ import org.opengis.referencing.crs.Compo
 import org.opengis.referencing.cs.CoordinateSystemAxis;
 import org.opengis.referencing.operation.OperationMethod;
 import org.opengis.referencing.operation.CoordinateOperation;
+import org.opengis.referencing.operation.ConcatenatedOperation;
 import org.opengis.referencing.operation.MathTransform;
 import org.opengis.util.ControlledVocabulary;
 
@@ -764,8 +765,8 @@ public class Formatter implements Locali
             } else {
                 filterID = (parent != null);
                 if (object instanceof CoordinateOperation) {
-                    showOthers  = true;
-                    showRemarks = true;
+                    showOthers  = !(parent instanceof ConcatenatedOperation);
+                    showRemarks = showOthers;
                 } else if (object instanceof ReferenceSystem) {
                     showOthers  = (parent == null);
                     showRemarks = (parent == null) || (getEnclosingElement(2) instanceof CoordinateOperation);