Author: desruisseaux
Date: Thu Mar  5 20:36:19 2015
New Revision: 1664477

URL: http://svn.apache.org/r1664477
Log:
Javadoc refactoring in an attempt to clarify the usage of ParameterBuilder.

Modified:
    
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
    
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
    
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java
    
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java

Modified: 
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java?rev=1664477&r1=1664476&r2=1664477&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
 [UTF-8] Thu Mar  5 20:36:19 2015
@@ -457,7 +457,7 @@ public class ImmutableIdentifier extends
 
     /**
      * Identifier of the version of the associated code space or code, as 
specified by the code authority.
-     * This version is included only when the {@linkplain #getCode() code}uses 
versions. When appropriate,
+     * This version is included only when the {@linkplain #getCode() code} 
uses versions. When appropriate,
      * the edition is identified by the effective date, coded using ISO 8601 
date format.
      *
      * <div class="note"><b>Example:</b> the version of the underlying EPSG 
database.</div>

Modified: 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java?rev=1664477&r1=1664476&r2=1664477&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
 [UTF-8] Thu Mar  5 20:36:19 2015
@@ -20,6 +20,9 @@ import javax.measure.unit.Unit;
 import org.opengis.parameter.ParameterDescriptor;
 import org.opengis.parameter.ParameterDescriptorGroup;
 import org.opengis.parameter.GeneralParameterDescriptor;
+import org.opengis.parameter.ParameterValueGroup;
+import org.opengis.referencing.cs.CoordinateSystem;             // For javadoc
+import org.opengis.referencing.crs.CoordinateReferenceSystem;   // For javadoc
 import org.apache.sis.measure.MeasurementRange;
 import org.apache.sis.measure.NumberRange;
 import org.apache.sis.measure.Range;
@@ -39,7 +42,13 @@ import static org.apache.sis.util.Argume
  * since those properties are specific to the each parameter. Other properties 
like codespace,
  * version and cardinality are left unchanged because they may be shared by 
many parameters.
  *
- * <table class="compact" style="margin-left: 18 px" summary="Parameter 
properties.">
+ * <table class="sis">
+ *   <caption>{@code IdentifiedObject} properties</caption>
+ *   <tr>
+ *     <th>Property</th>
+ *     <th>Description</th>
+ *   </tr>
+ *
  *   <tr><td><b>{@linkplain DefaultParameterDescriptor#getName() 
Names}:</b></td>
  *   <td>Each parameter must have a name, which can be specified by any of the 
{@link #addName(CharSequence)
  *   addName(…)} methods. Parameters can optionally have an arbitrary amount 
of aliases, which are also specified
@@ -58,35 +67,57 @@ import static org.apache.sis.util.Argume
  * {@section Usage example}
  * Parameter descriptors are typically grouped in a {@link 
ParameterDescriptorGroup}.
  * All parameters usually have the same namespace, which can be declared only 
once.
- * The following example creates parameters for "<cite>Mercator (variant 
A)</cite>" projection method (EPSG:9804)
- * with all parameter names in the "EPSG" namespace. The default values define 
a projection centered on (0°,0°),
- * with no scale factor and no false easting/northing. The projection is valid 
from 80°S to 84°N and on all the
- * longitude range (±180°).
+ * The following example creates parameters for "<cite>Mercator (variant 
A)</cite>"
+ * projection method (EPSG:9804) with the following characteristics:
+ *
+ * <ul>
+ *   <li>A single name or identifier in the "EPSG" namespace, except:
+ *     <ul>
+ *       <li><cite>Longitude of natural origin</cite> parameter, which 
illustrates the case of parameters having
+ *           more than one name because different softwares or standards use 
different conventions.</li>
+ *       <li><cite>"Mercator (variant A)"</cite> projection, which is commonly 
known under different names.</li>
+ *     </ul>
+ *   </li>
+ *   <li>Default values define a projection centered on (0°,0°), with no scale 
factor and no false easting/northing.</li>
+ *   <li>Projection is valid from 80°S to 84°N and on all the longitude range 
(±180°).</li>
+ * </ul>
  *
  * {@preformat java
  *   ParameterBuilder builder = new ParameterBuilder();
- *   builder.setCodeSpace(Citations.OGP, "EPSG")
- *          .setRequired(true);
+ *   builder.setCodeSpace(Citations.OGP, "EPSG")                    // The 
default namespace to be used below.
+ *          .setRequired(true);                                     // All 
parameters will be considered mandatory.
  *
+ *   // Constructs the list of parameters.
  *   ParameterDescriptor<?>[] parameters = {
- *       builder.addName("Latitude of natural origin")    .createBounded( -80, 
 +84, 0, NonSI.DEGREE_ANGLE),
- *       builder.addName("Longitude of natural origin")   .createBounded(-180, 
+180, 0, NonSI.DEGREE_ANGLE),
- *       builder.addName("Scale factor at natural 
origin").createStrictlyPositive(1, Unit.ONE),
- *       builder.addName("False easting")                 .create(0, SI.METRE),
- *       builder.addName("False northing")                .create(0, SI.METRE)
- *   };
- * }
+ *       builder.addName("Latitude of natural origin")              // Name in 
the default namespace ("EPSG" in this example).
+ *              .createBounded( -80,  +84, 0, NonSI.DEGREE_ANGLE),  // 
Latitude of Mercator projection can not go to the poles.
  *
- * Parameters often have more than one name, because different softwares or 
standards use different conventions.
- * In the above example, the line creating the <cite>Longitude of natural 
origin</cite> parameter could be replaced
- * by the following code in order to declare its aliases:
+ *       builder.addIdentifier("8802")                              // Primary 
key in default namespace ("EPSG" in this example).
+ *              .addName("Longitude of natural origin")             // Primary 
name in default namespace ("EPSG" in this example).
+ *              .addName(Citations.OGC, "central_meridian")         // First 
alias in "OGC" namespace.
+ *              .addName(Citations.GEOTIFF, "NatOriginLong")        // Second 
alias in "GeoTIFF" namespace.
+ *              .createBounded(-180, +180, 0, NonSI.DEGREE_ANGLE),  // 
Projection is valid on all the longitude range (±180°).
  *
- * {@preformat java
- *   builder.addIdentifier("8802")                         // Primary key in 
builder default namespace (EPSG in this example).
- *          .addName("Longitude of natural origin")        // Primary name in 
builder default namespace (EPSG in this example).
- *          .addName(Citations.OGC, "central_meridian")    // First alias in 
"OGC" namespace.
- *          .addName(Citations.GEOTIFF, "NatOriginLong")   // Second alias in 
"GeoTIFF" namespace.
- *          .createBounded(-80, +84, 0, NonSI.DEGREE_ANGLE);
+ *       builder.addName("Scale factor at natural origin")
+ *              .createStrictlyPositive(1, Unit.ONE),
+ *
+ *       builder.addName("False easting")
+ *              .create(0, SI.METRE),
+ *
+ *       builder.addName("False northing")
+ *              .create(0, SI.METRE)
+ *   };
+ *
+ *   // Put all above parameters in a group.
+ *   ParameterDescriptorGroup group = builder
+ *           .addIdentifier("9804")                                 // Defined 
in implicit "EPSG" namespace.
+ *           .addName      ("Mercator (variant A)")                 // Defined 
in implicit "EPSG" namespace.
+ *           .addName      ("Mercator (1SP)")                       // Defined 
in implicit "EPSG" namespace.
+ *           .addName      (Citations.OGC, "Mercator_1SP")          // "OGC" 
namespace explicitly shown by toString().
+ *           .addName      (Citations.GEOTIFF, "CT_Mercator")       // 
"GeoTIFF" namespace explicitly shown by toString().
+ *           .addIdentifier(Citations.GEOTIFF, "7")
+ *           .setRemarks   ("The “Mercator (1SP)” method name was used prior 
to October 2010.")
+ *           .createGroupForMapProjection(parameters);
  * }
  *
  * @author  Martin Desruisseaux (Geomatys)
@@ -333,10 +364,10 @@ public class ParameterBuilder extends Bu
      * Creates a descriptor group for a map projection. This method 
automatically adds mandatory parameters
      * for the <cite>semi-major</cite> and <cite>semi-minor axis 
length</cite>. Those parameters are usually
      * not explicitely included in parameter definitions since the axis 
lengths can be inferred from the
-     * {@linkplain org.apache.sis.referencing.datum.DefaultEllipsoid}.
+     * {@linkplain org.apache.sis.referencing.datum.DefaultEllipsoid 
ellipsoid}.
      * However {@link 
org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory} 
needs them.
      *
-     * <p>In addition, this method will also add hidden parameters for 
alternative ways to express some parameters.
+     * <p>In addition, this method adds hidden parameters for alternative ways 
to express some standard parameters.
      * Those hidden parameters never appear in the {@linkplain 
DefaultParameterDescriptorGroup#descriptors() list
      * of parameters}. However when one of those parameters is read or 
written, the work will be delegated to the
      * standard parameters.</p>
@@ -344,8 +375,8 @@ public class ParameterBuilder extends Bu
      * <table class="sis">
      *   <caption>Parameters automatically added by this method</caption>
      *   <tr><th>Name</th>                         <th>Visibility</th> 
<th>Comment</th></tr>
-     *   <tr><td>{@code "semi_major"}</td>         <td>Always</td>     
<td>Standard parameter in WKT 1.</td></tr>
-     *   <tr><td>{@code "semi_minor"}</td>         <td>Always</td>     
<td>Standard parameter in WKT 1.</td></tr>
+     *   <tr><td>{@code "semi_major"}</td>         <td>Always</td>     
<td>Standard parameter defined by WKT 1.</td></tr>
+     *   <tr><td>{@code "semi_minor"}</td>         <td>Always</td>     
<td>Standard parameter defined by WKT 1.</td></tr>
      *   <tr><td>{@code "earth_radius"}</td>       <td>Hidden</td>     
<td>Mapped to {@code "semi_major"} and {@code "semi_minor"} 
parameters.</td></tr>
      *   <tr><td>{@code "inverse_flattening"}</td> <td>Hidden</td>     
<td>Mapped to {@code "semi_major"} and {@code "semi_minor"} 
parameters.</td></tr>
      *   <tr><td>{@code "standard_parallel"}</td>  <td>Hidden</td>
@@ -360,6 +391,8 @@ public class ParameterBuilder extends Bu
      *         for the group to create.
      * @return The parameter descriptor group for a map projection.
      *
+     * @see 
org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory#createBaseToDerived(CoordinateReferenceSystem,
 ParameterValueGroup, CoordinateSystem)
+     *
      * @since 0.6
      */
     public ParameterDescriptorGroup createGroupForMapProjection(final 
ParameterDescriptor<?>... parameters) {

Modified: 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java?rev=1664477&r1=1664476&r2=1664477&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java
 [UTF-8] Thu Mar  5 20:36:19 2015
@@ -46,9 +46,15 @@ import java.util.Objects;
  * to fill the {@link #properties} map, which will be given to the {@code 
ObjectFactory} methods when any
  * {@code createXXX(…)} method is invoked.
  *
- * <p>This base class provides method for defining the following {@link 
IdentifiedObject} properties:</p>
+ * <p>This base class provides methods for defining the {@link 
IdentifiedObject} properties shown below:</p>
+ *
+ * <table class="sis">
+ *   <caption>{@code IdentifiedObject} properties</caption>
+ *   <tr>
+ *     <th>Property</th>
+ *     <th>Description</th>
+ *   </tr>
  *
- * <table class="compact" style="margin-left: 18 px" summary="Builder 
properties.">
  *   <tr><td><b>{@linkplain AbstractIdentifiedObject#getName() Name}:</b></td>
  *   <td>Each {@code IdentifiedObject} shall have a name, which can be 
specified by a call to any of the
  *   {@link #addName(CharSequence) addName(…)} methods defined in this 
class.</td></tr>
@@ -67,57 +73,92 @@ import java.util.Objects;
  *   method.</td></tr>
  * </table>
  *
- * {@section Builder property lifetimes}
- * The same builder can be used for creating many objects, since constructing 
a Coordinate Reference System (CRS)
- * may require constructing many components (coordinate system, datum, 
ellipsoid, prime meridian, <i>etc.</i>),
- * some of them sharing common properties. In order to simplify the most 
common usages, identification
- * properties have two different lifetimes in the {@code Builder} class:
+ * The names and identifiers cited in the above table can be built from {@link 
CharSequence} given to the
+ * {@code addName(…)} or {@code addIdentifier(…)} methods combined with the 
following properties:
  *
+ * <table class="sis">
+ *   <caption>{@code Identifier} properties</caption>
+ *   <tr>
+ *     <th>Property</th>
+ *     <th>Description</th>
+ *   </tr>
+ *
+ *   <tr><td><b>{@linkplain ImmutableIdentifier#getCodeSpace() Code 
space}:</b></td>
+ *   <td>Each {@code Identifier} name or code can be local to a code space 
defined by an authority.
+ *   Both the authority and code space can be specified by the {@link 
#setCodeSpace(Citation, String)} method,
+ *   and usually (but not necessarily) apply to all {@code Identifier} 
instances.</td></tr>
+ *
+ *   <tr><td><b>{@linkplain ImmutableIdentifier#getVersion() Version}:</b></td>
+ *   <td>Identifiers can optionally have a version specified by the {@link 
#setVersion(String)} method.
+ *   The version usually (but not necessarily) applies to all {@code 
Identifier} instances.</td></tr>
+ *
+ *   <tr><td><b>{@linkplain ImmutableIdentifier#getDescription() 
Description}:</b></td>
+ *   <td>Identifiers can optionally have a description specified by the {@link 
#setDescription(CharSequence)} method.
+ *   The description applies only to the next identifier to create.</td></tr>
+ * </table>
+ *
+ * {@section Namespaces and scopes}
+ * The {@code addName(…)} and {@code addIdentifier(…)} methods come in three 
flavors:
  * <ul>
- *   <li>{@linkplain NamedIdentifier#getAuthority() Authority}, {@linkplain 
NamedIdentifier#getCodeSpace() code space}
- *       and {@linkplain NamedIdentifier#getVersion() version} information 
specified to this {@code Builder} will stay
- *       active until they are specified again, because those information are 
typically shared by all components.</li>
- *   <li>Other properties (name, aliases, identifiers and remarks) are cleared 
after each call to a {@code createXXX(…)}
- *       method, because they are usually specific to a particular {@code 
IdentifiedObject} instance.</li>
+ *   <li>The {@link #addIdentifier(String)} and {@link #addName(CharSequence)} 
methods combine the given argument
+ *       with the above-cited authority, code space, version and description 
information.
+ *       The result is a {@linkplain org.apache.sis.util.iso.DefaultLocalName 
local name} or identifier,
+ *       in which the code space information is stored but not shown by the 
{@code toString()} method.</li>
+ *
+ *   <li>The {@link #addIdentifier(Citation, String)} and {@link 
#addName(Citation, CharSequence)} methods use the given
+ *       {@link Citation} argument, ignoring any authority or code space 
information given to this {@code Builder}.
+ *       The result is a {@linkplain org.apache.sis.util.iso.DefaultScopedName 
scoped name} or identifier,
+ *       in which the code space information is shown by the {@code 
toString()} method.</li>
+ *
+ *   <li>The {@link #addIdentifier(Identifier)}, {@link #addName(Identifier)} 
and {@link #addName(GenericName)}
+ *       methods take the given object <cite>as-is</cite>. Any authority, code 
space, version or description
+ *       information given to the {@code Builder} are ignored.</li>
  * </ul>
  *
- * {@section Usage examples}
- * The "<cite>Mercator (variant A)</cite>" projection (EPSG:9804) is also 
known as "<cite>Mercator (1SP)</cite>".
- * OGC and GeoTIFF use slightly different names, and GeoTIFF has its own code 
(7).
- * Those information can be specified as below:
+ * <div class="note"><b>Example:</b>
+ * The EPSG database defines a projection named "<cite>Mercator (variant 
A)</cite>" (EPSG:9804).
+ * This projection was named "<cite>Mercator (1SP)</cite>" in older EPSG 
database versions.
+ * The same projection was also named "{@code Mercator_1SP}" by OGC some 
specifications.
+ * If we choose EPSG as our primary naming authority, then those three names 
can be declared as below:
  *
  * {@preformat java
- *   Builder builder = new Builder();
  *   builder.setCodespace (Citations.OGP, "EPSG")
- *          .addName      ("Mercator (variant A)")             // Defined in 
EPSG namespace.
- *          .addName      ("Mercator (1SP)")                   // Defined in 
EPSG namespace.
- *          .addIdentifier("9804")                             // Defined in 
EPSG namespace.
- *          .addName      (Citations.OGC,     "Mercator_1SP")
- *          .addName      (Citations.GEOTIFF, "CT_Mercator")
- *          .addIdentifier(Citations.GEOTIFF, "7")
- *          .setRemarks("The “Mercator (1SP)” method name was used prior to 
October 2010.");
- *   // At this point, the createXXX(…) method to invoke depends on the 
Builder subclass.
+ *          .addName("Mercator (variant A)")
+ *          .addName("Mercator (1SP)")
+ *          .addName(Citations.OGC, "Mercator_1SP")
  * }
  *
- * The two first names, which use the default namespace specified by the call 
to {@code setCodeSpace(…)},
- * will have the {@code "EPSG"} {@linkplain NamedIdentifier#scope() scope}. 
Since scopes are not shown
- * in {@linkplain NamedIdentifier#toString() string representation of names}, 
the string representation
- * of the two first names will omit the {@code "EPSG:"} prefix. However the 
string representation of the
- * two last names will be {@code "OGC:Mercator_1SP"} and {@code 
"GeoTIFF:CT_Mercator"} respectively.
- *
- * <p>The {@code IdentificationObject} created by this example will have the 
following properties:</p>
- * <table class="compact" style="margin-left: 18 px" summary="IdentifiedObject 
properties.">
- * <tr><td>{@linkplain AbstractIdentifiedObject#getName() Name}:</td>
- *     <td>{@code "Mercator (variant A)"} as a local name in {@code "EPSG"} 
scope.</td></tr>
- * <tr><td>{@linkplain AbstractIdentifiedObject#getAlias() Aliases}:</td>
- *     <td>{@code "Mercator (1SP)"} as a local name in {@code "EPSG"} scope,
- *         {@code "OGC:Mercator_1SP"} and {@code "GeoTIFF:CT_Mercator"} as 
scoped names.</td></tr>
- * <tr><td>{@linkplain AbstractIdentifiedObject#getIdentifiers() 
Identifiers}:</td>
- *     <td>{@code "EPSG:9804"} and {@code "GeoTIFF:7"}.</td></tr>
- * <tr><td>{@linkplain AbstractIdentifiedObject#getRemarks() Remarks}:</td>
- *     <td>{@code "The “Mercator (1SP)” method name was used prior to October 
2010."}</td></tr>
- * </table>
+ * The {@code toString()} representation of those three names are {@code 
"Mercator (variant A)"},
+ * {@code "Mercator (1SP)"} (note the absence of {@code "EPSG:"} prefix, which 
is stored as the
+ * name {@linkplain org.apache.sis.util.iso.DefaultLocalName#scope() scope} 
but not shown) and
+ * <code>"<b>OGC:</b>Mercator_1SP"</code> respectively.</div>
  *
+ *
+ * {@section Builder property lifetimes}
+ * Some complex objects require the creation of many components. For example 
constructing a
+ * {@linkplain org.apache.sis.referencing.crs.AbstractCRS Coordinate Reference 
System} (CRS) may require constructing a
+ * {@linkplain org.apache.sis.referencing.cs.AbstractCS coordinate system}, a
+ * {@linkplain org.apache.sis.referencing.datum.AbstractDatum datum} and an
+ * {@linkplain org.apache.sis.referencing.datum.DefaultEllipsoid ellipsoid} 
among other components.
+ * However all those components often (but not necessarily) share the same 
authority, code space and version information.
+ * In order to simplify that common usage, two groups of properties have 
different lifetimes in the {@code Builder} class:
+ *
+ * <ul>
+ *   <li>{@linkplain NamedIdentifier#getAuthority() Authority},
+ *       {@linkplain NamedIdentifier#getCodeSpace() code space} and
+ *       {@linkplain NamedIdentifier#getVersion()   version}:<br>
+ *       Kept until they are specified again, because those properties are 
typically shared by all components.</li>
+ *
+ *   <li>{@linkplain AbstractIdentifiedObject#getName()        Name},
+ *       {@linkplain AbstractIdentifiedObject#getAlias()       aliases},
+ *       {@linkplain AbstractIdentifiedObject#getIdentifiers() identifiers},
+ *       {@linkplain ImmutableIdentifier#getDescription()      description} and
+ *       {@linkplain AbstractIdentifiedObject#getRemarks()     remarks}:<br>
+ *       Cleared after each call to a {@code createXXX(…)} method, because 
those properties are usually specific
+ *       to a particular {@code IdentifiedObject} or {@code Identifier} 
instance.</li>
+ * </ul>
+ *
+ * {@section Usage examples}
  * See {@link org.apache.sis.parameter.ParameterBuilder} class javadoc for 
more examples with the
  * <cite>Mercator</cite> projection parameters.
  *
@@ -259,8 +300,15 @@ public abstract class Builder<B extends
     }
 
     /**
-     * Sets the {@code Identifier} authority and code space. This method is 
typically invoked only once,
-     * since a compound object often uses the same code space for all 
individual components.
+     * Sets the {@code Identifier} authority and code space.
+     * The code space is often the authority's abbreviation, but not 
necessarily.
+     *
+     * <div class="note"><b>Example:</b> Coordinate Reference System (CRS) 
objects identified by codes from the
+     * EPSG database are maintained by the {@linkplain 
org.apache.sis.metadata.iso.citation.Citations#OGP OGP}
+     * authority, but the code space is {@code "EPSG"} for historical 
reasons.</div>
+     *
+     * This method is typically invoked only once, since a compound object 
often uses the same code space
+     * for all individual components.
      *
      * <p><b>Condition:</b>
      * this method can not be invoked after one or more names or identifiers 
have been added (by calls to the
@@ -275,6 +323,9 @@ public abstract class Builder<B extends
      * @return {@code this}, for method call chaining.
      * @throws IllegalStateException if {@code addName(…)} or {@code 
addIdentifier(…)} has been invoked at least
      *         once since builder construction or since the last call to a 
{@code createXXX(…)} method.
+     *
+     * @see ImmutableIdentifier#getAuthority()
+     * @see ImmutableIdentifier#getCodeSpace()
      */
     public B setCodeSpace(final Citation authority, final String codespace) {
         if (!setProperty(Identifier.CODESPACE_KEY, codespace)) {
@@ -421,7 +472,7 @@ public abstract class Builder<B extends
     public B addName(final GenericName name) {
         ensureNonNull("name", name);
         if (properties.get(IdentifiedObject.NAME_KEY) == null) {
-            properties.put(IdentifiedObject.NAME_KEY, new 
NamedIdentifier(name));
+            properties.put(IdentifiedObject.NAME_KEY, (name instanceof 
Identifier) ? name : new NamedIdentifier(name));
         } else {
             aliases.add(name);
         }

Modified: 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java?rev=1664477&r1=1664476&r2=1664477&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
 [UTF-8] Thu Mar  5 20:36:19 2015
@@ -32,6 +32,7 @@ import javax.measure.converter.Conversio
 import org.opengis.metadata.Identifier;
 import org.opengis.parameter.ParameterValue;
 import org.opengis.parameter.ParameterValueGroup;
+import org.opengis.parameter.ParameterDescriptor;
 import org.opengis.parameter.ParameterDescriptorGroup;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.cs.CoordinateSystem;
@@ -505,6 +506,8 @@ public class DefaultMathTransformFactory
      * @throws NoSuchIdentifierException if there is no transform registered 
for the coordinate operation method.
      * @throws FactoryException if the object creation failed. This exception 
is thrown
      *         if some required parameter has not been supplied, or has 
illegal value.
+     *
+     * @see 
org.apache.sis.parameter.ParameterBuilder#createGroupForMapProjection(ParameterDescriptor...)
      */
     @Override
     public MathTransform createBaseToDerived(final CoordinateReferenceSystem 
baseCRS,


Reply via email to