sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1701516 [5/6] - in /sis/branches/JDK7: ./ core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/ core/sis-metadata/src/test/java/org/apache/sis/metadata/ cor...
Date Sun, 06 Sep 2015 19:10:31 GMT
Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -18,7 +18,13 @@ package org.apache.sis.referencing.opera
 
 import java.util.Map;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Collections;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import org.opengis.util.InternationalString;
 import org.opengis.metadata.citation.Citation;
 import org.opengis.referencing.IdentifiedObject;
 import org.opengis.referencing.operation.Formula;
@@ -26,14 +32,21 @@ import org.opengis.referencing.operation
 import org.opengis.referencing.operation.MathTransform;
 import org.opengis.referencing.operation.OperationMethod;
 import org.opengis.referencing.operation.SingleOperation;
+import org.opengis.parameter.GeneralParameterDescriptor;
 import org.opengis.parameter.ParameterDescriptorGroup;
+import org.opengis.parameter.ParameterDescriptor;
 import org.apache.sis.util.Utilities;
 import org.apache.sis.util.Workaround;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.util.resources.Errors;
+import org.apache.sis.util.iso.SimpleInternationalString;
 import org.apache.sis.internal.util.Citations;
 import org.apache.sis.internal.metadata.WKTKeywords;
+import org.apache.sis.internal.jaxb.gco.StringAdapter;
+import org.apache.sis.internal.jaxb.referencing.CC_OperationMethod;
 import org.apache.sis.internal.referencing.NilReferencingObject;
+import org.apache.sis.internal.referencing.ReferencingUtilities;
+import org.apache.sis.parameter.DefaultParameterDescriptorGroup;
 import org.apache.sis.parameter.Parameterized;
 import org.apache.sis.referencing.NamedIdentifier;
 import org.apache.sis.referencing.IdentifiedObjects;
@@ -108,6 +121,14 @@ import java.util.Objects;
  * @see DefaultTransformation
  * @see org.apache.sis.referencing.operation.transform.MathTransformProvider
  */
+@XmlType(name="OperationMethodType", propOrder = {
+    "formulaCitation",
+    "formulaDescription",
+    "sourceDimensions",
+    "targetDimensions",
+    "descriptors"
+})
+@XmlRootElement(name = "OperationMethod")
 public class DefaultOperationMethod extends AbstractIdentifiedObject implements OperationMethod {
     /*
      * NOTE FOR JAVADOC WRITER:
@@ -124,14 +145,19 @@ public class DefaultOperationMethod exte
      * Formula(s) or procedure used by this operation method. This may be a reference to a publication.
      * Note that the operation method may not be analytic, in which case this attribute references or
      * contains the procedure, not an analytic formula.
+     *
+     * <p><b>Consider this field as final!</b>
+     * This field is modified only at unmarshalling time by {@link #setFormula(Object)}</p>
      */
-    private final Formula formula;
+    private Formula formula;
 
     /**
      * Number of dimensions in the source CRS of this operation method.
      * May be {@code null} if this method can work with any number of
      * source dimensions (e.g. <cite>Affine Transform</cite>).
      */
+    @XmlElement
+    @XmlSchemaType(name = "positiveInteger")
     private final Integer sourceDimensions;
 
     /**
@@ -139,12 +165,17 @@ public class DefaultOperationMethod exte
      * May be {@code null} if this method can work with any number of
      * target dimensions (e.g. <cite>Affine Transform</cite>).
      */
+    @XmlElement
+    @XmlSchemaType(name = "positiveInteger")
     private final Integer targetDimensions;
 
     /**
      * The set of parameters, or {@code null} if none.
+     *
+     * <p><b>Consider this field as final!</b>
+     * This field is modified only at unmarshalling time by {@link #setDescriptors(GeneralParameterDescriptor[])}</p>
      */
-    private final ParameterDescriptorGroup parameters;
+    private ParameterDescriptorGroup parameters;
 
     /**
      * Constructs an operation method from a set of properties and a descriptor group. The properties map is given
@@ -549,7 +580,8 @@ public class DefaultOperationMethod exte
      *
      * <div class="note"><b>Departure from the ISO 19111 standard:</b>
      * this property is mandatory according ISO 19111, but may be null in Apache SIS if the
-     * {@link #DefaultOperationMethod(MathTransform)} constructor has been unable to infer it.</div>
+     * {@link #DefaultOperationMethod(MathTransform)} constructor has been unable to infer it
+     * or if this {@code OperationMethod} has been read from an incomplete GML document.</div>
      *
      * @return The parameters, or {@code null} if unknown.
      *
@@ -673,4 +705,149 @@ public class DefaultOperationMethod exte
         }
         return WKTKeywords.Method;
     }
+
+
+
+
+    //////////////////////////////////////////////////////////////////////////////////////////////////
+    ////////                                                                                  ////////
+    ////////                               XML support with JAXB                              ////////
+    ////////                                                                                  ////////
+    ////////        The following methods are invoked by JAXB using reflection (even if       ////////
+    ////////        they are private) or are helpers for other methods invoked by JAXB.       ////////
+    ////////        Those methods can be safely removed if Geographic Markup Language         ////////
+    ////////        (GML) support is not needed.                                              ////////
+    ////////                                                                                  ////////
+    //////////////////////////////////////////////////////////////////////////////////////////////////
+
+    /**
+     * Creates a new object in which every attributes are set to a null value.
+     * <strong>This is not a valid object.</strong> This constructor is strictly
+     * reserved to JAXB, which will assign values to the fields using reflexion.
+     */
+    private DefaultOperationMethod() {
+        super(org.apache.sis.internal.referencing.NilReferencingObject.INSTANCE);
+        sourceDimensions = null;
+        targetDimensions = null;
+    }
+
+    /**
+     * Invoked by JAXB for marshalling a citation to the formula. In principle at most one of
+     * {@code getFormulaCitation()} and {@link #getFormulaDescription()} methods can return a
+     * non-null value. However SIS accepts both coexist (but this is invalid GML).
+     */
+    @XmlElement(name = "formulaCitation")
+    private Citation getFormulaCitation() {
+        final Formula formula = getFormula();   // Give to users a chance to override.
+        return (formula != null) ? formula.getCitation() : null;
+    }
+
+    /**
+     * Invoked by JAXB for marshalling the formula literally. In principle at most one of
+     * {@code getFormulaDescription()} and {@link #getFormulaCitation()} methods can return
+     * a non-null value. However SIS accepts both to coexist (but this is invalid GML).
+     */
+    @XmlElement(name = "formula")
+    private String getFormulaDescription() {
+        final Formula formula = getFormula();   // Give to users a chance to override.
+        return (formula != null) ? StringAdapter.toString(formula.getFormula()) : null;
+    }
+
+    /**
+     * Invoked by JAXB for setting the citation to the formula.
+     */
+    private void setFormulaCitation(final Citation citation) {
+        if (formula == null || formula.getCitation() == null) {
+            formula = (formula == null) ? new DefaultFormula(citation)
+                      : new DefaultFormula(formula.getFormula(), citation);
+        } else {
+            ReferencingUtilities.propertyAlreadySet(DefaultOperationMethod.class, "setFormulaCitation", "formulaCitation");
+        }
+    }
+
+    /**
+     * Invoked by JAXB for setting the formula description.
+     */
+    private void setFormulaDescription(final String description) {
+        if (formula == null || formula.getFormula() == null) {
+            formula = (formula == null) ? new DefaultFormula(description)
+                      : new DefaultFormula(new SimpleInternationalString(description), formula.getCitation());
+        } else {
+            ReferencingUtilities.propertyAlreadySet(DefaultOperationMethod.class, "setFormulaDescription", "formula");
+        }
+    }
+
+    /**
+     * Invoked by JAXB for getting the parameters to marshal. This method usually marshals the sequence of
+     * descriptors without their {@link ParameterDescriptorGroup} wrapper, because GML is defined that way.
+     * The {@code ParameterDescriptorGroup} wrapper is a GeoAPI addition done for allowing usage of its
+     * methods as a convenience (e.g. {@link ParameterDescriptorGroup#descriptor(String)}).
+     *
+     * <p>However it could happen that the user really wanted to specify a {@code ParameterDescriptorGroup} as
+     * the sole {@code <gml:parameter>} element. We currently have no easy way to distinguish those cases.</p>
+     *
+     * <div class="note"><b>Tip:</b>
+     * One possible way to distinguish the two cases would be to check that the parameter group does not contain
+     * any property that this method does not have:
+     *
+     * {@preformat java
+     *   if (IdentifiedObjects.getProperties(this).entrySet().containsAll(
+     *       IdentifiedObjects.getProperties(parameters).entrySet())) ...
+     * }
+     *
+     * But we would need to make sure that {@link AbstractSingleOperation#getParameters()} is consistent
+     * with the decision taken by this method.</div>
+     *
+     * <p><b>Historical note:</b> older, deprecated, names for the parameters were:
+     * <ul>
+     *   <li>{@code includesParameter}</li>
+     *   <li>{@code generalOperationParameter} - note that this name was used by the EPSG registry</li>
+     *   <li>{@code usesParameter}</li>
+     * </ul>
+     *
+     * @see #getParameters()
+     * @see AbstractSingleOperation#getParameters()
+     */
+    @XmlElement(name = "parameter")
+    private GeneralParameterDescriptor[] getDescriptors() {
+        if (parameters != null) {
+            final List<GeneralParameterDescriptor> descriptors = parameters.descriptors();
+            if (descriptors != null) {      // Paranoiac check (should not be allowed).
+                return CC_OperationMethod.filterImplicit(descriptors.toArray(
+                        new GeneralParameterDescriptor[descriptors.size()]));
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Invoked by JAXB for setting the unmarshalled parameters.
+     * This method wraps the given descriptors in a {@link DefaultParameterDescriptorGroup}.
+     *
+     * <p>The parameter descriptors created by this method are incomplete since we can not
+     * provide a non-null value for {@link ParameterDescriptor#getValueClass()}. The value
+     * class will be provided either by replacing this {@code OperationMethod} by one of the
+     * pre-defined methods, or by unmarshalling the enclosing {@link AbstractSingleOperation}.</p>
+     *
+     * <p><b>Maintenance note:</b> the {@code "setDescriptors"} method name is also hard-coded in
+     * {@link org.apache.sis.internal.jaxb.referencing.CC_GeneralOperationParameter} for logging purpose.</p>
+     *
+     * @see AbstractSingleOperation#setParameters
+     */
+    private void setDescriptors(final GeneralParameterDescriptor[] descriptors) {
+        if (parameters == null) {
+            parameters = CC_OperationMethod.group(super.getName(), descriptors);
+        } else {
+            ReferencingUtilities.propertyAlreadySet(DefaultOperationMethod.class, "setDescriptors", "parameter");
+        }
+    }
+
+    /**
+     * Invoked by {@link AbstractSingleOperation} for completing the parameter descriptor.
+     */
+    final void updateDescriptors(final GeneralParameterDescriptor[] descriptors) {
+        final ParameterDescriptorGroup previous = parameters;
+        parameters = new DefaultParameterDescriptorGroup(IdentifiedObjects.getProperties(previous),
+                previous.getMinimumOccurs(), previous.getMaximumOccurs(), descriptors);
+    }
 }

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -40,6 +40,7 @@ import java.util.Objects;
  * @version 0.6
  * @module
  */
+// Missing JAXB annotation. See http://issues.apache.org/jira/browse/SIS-293
 public class DefaultPassThroughOperation extends AbstractCoordinateOperation implements PassThroughOperation {
     /**
      * Serial number for inter-operability with different versions.

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultTransformation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultTransformation.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultTransformation.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultTransformation.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -17,6 +17,8 @@
 package org.apache.sis.referencing.operation;
 
 import java.util.Map;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlRootElement;
 import org.opengis.referencing.operation.Transformation;
 import org.opengis.referencing.operation.OperationMethod;
 import org.opengis.referencing.operation.MathTransform;
@@ -51,6 +53,8 @@ import org.apache.sis.util.ArgumentCheck
  *
  * @see DefaultConversion
  */
+@XmlType(name = "TransformationType")
+@XmlRootElement(name = "Transformation")
 public class DefaultTransformation extends AbstractSingleOperation implements Transformation {
     /**
      * Serial number for inter-operability with different versions.
@@ -159,4 +163,26 @@ public class DefaultTransformation exten
     public Class<? extends Transformation> getInterface() {
         return Transformation.class;
     }
+
+
+
+
+    //////////////////////////////////////////////////////////////////////////////////////////////////
+    ////////                                                                                  ////////
+    ////////                               XML support with JAXB                              ////////
+    ////////                                                                                  ////////
+    ////////        The following methods are invoked by JAXB using reflection (even if       ////////
+    ////////        they are private) or are helpers for other methods invoked by JAXB.       ////////
+    ////////        Those methods can be safely removed if Geographic Markup Language         ////////
+    ////////        (GML) support is not needed.                                              ////////
+    ////////                                                                                  ////////
+    //////////////////////////////////////////////////////////////////////////////////////////////////
+
+    /**
+     * Constructs a new object in which every attributes are set to a null value.
+     * <strong>This is not a valid object.</strong> This constructor is strictly
+     * reserved to JAXB, which will assign values to the fields using reflexion.
+     */
+    private DefaultTransformation() {
+    }
 }

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/package-info.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/package-info.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/package-info.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/package-info.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -65,8 +65,12 @@
 @XmlAccessorType(XmlAccessType.NONE)
 @XmlJavaTypeAdapters({
     @XmlJavaTypeAdapter(EX_Extent.class),
+    @XmlJavaTypeAdapter(CI_Citation.class),
     @XmlJavaTypeAdapter(DQ_PositionalAccuracy.class),
-    @XmlJavaTypeAdapter(StringAdapter.class),
+    @XmlJavaTypeAdapter(CC_OperationMethod.class),
+    @XmlJavaTypeAdapter(CC_GeneralParameterValue.class),
+    @XmlJavaTypeAdapter(CC_GeneralOperationParameter.class),
+    @XmlJavaTypeAdapter(SC_CRS.class),
     @XmlJavaTypeAdapter(InternationalStringConverter.class)
 })
 package org.apache.sis.referencing.operation;
@@ -80,5 +84,7 @@ import javax.xml.bind.annotation.adapter
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
 import org.apache.sis.xml.Namespaces;
 import org.apache.sis.internal.jaxb.gco.*;
+import org.apache.sis.internal.jaxb.referencing.*;
 import org.apache.sis.internal.jaxb.metadata.EX_Extent;
+import org.apache.sis.internal.jaxb.metadata.CI_Citation;
 import org.apache.sis.internal.jaxb.metadata.DQ_PositionalAccuracy;

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -493,6 +493,9 @@ public class DefaultMathTransformFactory
             final ParameterValueGroup parameters, final CoordinateSystem derivedCS)
             throws NoSuchIdentifierException, FactoryException
     {
+        ArgumentChecks.ensureNonNull("baseCRS",    baseCRS);
+        ArgumentChecks.ensureNonNull("parameters", parameters);
+        ArgumentChecks.ensureNonNull("derivedCS",  derivedCS);
         /*
          * If the user's parameters do not contain semi-major and semi-minor axis lengths, infer
          * them from the ellipsoid. We have to do that because those parameters are often omitted,
@@ -615,6 +618,9 @@ public class DefaultMathTransformFactory
             final MathTransform parameterized, final CoordinateSystem derivedCS)
             throws FactoryException
     {
+        ArgumentChecks.ensureNonNull("baseCS",        baseCS);
+        ArgumentChecks.ensureNonNull("parameterized", parameterized);
+        ArgumentChecks.ensureNonNull("derivedCS",     derivedCS);
         /*
          * Computes matrix for swapping axis and performing units conversion.
          * There is one matrix to apply before projection on (longitude,latitude)
@@ -701,6 +707,7 @@ public class DefaultMathTransformFactory
     public MathTransform createParameterizedTransform(final ParameterValueGroup parameters)
             throws NoSuchIdentifierException, FactoryException
     {
+        ArgumentChecks.ensureNonNull("parameters", parameters);
         final String methodName = parameters.getDescriptor().getName().getCode();
         OperationMethod method = null;
         try {
@@ -756,22 +763,22 @@ public class DefaultMathTransformFactory
      * <p>The dimension of the output space of the first transform must match the dimension of the input space
      * in the second transform. In order to concatenate more than two transforms, use this constructor repeatedly.</p>
      *
-     * @param  transform1 The first transform to apply to points.
-     * @param  transform2 The second transform to apply to points.
+     * @param  tr1 The first transform to apply to points.
+     * @param  tr2 The second transform to apply to points.
      * @return The concatenated transform.
      * @throws FactoryException if the object creation failed.
      *
      * @see MathTransforms#concatenate(MathTransform, MathTransform)
      */
     @Override
-    public MathTransform createConcatenatedTransform(final MathTransform transform1,
-                                                     final MathTransform transform2)
+    public MathTransform createConcatenatedTransform(final MathTransform tr1,
+                                                     final MathTransform tr2)
             throws FactoryException
     {
         lastMethod.remove();
         final MathTransform tr;
         try {
-            tr = MathTransforms.concatenate(transform1, transform2);
+            tr = MathTransforms.concatenate(tr1, tr2);
         } catch (IllegalArgumentException exception) {
             throw new FactoryException(exception);
         }

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -506,7 +506,7 @@ public class PassThroughTransform extend
         final int numRow    = numSubRow + (nSkipped + affine);
         final int numCol    = numSubCol + (nSkipped + affine);
         final Number[] elements = new Number[numRow * numCol]; // Matrix elements as row major (column index varies faster).
-        Arrays.fill(elements, Integer.valueOf(0));
+        Arrays.fill(elements, 0);
         /*                      ┌                  ┐
          *  Set UL part to 1:   │ 1  0             │
          *                      │ 0  1             │

Copied: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java (from r1701515, sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java?p2=sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java&p1=sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java&r1=1701515&r2=1701516&rev=1701516&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -113,7 +113,7 @@ public final strictfp class CC_Operation
     public void testSubtitution() throws JAXBException {
         final ParameterDescriptor<?>[]         expected   = create(REMARK);
         final List<GeneralParameterDescriptor> fromXML    = unmarshal().descriptors();
-        final List<GeneralParameterDescriptor> fromValues = UnmodifiableArrayList.wrap(expected);
+        final List<GeneralParameterDescriptor> fromValues = UnmodifiableArrayList.<GeneralParameterDescriptor>wrap(expected);
         final Map<GeneralParameterDescriptor,GeneralParameterDescriptor> replacements = new IdentityHashMap<>(4);
         final GeneralParameterDescriptor[] merged = CC_OperationParameterGroup.merge(fromXML,
                 fromValues.toArray(new GeneralParameterDescriptor[fromValues.size()]), replacements);

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/ReferencingUtilitiesTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/ReferencingUtilitiesTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/ReferencingUtilitiesTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/ReferencingUtilitiesTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -38,7 +38,7 @@ import static org.apache.sis.internal.re
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.5 (derived from 0.4)
- * @version 0.5
+ * @version 0.6
  * @module
  */
 public final strictfp class ReferencingUtilitiesTest extends TestCase {
@@ -84,6 +84,26 @@ public final strictfp class ReferencingU
     }
 
     /**
+     * Tests {@link ReferencingUtilities#toPropertyName(Class, Class)}.
+     *
+     * @since 0.6
+     */
+    @Test
+    public void testToPropertyName() {
+        assertEquals("coordinateSystem", toPropertyName(CoordinateSystem.class, CoordinateSystem.class).toString());
+        assertEquals("affineCS",         toPropertyName(CoordinateSystem.class, AffineCS        .class).toString());
+        assertEquals("cartesianCS",      toPropertyName(CoordinateSystem.class, CartesianCS     .class).toString());
+        assertEquals("cylindricalCS",    toPropertyName(CoordinateSystem.class, CylindricalCS   .class).toString());
+        assertEquals("ellipsoidalCS",    toPropertyName(CoordinateSystem.class, EllipsoidalCS   .class).toString());
+        assertEquals("linearCS",         toPropertyName(CoordinateSystem.class, LinearCS        .class).toString());
+//      assertEquals("parametricCS",     toPropertyName(CoordinateSystem.class, ParametricCS    .class).toString());
+        assertEquals("polarCS",          toPropertyName(CoordinateSystem.class, PolarCS         .class).toString());
+        assertEquals("sphericalCS",      toPropertyName(CoordinateSystem.class, SphericalCS     .class).toString());
+        assertEquals("timeCS",           toPropertyName(CoordinateSystem.class, TimeCS          .class).toString());
+        assertEquals("verticalCS",       toPropertyName(CoordinateSystem.class, VerticalCS      .class).toString());
+    }
+
+    /**
      * Tests {@link ReferencingUtilities#toWKTType(Class, Class)}.
      */
     @Test

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/MapProjectionTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/MapProjectionTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/MapProjectionTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/MapProjectionTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -141,8 +141,7 @@ public final strictfp class MapProjectio
      * This test is mostly for {@link Equirectangular#LATITUDE_OF_ORIGIN}.
      */
     private static void assertIsForcedToZero(final ParameterDescriptor<?> parameter) {
-        final Double zero = 0.0;
-        assertEquals("minimumValue", zero, parameter.getMinimumValue());
-        assertEquals("maximumValue", zero, parameter.getMaximumValue());
+        assertEquals("minimumValue", -0.0, parameter.getMinimumValue());
+        assertEquals("maximumValue", +0.0, parameter.getMaximumValue());
     }
 }

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -44,6 +44,7 @@ import org.apache.sis.test.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.ReferencingAssert.*;
+import static org.apache.sis.test.TestUtilities.getSingleton;
 
 // Branch-specific imports
 import org.opengis.util.Factory;
@@ -65,6 +66,8 @@ import org.opengis.util.Factory;
     org.apache.sis.referencing.crs.DefaultVerticalCRSTest.class,
     org.apache.sis.referencing.crs.DefaultTemporalCRSTest.class,
     org.apache.sis.referencing.crs.DefaultCompoundCRSTest.class,
+    org.apache.sis.referencing.crs.DefaultEngineeringCRSTest.class,
+    org.apache.sis.referencing.crs.DefaultImageCRSTest.class,
     org.apache.sis.referencing.cs.DirectionAlongMeridianTest.class
 })
 public final strictfp class GeodeticObjectParserTest extends TestCase {
@@ -105,8 +108,11 @@ public final strictfp class GeodeticObje
     }
 
     /**
-     * Asserts that the name and (optionally) the EPSG identifier of the given object
-     * are equal to the given strings.
+     * Asserts that the name and (optionally) the EPSG identifier of the given object are equal to the given strings.
+     * As a special case if the given EPSG code is 0, then this method verifies that the given object has no identifier.
+     *
+     * <p>This method is similar to {@link #assertEpsgNameAndIdentifierEqual(String, int, IdentifiedObject)} except
+     * that the given name is not necessarily in the EPSG namespace and the EPSG code is allowed to be absent.</p>
      *
      * @param name The expected name.
      * @param epsg The expected EPSG identifier, or {@code 0} if the object shall have no identifier.
@@ -114,7 +120,11 @@ public final strictfp class GeodeticObje
     static void assertNameAndIdentifierEqual(final String name, final int epsg, final IdentifiedObject object) {
         final String message = object.getClass().getSimpleName();
         assertEquals(message, name, object.getName().getCode());
-        assertEpsgIdentifierEquals(epsg, object.getIdentifiers());
+        if (epsg != 0) {
+            assertEquals(message, String.valueOf(epsg), getSingleton(object.getIdentifiers()).getCode());
+        } else {
+            assertTrue(message, object.getIdentifiers().isEmpty());
+        }
     }
 
     /**

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -84,7 +84,7 @@ public final strictfp class DefaultParam
             final int minimumValue, final int maximumValue, final int defaultValue)
     {
         return new DefaultParameterDescriptor<>(properties(name), 1, 1, Integer.class,
-                NumberRange.create(minimumValue, true, maximumValue, true), null, Integer.valueOf(defaultValue));
+                NumberRange.create(minimumValue, true, maximumValue, true), null, defaultValue);
     }
 
     /**
@@ -102,7 +102,7 @@ public final strictfp class DefaultParam
     {
         return new DefaultParameterDescriptor<>(properties(name), 1, 1, Double.class,
                 MeasurementRange.create(minimumValue, true, maximumValue, true, unit), null,
-                Double.isNaN(defaultValue) ? null : Double.valueOf(defaultValue));
+                Double.isNaN(defaultValue) ? null : defaultValue);
     }
 
     /**
@@ -173,6 +173,7 @@ public final strictfp class DefaultParam
      */
     @Test
     @DependsOnMethod("testOptionalInteger")
+    @SuppressWarnings("UnnecessaryBoxing")
     public void testRangeValidation() {
         try {
             create("Test range", 20, 4, 12);
@@ -209,6 +210,7 @@ public final strictfp class DefaultParam
      * Tests {@code DefaultParameterDescriptor} construction for {@link Double} type.
      */
     @Test
+    @SuppressWarnings("UnnecessaryBoxing")
     public void testDoubleType() {
         final ParameterDescriptor<Double> descriptor = create("Length measure", 4, 20, 12, SI.METRE);
         assertEquals("name",         "Length measure",   descriptor.getName().getCode());
@@ -262,7 +264,8 @@ public final strictfp class DefaultParam
          * Invalid operation: element not in the list of valid elements.
          */
         try {
-            create("Enumeration param", String.class, enumeration, "Pear");
+            DefaultParameterDescriptor<String> p = create("Enumeration param", String.class, enumeration, "Pear");
+            fail("Should not be allowed to create " + p);
         } catch (IllegalArgumentException e) {
             assertEquals("Parameter “Enumeration param” can not take the “Pear” value.", e.getMessage());
         }
@@ -273,6 +276,7 @@ public final strictfp class DefaultParam
      */
     @Test
     @DependsOnMethod("testDoubleType")
+    @SuppressWarnings("UnnecessaryBoxing")
     public void testArrayType() {
         final DefaultParameterDescriptor<double[]> descriptor = createForArray("Array param", 4, 9, SI.METRE);
         assertEquals("name",       "Array param",  descriptor.getName().getCode());
@@ -294,8 +298,9 @@ public final strictfp class DefaultParam
          * Invalid operation: wrong type of range value.
          */
         try {
-            new DefaultParameterDescriptor<>(properties("Array param"), 0, 1,
-                    double[].class, NumberRange.create(4, true, 9, true), null, null);
+            DefaultParameterDescriptor<double[]> p = new DefaultParameterDescriptor<>(properties("Array param"),
+                    0, 1, double[].class, NumberRange.create(4, true, 9, true), null, null);
+            fail("Should not be allowed to create " + p);
         } catch (IllegalArgumentException e) {
             assertEquals("Argument ‘valueDomain’ can not be an instance of ‘Range<Integer>’.", e.getMessage());
         }

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -44,7 +44,7 @@ import static org.apache.sis.metadata.is
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.4
- * @version 0.5
+ * @version 0.6
  * @module
  */
 @DependsOn(ParameterBuilderTest.class)
@@ -68,7 +68,7 @@ public final strictfp class ParameterFor
     }
 
     /**
-     * Creates the test parameter for the Mercator projection, to be shared by {@link ParameterMarshallingTest}.
+     * Creates the test parameters for the Mercator projection, to be shared by {@link ParameterMarshallingTest}.
      *
      * <div class="note"><b>Note:</b>
      * the default values are not part of EPSG definitions. They are added here only for testing purpose.</div>
@@ -77,7 +77,9 @@ public final strictfp class ParameterFor
         ParameterBuilder builder = new ParameterBuilder();
         builder.setCodeSpace(EPSG, "EPSG").setRequired(true);
         ParameterDescriptor<?>[] parameters = {
-            builder.addIdentifier("8801").addName("Latitude of natural origin")      .addName(OGC, "latitude_of_origin").createBounded( -80,  +84,  40, NonSI.DEGREE_ANGLE),
+            builder.addIdentifier("8801").addName("Latitude of natural origin").addName(OGC, "latitude_of_origin")
+                    .setRemarks("This parameter is shown for completeness, but should never have a value different than 0 for this projection.")
+                    .createBounded( -80,  +84,  40, NonSI.DEGREE_ANGLE),
             builder.addIdentifier("8802").addName("Longitude of natural origin")     .addName(OGC, "central_meridian")  .createBounded(-180, +180, -60, NonSI.DEGREE_ANGLE),
             builder.addIdentifier("8805").addName("Scale factor at natural origin")  .addName(OGC, "scale_factor")      .createStrictlyPositive(1, Unit.ONE),
             builder.addIdentifier("8806").addName("False easting").setRequired(false).addName(OGC, "false_easting")     .create( 5000, SI.METRE),
@@ -127,12 +129,13 @@ public final strictfp class ParameterFor
                 "┌────────────────────────────────┬────────┬────────────┬───────────────┬───────────────┐\n" +
                 "│ Name (EPSG)                    │ Type   │ Obligation │ Value domain  │ Default value │\n" +
                 "├────────────────────────────────┼────────┼────────────┼───────────────┼───────────────┤\n" +
-                "│ Latitude of natural origin     │ Double │ Mandatory  │  [-80 … 84]°  │        40.0°  │\n" +
+                "│ Latitude of natural origin¹    │ Double │ Mandatory  │  [-80 … 84]°  │        40.0°  │\n" +
                 "│ Longitude of natural origin    │ Double │ Mandatory  │ [-180 … 180]° │       -60.0°  │\n" +
                 "│ Scale factor at natural origin │ Double │ Mandatory  │    (0 … ∞)    │         1.0   │\n" +
                 "│ False easting                  │ Double │ Optional   │   (-∞ … ∞) m  │      5000.0 m │\n" +
                 "│ False northing                 │ Double │ Optional   │   (-∞ … ∞) m  │     10000.0 m │\n" +
-                "└────────────────────────────────┴────────┴────────────┴───────────────┴───────────────┘\n", text);
+                "└────────────────────────────────┴────────┴────────────┴───────────────┴───────────────┘\n" +
+                "¹ This parameter is shown for completeness, but should never have a value different than 0 for this projection.\n", text);
     }
 
     /**
@@ -158,11 +161,12 @@ public final strictfp class ParameterFor
                 "┌────────────────────────────────┬────────┬───────────────┬──────────┐\n" +
                 "│ Name (EPSG)                    │ Type   │ Value domain  │ Value    │\n" +
                 "├────────────────────────────────┼────────┼───────────────┼──────────┤\n" +
-                "│ Latitude of natural origin     │ Double │  [-80 … 84]°  │  20.0°   │\n" +
+                "│ Latitude of natural origin¹    │ Double │  [-80 … 84]°  │  20.0°   │\n" +
                 "│ Longitude of natural origin    │ Double │ [-180 … 180]° │ -60.0°   │\n" +
                 "│ Scale factor at natural origin │ Double │    (0 … ∞)    │ 0.997    │\n" +
                 "│ False northing                 │ Double │   (-∞ … ∞) m  │  20.0 km │\n" +
-                "└────────────────────────────────┴────────┴───────────────┴──────────┘\n", text);
+                "└────────────────────────────────┴────────┴───────────────┴──────────┘\n" +
+                "¹ This parameter is shown for completeness, but should never have a value different than 0 for this projection.\n", text);
     }
 
     /**
@@ -179,11 +183,12 @@ public final strictfp class ParameterFor
                 "┌────────────────────────────────┬────────┬─────────────────────┬──────────┐\n" +
                 "│ Nom (EPSG)                     │ Type   │ Domaine des valeurs │ Valeur   │\n" +
                 "├────────────────────────────────┼────────┼─────────────────────┼──────────┤\n" +
-                "│ Latitude of natural origin     │ Double │  [-80 … 84]°        │    20°   │\n" +
+                "│ Latitude of natural origin¹    │ Double │  [-80 … 84]°        │    20°   │\n" +
                 "│ Longitude of natural origin    │ Double │ [-180 … 180]°       │   -60°   │\n" +
                 "│ Scale factor at natural origin │ Double │    (0 … ∞)          │ 0,997    │\n" +
                 "│ False northing                 │ Double │   (-∞ … ∞) m        │    20 km │\n" +
-                "└────────────────────────────────┴────────┴─────────────────────┴──────────┘\n", text);
+                "└────────────────────────────────┴────────┴─────────────────────┴──────────┘\n" +
+                "¹ This parameter is shown for completeness, but should never have a value different than 0 for this projection.\n", text);
     }
 
     /**
@@ -205,7 +210,7 @@ public final strictfp class ParameterFor
                 "╔═════════════════════════════════════════════╤════════╤════════════╤═══════════════╤═══════════════╗\n" +
                 "║ Name                                        │ Type   │ Obligation │ Value domain  │ Default value ║\n" +
                 "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n" +
-                "║ EPSG: Latitude of natural origin (8801)     │ Double │ Mandatory  │  [-80 … 84]°  │        40.0°  ║\n" +
+                "║ EPSG: Latitude of natural origin¹ (8801)    │ Double │ Mandatory  │  [-80 … 84]°  │        40.0°  ║\n" +
                 "║ OGC:  latitude_of_origin                    │        │            │               │               ║\n" +
                 "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n" +
                 "║ EPSG: Longitude of natural origin (8802)    │ Double │ Mandatory  │ [-180 … 180]° │       -60.0°  ║\n" +
@@ -219,7 +224,8 @@ public final strictfp class ParameterFor
                 "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n" +
                 "║ EPSG: False northing (8807)                 │ Double │ Optional   │   (-∞ … ∞) m  │     10000.0 m ║\n" +
                 "║ OGC:  false_northing                        │        │            │               │               ║\n" +
-                "╚═════════════════════════════════════════════╧════════╧════════════╧═══════════════╧═══════════════╝\n", text);
+                "╚═════════════════════════════════════════════╧════════╧════════════╧═══════════════╧═══════════════╝\n" +
+                "¹ This parameter is shown for completeness, but should never have a value different than 0 for this projection.\n", text);
     }
 
     /**
@@ -239,7 +245,7 @@ public final strictfp class ParameterFor
                 "╔═════════════════════════════════════════════╤════════╤════════════╤═══════════════╤══════════╗\n" +
                 "║ Name                                        │ Type   │ Obligation │ Value domain  │ Value    ║\n" +
                 "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n" +
-                "║ EPSG: Latitude of natural origin (8801)     │ Double │ Mandatory  │  [-80 … 84]°  │  20.0°   ║\n" +
+                "║ EPSG: Latitude of natural origin¹ (8801)    │ Double │ Mandatory  │  [-80 … 84]°  │  20.0°   ║\n" +
                 "║ OGC:  latitude_of_origin                    │        │            │               │          ║\n" +
                 "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n" +
                 "║ EPSG: Longitude of natural origin (8802)    │ Double │ Mandatory  │ [-180 … 180]° │ -60.0°   ║\n" +
@@ -250,7 +256,8 @@ public final strictfp class ParameterFor
                 "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n" +
                 "║ EPSG: False northing (8807)                 │ Double │ Optional   │   (-∞ … ∞) m  │  20.0 km ║\n" +
                 "║ OGC:  false_northing                        │        │            │               │          ║\n" +
-                "╚═════════════════════════════════════════════╧════════╧════════════╧═══════════════╧══════════╝\n", text);
+                "╚═════════════════════════════════════════════╧════════╧════════════╧═══════════════╧══════════╝\n" +
+                "¹ This parameter is shown for completeness, but should never have a value different than 0 for this projection.\n", text);
     }
 
     /**
@@ -315,14 +322,15 @@ public final strictfp class ParameterFor
         text = format.format(createParameterValues());
         assertMultilinesEquals(
                 "OGC: Mercator_1SP\n" +
-                "┌────────────────────┬────────┬───────────────┬──────────┐\n" +
-                "│ Name (OGC)         │ Type   │ Value domain  │ Value    │\n" +
-                "├────────────────────┼────────┼───────────────┼──────────┤\n" +
-                "│ latitude_of_origin │ Double │  [-80 … 84]°  │  20.0°   │\n" +
-                "│ central_meridian   │ Double │ [-180 … 180]° │ -60.0°   │\n" +
-                "│ scale_factor       │ Double │    (0 … ∞)    │ 0.997    │\n" +
-                "│ false_northing     │ Double │   (-∞ … ∞) m  │  20.0 km │\n" +
-                "└────────────────────┴────────┴───────────────┴──────────┘\n", text);
+                "┌─────────────────────┬────────┬───────────────┬──────────┐\n" +
+                "│ Name (OGC)          │ Type   │ Value domain  │ Value    │\n" +
+                "├─────────────────────┼────────┼───────────────┼──────────┤\n" +
+                "│ latitude_of_origin¹ │ Double │  [-80 … 84]°  │  20.0°   │\n" +
+                "│ central_meridian    │ Double │ [-180 … 180]° │ -60.0°   │\n" +
+                "│ scale_factor        │ Double │    (0 … ∞)    │ 0.997    │\n" +
+                "│ false_northing      │ Double │   (-∞ … ∞) m  │  20.0 km │\n" +
+                "└─────────────────────┴────────┴───────────────┴──────────┘\n" +
+                "¹ This parameter is shown for completeness, but should never have a value different than 0 for this projection.\n", text);
     }
 
     /**

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterMarshallingTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterMarshallingTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterMarshallingTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterMarshallingTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -53,7 +53,10 @@ import java.util.Objects;
  * @version 0.6
  * @module
  */
-@DependsOn(DefaultParameterValueTest.class)
+@DependsOn({
+    DefaultParameterValueTest.class,
+    DefaultParameterValueGroupTest.class
+})
 public final strictfp class ParameterMarshallingTest extends XMLTestCase {
     /**
      * Creates a parameter value for marshalling test.
@@ -182,7 +185,7 @@ public final strictfp class ParameterMar
         final DefaultParameterValue<Boolean> parameter = create(Boolean.class, null);
         parameter.setValue(Boolean.TRUE);
         testMarshallAndUnmarshall(parameter,
-                "<gml:ParameterValue xmlns:gml=\"" + Namespaces.GML + "\">\n" 
+                "<gml:ParameterValue xmlns:gml=\"" + Namespaces.GML + "\">\n"
               + "  <gml:booleanValue>true</gml:booleanValue>\n"
               + "    <gml:operationParameter>"
               + "      <gml:OperationParameter>"
@@ -203,7 +206,7 @@ public final strictfp class ParameterMar
         final DefaultParameterValue<Integer> parameter = create(Integer.class, null);
         parameter.setValue(2000);
         testMarshallAndUnmarshall(parameter,
-                "<gml:ParameterValue xmlns:gml=\"" + Namespaces.GML + "\">\n" 
+                "<gml:ParameterValue xmlns:gml=\"" + Namespaces.GML + "\">\n"
               + "  <gml:integerValue>2000</gml:integerValue>\n"
               + "    <gml:operationParameter>"
               + "      <gml:OperationParameter>"
@@ -246,7 +249,7 @@ public final strictfp class ParameterMar
                 new MeasurementRange<Double>(Double.class, null, false, null, false, SI.METRE));
         parameter.setValue(3000, SI.METRE);
         testMarshallAndUnmarshall(parameter,
-                "<gml:ParameterValue xmlns:gml=\"" + Namespaces.GML + "\">\n" 
+                "<gml:ParameterValue xmlns:gml=\"" + Namespaces.GML + "\">\n"
               + "  <gml:value uom=\"urn:ogc:def:uom:EPSG::9001\">3000.0</gml:value>\n"
               + "    <gml:operationParameter>"
               + "      <gml:OperationParameter>"
@@ -301,8 +304,7 @@ public final strictfp class ParameterMar
      * @param group The descriptor group to verify.
      */
     private static void verifyDescriptorGroup(final ParameterDescriptorGroup group) {
-        assertEpsgIdentifierEquals(9804, group.getIdentifiers());
-        assertIdentifierEquals("name", "##unrestricted", "EPSG", null, "Mercator (variant A)", group.getName());
+        assertEpsgNameAndIdentifierEqual("Mercator (variant A)", 9804, group);
 
         // Verify the ParameterDescriptors properties.
         final Iterator<GeneralParameterDescriptor> it = group.descriptors().iterator();
@@ -326,8 +328,7 @@ public final strictfp class ParameterMar
     private static void verifyDescriptor(final int code, final String name, final String alias,
             final boolean required, final GeneralParameterDescriptor descriptor)
     {
-        assertEpsgIdentifierEquals(code, descriptor.getIdentifiers());
-        assertIdentifierEquals("name", "##unrestricted", "EPSG", null, name, descriptor.getName());
+        assertEpsgNameAndIdentifierEqual(name, code, descriptor);
         assertAliasTipEquals(alias, descriptor);
         assertEquals("maximumOccurs", 1, descriptor.getMaximumOccurs());
         assertEquals("minimumOccurs", required ? 1 : 0, descriptor.getMinimumOccurs());

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterValueGroupWrapper.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterValueGroupWrapper.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterValueGroupWrapper.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterValueGroupWrapper.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -33,6 +33,7 @@ import org.opengis.parameter.ParameterDe
  * @version 0.4
  * @module
  */
+@SuppressWarnings("CloneInNonCloneableClass")
 final class ParameterValueGroupWrapper implements ParameterValueGroup {
     /**
      * The implementation to hide.
@@ -46,10 +47,11 @@ final class ParameterValueGroupWrapper i
         this.impl = impl;
     }
 
+    @SuppressWarnings("CloneDoesntCallSuperClone")
+    @Override public ParameterValueGroup         clone()                {return impl.clone();}
     @Override public ParameterDescriptorGroup    getDescriptor()        {return impl.getDescriptor();}
     @Override public List<GeneralParameterValue> values()               {return impl.values();}
     @Override public ParameterValue<?>           parameter(String name) {return impl.parameter(name);}
     @Override public List<ParameterValueGroup>   groups(String name)    {return impl.groups(name);}
     @Override public ParameterValueGroup         addGroup(String name)  {return impl.addGroup(name);}
-    @Override public ParameterValueGroup         clone()                {return impl.clone();}
 }

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/TensorParametersTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/TensorParametersTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/TensorParametersTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/TensorParametersTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -161,8 +161,15 @@ public strictfp class TensorParametersTe
     {
         assertEquals("name", names[row][column], actual.getName().getCode());
         assertAliasTipEquals((aliases != null) ? aliases[row][column] : null, actual);
-        assertEpsgIdentifierEquals((identifiers != null) ? identifiers[row][column] : 0, actual.getIdentifiers());
         assertEquals("defaultValue", defaultValue, actual.getDefaultValue());
+        if (identifiers != null) {
+            final short expected = identifiers[row][column];
+            if (expected != 0) {
+                assertEpsgIdentifierEquals(String.valueOf(expected), TestUtilities.getSingleton(actual.getIdentifiers()));
+                return;
+            }
+        }
+        assertTrue(actual.getIdentifiers().isEmpty());
     }
 
     /**

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -23,6 +23,9 @@ import javax.xml.bind.JAXBException;
 import org.opengis.util.FactoryException;
 import org.opengis.referencing.crs.ProjectedCRS;
 import org.opengis.referencing.crs.GeographicCRS;
+import org.opengis.referencing.cs.AxisDirection;
+import org.opengis.referencing.operation.Projection;
+import org.opengis.parameter.ParameterValueGroup;
 import org.opengis.test.Validators;
 import org.apache.sis.metadata.iso.citation.Citations;
 import org.apache.sis.referencing.cs.HardCodedCS;
@@ -38,7 +41,7 @@ import org.apache.sis.test.XMLTestCase;
 import org.junit.Test;
 import org.junit.Rule;
 
-import static org.apache.sis.test.MetadataAssert.*;
+import static org.apache.sis.test.ReferencingAssert.*;
 
 
 /**
@@ -404,14 +407,25 @@ public final strictfp class DefaultProje
      * @throws JAXBException If an error occurred during (un)marshalling.
      */
     @Test
-    @org.junit.Ignore("Still missing some JAXB annotations.")
     public void testXML() throws FactoryException, JAXBException {
         final DefaultProjectedCRS crs = unmarshalFile(DefaultProjectedCRS.class, XML_FILE);
         Validators.validate(crs);
+        assertEpsgNameAndIdentifierEqual("NTF (Paris) / Lambert zone II", 27572, crs);
+        assertEpsgNameAndIdentifierEqual("NTF (Paris)", 4807, crs.getBaseCRS());
         assertEquals("scope", "Large and medium scale topographic mapping and engineering survey.", crs.getScope().toString());
-        /*
-         * Marshal and compare with the original file.
-         */
-        assertMarshalEqualsFile(XML_FILE, crs, "xmlns:*", "xsi:schemaLocation");
+        assertAxisDirectionsEqual("baseCRS", crs.getBaseCRS().getCoordinateSystem(), AxisDirection.NORTH, AxisDirection.EAST);
+        assertAxisDirectionsEqual("coordinateSystem", crs.getCoordinateSystem(), AxisDirection.EAST, AxisDirection.NORTH);
+
+        final Projection conversion = crs.getConversionFromBase();
+        final ParameterValueGroup pg = conversion.getParameterValues();
+        assertEpsgNameAndIdentifierEqual("Lambert zone II", 18082, conversion);
+        assertEpsgNameAndIdentifierEqual("Lambert Conic Conformal (1SP)", 9801, conversion.getMethod());
+        assertEquals("Latitude of natural origin",    52,          pg.parameter("Latitude of natural origin")    .doubleValue(NonSI.GRADE), STRICT);
+        assertEquals("Longitude of natural origin",    0,          pg.parameter("Longitude of natural origin")   .doubleValue(NonSI.GRADE), STRICT);
+        assertEquals("Scale factor at natural origin", 0.99987742, pg.parameter("Scale factor at natural origin").doubleValue(),            STRICT);
+        assertEquals("False easting",             600000,          pg.parameter("False easting")                 .doubleValue(SI.METRE),    STRICT);
+        assertEquals("False northing",           2200000,          pg.parameter("False northing")                .doubleValue(SI.METRE),    STRICT);
+
+        assertNotNull("conversion.mathTransform", conversion.getMathTransform());
     }
 }

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -28,10 +28,10 @@ import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.DependsOnMethod;
 import org.junit.Test;
 
-import static org.apache.sis.test.Assert.*;
 import static java.util.Collections.singletonMap;
 import static org.opengis.referencing.IdentifiedObject.NAME_KEY;
 import static org.apache.sis.test.TestUtilities.getSingleton;
+import static org.apache.sis.test.ReferencingAssert.*;
 
 
 /**
@@ -215,9 +215,11 @@ public final strictfp class DefaultCarte
         final CoordinateSystemAxis N = cs.getAxis(1);
         assertEquals("name",    "Easting, northing (E,N)", cs.getName().getCode());
         assertEquals("remarks", "Used in ProjectedCRS.", cs.getRemarks().toString());
-        assertIdentifierEquals(        "identifier", "EPSG Geodetic Parameter Dataset", "EPSG", null, "4400", getSingleton(cs.getIdentifiers()));
-        assertIdentifierEquals("axis[0].identifier", "EPSG Geodetic Parameter Dataset", "EPSG", null, "1",    getSingleton(E.getIdentifiers()));
-        assertIdentifierEquals("axis[1].identifier", "EPSG Geodetic Parameter Dataset", "EPSG", null, "2",    getSingleton(N.getIdentifiers()));
+        assertEpsgIdentifierEquals("4400", getSingleton(cs.getIdentifiers()));
+        assertEpsgIdentifierEquals("1",    getSingleton(E.getIdentifiers()));
+        assertEpsgIdentifierEquals("2",    getSingleton(N.getIdentifiers()));
+        assertAxisEquals("Easting",  "E", AxisDirection.EAST,  Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, SI.METRE, null, E);
+        assertAxisEquals("Northing", "N", AxisDirection.NORTH, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, SI.METRE, null, N);
         /*
          * Marshal and compare with the original file.
          */

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -19,14 +19,16 @@ package org.apache.sis.referencing.cs;
 import javax.xml.bind.JAXBException;
 import javax.measure.unit.NonSI;
 import org.opengis.test.Validators;
+import org.opengis.referencing.cs.AxisDirection;
 import org.opengis.referencing.cs.CoordinateSystemAxis;
+import org.opengis.referencing.cs.RangeMeaning;
 import org.apache.sis.test.XMLTestCase;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.referencing.GeodeticObjectVerifier;
 import org.junit.Test;
 
-import static org.apache.sis.test.Assert.*;
+import static org.apache.sis.test.ReferencingAssert.*;
 import static org.apache.sis.test.TestUtilities.getSingleton;
 
 
@@ -129,11 +131,11 @@ public final strictfp class DefaultEllip
         final CoordinateSystemAxis λ = cs.getAxis(1);
         assertEquals("name",    "Latitude (north), Longitude (east)",     cs.getName().getCode());
         assertEquals("remarks", "Used in two-dimensional GeographicCRS.", cs.getRemarks().toString());
-        assertIdentifierEquals(        "identifier", "EPSG Geodetic Parameter Dataset", "EPSG", null, "6422", getSingleton(cs.getIdentifiers()));
-        assertIdentifierEquals("axis[0].identifier", "EPSG Geodetic Parameter Dataset", "EPSG", null, "106",  getSingleton(φ.getIdentifiers()));
-        assertIdentifierEquals("axis[1].identifier", "EPSG Geodetic Parameter Dataset", "EPSG", null, "107",  getSingleton(λ.getIdentifiers()));
-        assertEquals("axis[0].abbreviation", "φ", φ.getAbbreviation());
-        assertEquals("axis[1].abbreviation", "λ", λ.getAbbreviation());
+        assertAxisEquals("Geodetic latitude",  "φ", AxisDirection.NORTH, -90,  +90, NonSI.DEGREE_ANGLE, RangeMeaning.EXACT, φ);
+        assertAxisEquals("Geodetic longitude", "λ", AxisDirection.EAST, -180, +180, NonSI.DEGREE_ANGLE, RangeMeaning.WRAPAROUND, λ);
+        assertEpsgIdentifierEquals("6422", getSingleton(cs.getIdentifiers()));
+        assertEpsgIdentifierEquals("106",  getSingleton(φ.getIdentifiers()));
+        assertEpsgIdentifierEquals("107",  getSingleton(λ.getIdentifiers()));
         /*
          * Marshal and compare with the original file.
          */

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultOperationMethodTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultOperationMethodTest.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultOperationMethodTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultOperationMethodTest.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -88,9 +88,8 @@ public final strictfp class DefaultOpera
     @Test
     public void testConstruction() {
         final OperationMethod method = create("Mercator (variant A)", "9804", "EPSG guidance note #7-2", 2);
-        assertEpsgIdentifierEquals("Mercator (variant A)", method.getName());
-        assertEpsgIdentifierEquals(9804, method.getIdentifiers());
-        assertEquals("formula", "EPSG guidance note #7-2", method.getFormula().getCitation().getTitle().toString());
+        assertEpsgNameAndIdentifierEqual("Mercator (variant A)", 9804, method);
+        assertTitleEquals("formula", "EPSG guidance note #7-2", method.getFormula().getCitation());
         assertEquals("sourceDimensions", Integer.valueOf(2), method.getSourceDimensions());
         assertEquals("targetDimensions", Integer.valueOf(2), method.getTargetDimensions());
     }

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/ReferencingAssert.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/ReferencingAssert.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/ReferencingAssert.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/ReferencingAssert.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -99,20 +99,20 @@ public strictfp class ReferencingAssert
     }
 
     /**
-     * Asserts that the string representation of the unique identifier in the given collection is equals to the given
-     * EPSG code. As a special case if the given code is 0, then this method verifies that the given object has no
-     * identifier.
+     * Asserts that the given object has the expected name and singleton identifier in the {@code "EPSG"} code space.
+     * No other identifier than the given one is expected. The authority is expected to have the {@code "EPSG"} title,
+     * alternate title or identifier.
      *
-     * @param expected The expected EPSG code, or {@code 0} if we expect no EPSG code.
-     * @param actual   The set of identifiers in which to verify the EPSG code.
+     * @param name       The expected EPSG name.
+     * @param identifier The expected EPSG identifier.
+     * @param object     The object to verify.
+     *
+     * @since 0.6
      */
-    public static void assertEpsgIdentifierEquals(final int expected, final Collection<? extends Identifier> actual) {
-        assertNotNull(actual);
-        if (expected == 0) {
-            assertTrue("identifiers.isEmpty()", actual.isEmpty());
-        } else {
-            assertEpsgIdentifierEquals(String.valueOf(expected), TestUtilities.getSingleton(actual));
-        }
+    public static void assertEpsgNameAndIdentifierEqual(final String name, final int identifier, final IdentifiedObject object) {
+        assertNotNull(object);
+        assertEpsgIdentifierEquals(name, object.getName());
+        assertEpsgIdentifierEquals(String.valueOf(identifier), TestUtilities.getSingleton(object.getIdentifiers()));
     }
 
     /**

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java [UTF-8] Sun Sep  6 19:10:30 2015
@@ -71,6 +71,8 @@ import org.junit.BeforeClass;
     org.apache.sis.parameter.TensorValuesTest.class,
     org.apache.sis.parameter.MapProjectionParametersTest.class,
     org.apache.sis.parameter.ParameterMarshallingTest.class,
+    org.apache.sis.internal.jaxb.referencing.CC_GeneralOperationParameterTest.class,
+    org.apache.sis.internal.jaxb.referencing.CC_OperationParameterGroupTest.class,
 
     // Test transforms other than map projections.
     org.apache.sis.referencing.operation.transform.CoordinateDomainTest.class,
@@ -132,8 +134,11 @@ import org.junit.BeforeClass;
     org.apache.sis.referencing.crs.DefaultGeographicCRSTest.class,
     org.apache.sis.referencing.crs.DefaultVerticalCRSTest.class,
     org.apache.sis.referencing.crs.DefaultTemporalCRSTest.class,
+    org.apache.sis.referencing.crs.DefaultEngineeringCRSTest.class,
+    org.apache.sis.referencing.crs.DefaultImageCRSTest.class,
     org.apache.sis.referencing.operation.DefaultTransformationTest.class,
     org.apache.sis.referencing.operation.DefaultConversionTest.class,
+    org.apache.sis.referencing.operation.OperationMarshallingTest.class,
     org.apache.sis.referencing.crs.DefaultProjectedCRSTest.class,
     org.apache.sis.referencing.crs.DefaultDerivedCRSTest.class,
     org.apache.sis.referencing.crs.SubTypesTest.class,

Modified: sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/parameter/ParameterDescriptorGroup.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/parameter/ParameterDescriptorGroup.xml?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/parameter/ParameterDescriptorGroup.xml (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/parameter/ParameterDescriptorGroup.xml Sun Sep  6 19:10:30 2015
@@ -32,6 +32,7 @@
       <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8801</gml:identifier>
       <gml:name codeSpace="EPSG">Latitude of natural origin</gml:name>
       <gml:name codeSpace="OGC">latitude_of_origin</gml:name>
+      <gml:remarks>This parameter is shown for completeness, but should never have a value different than 0 for this projection.</gml:remarks>
     </gml:OperationParameter>
   </gml:parameter>
   <gml:parameter>

Modified: sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/parameter/ParameterValueGroup.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/parameter/ParameterValueGroup.xml?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/parameter/ParameterValueGroup.xml (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/parameter/ParameterValueGroup.xml Sun Sep  6 19:10:30 2015
@@ -30,6 +30,7 @@
           <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8801</gml:identifier>
           <gml:name codeSpace="EPSG">Latitude of natural origin</gml:name>
           <gml:name codeSpace="OGC">latitude_of_origin</gml:name>
+          <gml:remarks>This parameter is shown for completeness, but should never have a value different than 0 for this projection.</gml:remarks>
         </gml:OperationParameter>
       </gml:operationParameter>
     </gml:ParameterValue>
@@ -75,6 +76,7 @@
           <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8801</gml:identifier>
           <gml:name codeSpace="EPSG">Latitude of natural origin</gml:name>
           <gml:name codeSpace="OGC">latitude_of_origin</gml:name>
+          <gml:remarks>This parameter is shown for completeness, but should never have a value different than 0 for this projection.</gml:remarks>
         </gml:OperationParameter>
       </gml:parameter>
       <gml:parameter>

Modified: sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/crs/GeographicCRS.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/crs/GeographicCRS.xml?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/crs/GeographicCRS.xml (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/crs/GeographicCRS.xml Sun Sep  6 19:10:30 2015
@@ -17,6 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
+
 <gml:GeodeticCRS xsi:schemaLocation = "http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/coordinateReferenceSystems.xsd"
                  xmlns:gml          = "http://www.opengis.net/gml/3.2"
                  xmlns:gmd          = "http://www.isotc211.org/2005/gmd"

Modified: sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/crs/ProjectedCRS.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/crs/ProjectedCRS.xml?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/crs/ProjectedCRS.xml (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/crs/ProjectedCRS.xml Sun Sep  6 19:10:30 2015
@@ -17,48 +17,121 @@
   specific language governing permissions and limitations
   under the License.
 -->
+
 <gml:ProjectedCRS xsi:schemaLocation = "http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/coordinateReferenceSystems.xsd"
                   xmlns:gml          = "http://www.opengis.net/gml/3.2"
                   xmlns:xsi          = "http://www.w3.org/2001/XMLSchema-instance"
-                  xmlns:xlink        = "http://www.w3.org/1999/xlink"
                   gml:id             = "epsg-crs-27572">
+
   <gml:identifier codeSpace="IOGP">urn:ogc:def:crs:EPSG::27572</gml:identifier>
   <gml:name codeSpace="EPSG">NTF (Paris) / Lambert zone II</gml:name>
   <gml:scope>Large and medium scale topographic mapping and engineering survey.</gml:scope>
   <gml:conversion>
-    <gml:Conversion gml:id="LambertzoneII">
+    <gml:Conversion gml:id="LambertZoneII">
       <gml:identifier codeSpace="IOGP">urn:ogc:def:coordinateOperation:EPSG::18082</gml:identifier>
       <gml:name codeSpace="EPSG">Lambert zone II</gml:name>
       <gml:scope>Large and medium scale topographic mapping and engineering survey.</gml:scope>
-      <gml:method xlink:href="urn:ogc:def:method:EPSG::9801"/>
+      <gml:method>
+        <gml:OperationMethod gml:id="epsg-method-9801">
+          <gml:identifier codeSpace="IOGP">urn:ogc:def:method:EPSG::9801</gml:identifier>
+          <gml:name codeSpace="EPSG">Lambert Conic Conformal (1SP)</gml:name>
+          <gml:formula>See EPSG Guidance Note #7-2.</gml:formula>
+          <gml:sourceDimensions>2</gml:sourceDimensions>
+          <gml:targetDimensions>2</gml:targetDimensions>
+          <gml:parameter>
+            <gml:OperationParameter gml:id="epsg-param-8801">
+              <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8801</gml:identifier>
+              <gml:name>Latitude of natural origin</gml:name>
+            </gml:OperationParameter>
+          </gml:parameter>
+          <gml:parameter>
+            <gml:OperationParameter gml:id="epsg-param-8802">
+              <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8802</gml:identifier>
+              <gml:name>Longitude of natural origin</gml:name>
+            </gml:OperationParameter>
+          </gml:parameter>
+          <gml:parameter>
+            <gml:OperationParameter gml:id="epsg-param-8805">
+              <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8805</gml:identifier>
+              <gml:name>Scale factor at natural origin</gml:name>
+            </gml:OperationParameter>
+          </gml:parameter>
+          <gml:parameter>
+            <gml:OperationParameter gml:id="epsg-param-8806">
+              <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8806</gml:identifier>
+              <gml:name>False easting</gml:name>
+            </gml:OperationParameter>
+          </gml:parameter>
+          <gml:parameter>
+            <gml:OperationParameter gml:id="epsg-param-8807">
+              <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8807</gml:identifier>
+              <gml:name>False northing</gml:name>
+            </gml:OperationParameter>
+          </gml:parameter>
+        </gml:OperationMethod>
+      </gml:method>
+
+      <!--
+        All parameters below this point are duplication of the parameters already defined above.
+        For now we do not yet use the XML references, but this is something that we will need to
+        support in a future SIS version. See https://issues.apache.org/jira/browse/SIS-173 issue.
+        In the meantime, we have to change the gml:id attribute values used below for avoiding
+        collisions with the gml:id attribute used in above parameters.
+      -->
+
       <gml:parameterValue>
         <gml:ParameterValue>
           <gml:value uom="urn:ogc:def:uom:EPSG::9105">52</gml:value>
-          <gml:operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8801"/>
+          <gml:operationParameter>
+            <gml:OperationParameter gml:id="t-8801">
+              <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8801</gml:identifier>
+              <gml:name>Latitude of natural origin</gml:name>
+            </gml:OperationParameter>
+          </gml:operationParameter>
         </gml:ParameterValue>
       </gml:parameterValue>
       <gml:parameterValue>
         <gml:ParameterValue>
           <gml:value uom="urn:ogc:def:uom:EPSG::9105">0</gml:value>
-          <gml:operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8802"/>
+          <gml:operationParameter>
+            <gml:OperationParameter gml:id="t-8802">
+              <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8802</gml:identifier>
+              <gml:name>Longitude of natural origin</gml:name>
+            </gml:OperationParameter>
+          </gml:operationParameter>
         </gml:ParameterValue>
       </gml:parameterValue>
       <gml:parameterValue>
         <gml:ParameterValue>
           <gml:value uom="urn:ogc:def:uom:EPSG::9201">0.99987742</gml:value>
-          <gml:operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8805"/>
+          <gml:operationParameter>
+            <gml:OperationParameter gml:id="t-8805">
+              <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8805</gml:identifier>
+              <gml:name>Scale factor at natural origin</gml:name>
+            </gml:OperationParameter>
+          </gml:operationParameter>
         </gml:ParameterValue>
       </gml:parameterValue>
       <gml:parameterValue>
         <gml:ParameterValue>
           <gml:value uom="urn:ogc:def:uom:EPSG::9001">600000</gml:value>
-          <gml:operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8806"/>
+          <gml:operationParameter>
+            <gml:OperationParameter gml:id="t-8806">
+              <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8806</gml:identifier>
+              <gml:name>False easting</gml:name>
+            </gml:OperationParameter>
+          </gml:operationParameter>
         </gml:ParameterValue>
       </gml:parameterValue>
       <gml:parameterValue>
         <gml:ParameterValue>
           <gml:value uom="urn:ogc:def:uom:EPSG::9001">2200000</gml:value>
-          <gml:operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8807"/>
+          <gml:operationParameter>
+            <gml:OperationParameter gml:id="t-8807">
+              <gml:identifier codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8807</gml:identifier>
+              <gml:name>False northing</gml:name>
+            </gml:OperationParameter>
+          </gml:operationParameter>
         </gml:ParameterValue>
       </gml:parameterValue>
     </gml:Conversion>
@@ -66,7 +139,7 @@
   <gml:baseGeodeticCRS>
     <gml:GeodeticCRS gml:id="epsg-crs-4807">
       <gml:identifier codeSpace="IOGP">urn:ogc:def:crs:EPSG::4807</gml:identifier>
-      <gml:name>NTF (Paris)</gml:name>
+      <gml:name codeSpace="EPSG">NTF (Paris)</gml:name>
       <gml:scope>Geodetic survey.</gml:scope>
       <gml:ellipsoidalCS>
         <gml:EllipsoidalCS gml:id="epsg-cs-6422">

Modified: sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/datum/GeodeticDatum.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/datum/GeodeticDatum.xml?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/datum/GeodeticDatum.xml (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/datum/GeodeticDatum.xml Sun Sep  6 19:10:30 2015
@@ -17,6 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
+
 <gml:GeodeticDatum xsi:schemaLocation = "http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/datums.xsd"
                    xmlns:gml          = "http://www.opengis.net/gml/3.2"
                    xmlns:gmd          = "http://www.isotc211.org/2005/gmd"

Modified: sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/datum/TemporalDatum.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/datum/TemporalDatum.xml?rev=1701516&r1=1701515&r2=1701516&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/datum/TemporalDatum.xml (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/resources/org/apache/sis/referencing/datum/TemporalDatum.xml Sun Sep  6 19:10:30 2015
@@ -17,6 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
+
 <gml:TemporalDatum xsi:schemaLocation = "http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/datums.xsd"
                    xmlns:gml          = "http://www.opengis.net/gml/3.2"
                    xmlns:xsi          = "http://www.w3.org/2001/XMLSchema-instance"



Mime
View raw message