Author: desruisseaux
Date: Wed Mar 4 12:42:13 2015
New Revision: 1663971
URL: http://svn.apache.org/r1663971
Log:
Javadoc updates and changed some method declaration order for keeping related
methods closer.
No significant code change in this commit.
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/parameter/Parameters.java
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.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=1663971&r1=1663970&r2=1663971&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] Wed Mar 4 12:42:13 2015
@@ -426,6 +426,7 @@ public class ImmutableIdentifier extends
/**
* Name or identifier of the person or organization responsible for
namespace.
+ * This is often the {@linkplain #getAuthority() authority}'s
abbreviation, but not necessarily.
*
* <div class="note"><b>Example:</b> {@code "EPSG"}.</div>
*
@@ -440,8 +441,9 @@ public class ImmutableIdentifier extends
}
/**
- * Organization or party responsible for definition and maintenance of the
- * {@linkplain #getCode() code}.
+ * Organization or party responsible for definition and maintenance of the
{@linkplain #getCode() code}.
+ * The organization's abbreviation is often the same than this identifier
{@linkplain #getCodeSpace()
+ * code space}, but not necessarily.
*
* <div class="note"><b>Example:</b> Coordinate Reference System (CRS)
identified by an EPSG code will return
* {@link Citations#OGP}, since OGP is the organization maintaining the
EPSG geodetic database.</div>
@@ -454,10 +456,9 @@ 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, the edition is identified by the
effective date,
- * coded using ISO 8601 date format.
+ * 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,
+ * 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=1663971&r1=1663970&r2=1663971&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] Wed Mar 4 12:42:13 2015
@@ -35,19 +35,25 @@ import static org.apache.sis.util.Argume
* {@link ParameterDescriptor#createValue()} on the descriptor provided by the
implementor.
*
* {@section Identification properties}
- * Each parameter must have a name, which can be specified by any of the
{@code addName(…)} methods.
- * Parameters can optionally have an arbitrary amount of aliases, which are
also specified by the
- * {@code addName(…)} methods — each call after the first one adds an alias.
- *
- * <p>Parameters can also have an arbitrary amount of identifiers, which are
specified by the
- * {@code addIdentifier(…)} methods. Like names, more than one identifier can
be added by invoking
- * the method many time.</p>
+ * The following properties are cleared after a call to any {@code
createXXX(…)} method,
+ * 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.
*
- * <p>Parameters can have at most one remark, which is specified by the {@code
setRemarks(…)} method.</p>
+ * <table class="compact" style="margin-left: 18 px" summary="Parameter
properties.">
+ * <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
+ * by the {@code addName(…)} methods. Each call after the first one adds an
alias.</td></tr>
+ *
+ * <tr><td><b>{@linkplain DefaultParameterDescriptor#getIdentifiers()
Identifiers}:</b></td>
+ * <td>Parameters can also have an arbitrary amount of identifiers, which
are specified by any of the
+ * {@link #addIdentifier(String) addIdentifier(…)} methods. Like names, more
than one identifier can be
+ * added by invoking the method many time.</td></tr>
+ *
+ * <tr><td><b>{@linkplain DefaultParameterDescriptor#getRemarks()
Remarks}:</b></td>
+ * <td>Parameters can have at most one remark, which is specified by the
{@code setRemarks(…)} method.</td></tr>
+ * </table>
*
- * <p>All the above-cited properties are cleared after a call to any {@code
createXXX(…)} method,
- * 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.</p>
*
* {@section Usage example}
* Parameter descriptors are typically grouped in a {@link
ParameterDescriptorGroup}.
@@ -59,7 +65,9 @@ import static org.apache.sis.util.Argume
*
* {@preformat java
* ParameterBuilder builder = new ParameterBuilder();
- * builder.setCodeSpace(Citations.OGP, "EPSG").setRequired(true);
+ * builder.setCodeSpace(Citations.OGP, "EPSG")
+ * .setRequired(true);
+ *
* 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),
Modified:
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java?rev=1663971&r1=1663970&r2=1663971&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java
[UTF-8] Wed Mar 4 12:42:13 2015
@@ -51,40 +51,59 @@ import static org.apache.sis.referencing
* <li>{@link #copy(ParameterValueGroup, ParameterValueGroup)} for copying
values into an existing instance.</li>
* </ul>
*
- * {@section Finding a parameter despite different names}
+ *
+ * {@section Fetching parameter values despite different names, types or units}
+ * The common way to get a parameter is to invoke the {@link
#parameter(String)} method.
+ * This {@code Parameters} class provides an alternative way, using a {@link
ParameterDescriptor} argument
+ * instead than a {@code String}. The methods in this class use the additional
information provided by the
+ * descriptor for choosing a {@code String} argument that the above-cited
{@code parameter(String)} method
+ * is more likely to know (by giving preference to a {@linkplain
DefaultParameterDescriptor#getName() name}
+ * or {@linkplain DefaultParameterDescriptor#getAlias() alias} defined by a
common
+ * {@linkplain org.apache.sis.metadata.iso.ImmutableIdentifier#getAuthority()
authority}),
+ * and for applying type and unit conversions.
+ *
+ * <div class="note"><b>Example:</b>
* The same parameter may be known under different names. For example the
- * {@linkplain
org.apache.sis.referencing.datum.DefaultEllipsoid#getSemiMajorAxis() length of
the semi-major axis of the
- * ellipsoid} is commonly known as {@code "semi_major"}. But that parameter
can also be named {@code "semi_major_axis"}
- * or {@code "earth_radius"} in NetCDF files, or simply {@code "a"} in the
Proj.4 library.
+ * {@linkplain
org.apache.sis.referencing.datum.DefaultEllipsoid#getSemiMajorAxis()
+ * length of the semi-major axis of the ellipsoid} is commonly known as {@code
"semi_major"}.
+ * But that parameter can also be named {@code "semi_major_axis"}, {@code
"earth_radius"} or simply {@code "a"}
+ * in other libraries. When fetching parameter values, we do not always know
in advance which of the above-cited
+ * names is recognized by an arbitrary {@code ParameterValueGroup}
implementation.
+ *
+ * <p>This uncertainty is mitigated with the Apache SIS implementation since
+ * {@link DefaultParameterValueGroup#parameter(String)} compares the given
{@code String} argument
+ * against all parameter's {@linkplain DefaultParameterDescriptor#getAlias()
aliases} in addition
+ * to the {@linkplain DefaultParameterDescriptor#getName() name}.
+ * However we do not have the guarantee that all implementations do
that.</p></div>
*
- * <p>The common way to get a parameter is to invoke the {@link
#parameter(String)} method.
- * But we do not always know in advance which of the above-cited names is
recognized by an arbitrary
- * {@code ParameterValueGroup} implementation.</p>
+ * The method names in this class follow the names of methods provided by the
{@link ParameterValue} interface.
+ * Those methods are themselves inspired by JDK methods:
*
- * <div class="note"><b>Note:</b>
- * This uncertainty is mitigated with the Apache SIS implementation since it
compares the given {@code String}
- * argument against all parameter's {@linkplain
DefaultParameterDescriptor#getAlias() aliases} in addition to
- * the {@linkplain DefaultParameterDescriptor#getName() name}. However we do
not have the guarantee that all
- * implementations do that.</div>
+ * <table class="sis">
+ * <caption>Methods fetching parameter value</caption>
+ * <tr><th>{@code Parameters} method</th> <th>{@code
ParameterValue} method</th> <th>JDK
methods</th></tr>
+ * <tr><td>{@link #getValue(ParameterDescriptor)}</td> <td>{@link
DefaultParameterValue#getValue() getValue()}</td> <td></td></tr>
+ * <tr><td>{@link #booleanValue(ParameterDescriptor)}</td> <td>{@link
DefaultParameterValue#booleanValue() booleanValue()}</td> <td>{@link
Boolean#booleanValue()}</td></tr>
+ * <tr><td>{@link #intValue(ParameterDescriptor)}</td> <td>{@link
DefaultParameterValue#intValue() intValue()}</td> <td>{@link
Number#intValue()}</td></tr>
+ * <tr><td>{@link #intValueList(ParameterDescriptor)}</td> <td>{@link
DefaultParameterValue#intValueList() intValueList()}</td> <td></td></tr>
+ * <tr><td>{@link #doubleValue(ParameterDescriptor)}</td> <td>{@link
DefaultParameterValue#doubleValue() doubleValue()}</td> <td>{@link
Number#doubleValue()}</td></tr>
+ * <tr><td>{@link #doubleValueList(ParameterDescriptor)}</td> <td>{@link
DefaultParameterValue#doubleValueList() doubleValueList()}</td> <td></td></tr>
+ * <tr><td>{@link #stringValue(ParameterDescriptor)}</td> <td>{@link
DefaultParameterValue#stringValue() stringValue()}</td> <td></td></tr>
+ * </table>
*
- * This {@code Parameters} class provides an alternative way to search for
parameters,
- * which use a given {@link ParameterDescriptor} argument instead than a
{@code String}.
- * {@code Parameters} uses the additional information provided by the
descriptor for
- * choosing a {@code String} argument that {@link #parameter(String)} is more
likely to know.
- * See for example {@link #getValue(ParameterDescriptor)}.
*
* {@section Note for subclass implementors}
* All methods in this class get their information from the {@link
ParameterValueGroup} methods.
- * In addition, each method in this class is isolated from all others:
overriding one of those
- * methods have no impact on other methods.
+ * In addition, each method in this class is isolated from all others:
overriding one method has
+ * no impact on other methods.
*
* <div class="note"><b>Note on this class name:</b>
* Despite implementing the {@link ParameterValueGroup} interface, this class
is not named
* {@code AbstractParameterValueGroup} because it does not implement any
method from the interface.
* Extending this class or extending {@link Object} make almost no difference
for implementors.
- * This {@code Parameters} class intend is rather to extend the API with
methods that are convenient
- * for the way Apache SIS uses parameters.
- * Consequently this class is intended for users rather than
implementors.</div>
+ * The intend of this {@code Parameters} class is rather to extend the API
with methods
+ * that are convenient for the way Apache SIS uses parameters.
+ * In other words, this class is intended for users rather than
implementors.</div>
*
* @author Martin Desruisseaux (Geomatys)
* @since 0.4
@@ -103,6 +122,9 @@ public abstract class Parameters impleme
* If the given parameters is already an instance of {@code Parameters},
then it is returned as-is.
* Otherwise this method returns a wrapper which delegate all method
invocations to the given instance.
*
+ * <p>This method provides a way to get access to the non-static {@code
Parameters} methods, like
+ * {@link #getValue(ParameterDescriptor)}, for an arbitrary {@code
ParameterValueGroup} instance.</p>
+ *
* @param parameters The object to cast or wrap, or {@code null}.
* @return The given argument as an instance of {@code Parameters} (may be
the same reference),
* or {@code null} if the given argument was null.
@@ -130,6 +152,66 @@ public abstract class Parameters impleme
}
/**
+ * Casts the given parameter descriptor to the given type.
+ * An exception is thrown immediately if the parameter does not have the
expected
+ * {@linkplain DefaultParameterDescriptor#getValueClass() value class}.
+ *
+ * @param <T> The expected value class.
+ * @param descriptor The descriptor to cast, or {@code null}.
+ * @param valueClass The expected value class.
+ * @return The descriptor casted to the given value class, or {@code null}
if the given descriptor was null.
+ * @throws ClassCastException if the given descriptor does not have the
expected value class.
+ *
+ * @see Class#cast(Object)
+ *
+ * @category verification
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> ParameterDescriptor<T> cast(final ParameterDescriptor<?>
descriptor, final Class<T> valueClass)
+ throws ClassCastException
+ {
+ if (descriptor != null) {
+ final Class<?> actual = descriptor.getValueClass();
+ // We require a strict equality - not
type.isAssignableFrom(actual) - because in
+ // the later case we could have (to be strict) to return a <?
extends T> type.
+ if (!valueClass.equals(actual)) {
+ throw new
ClassCastException(Errors.format(Errors.Keys.IllegalParameterType_2,
+ descriptor.getName().getCode(), actual));
+ }
+ }
+ return (ParameterDescriptor<T>) descriptor;
+ }
+
+ /**
+ * Casts the given parameter value to the given type.
+ * An exception is thrown immediately if the parameter does not have the
expected value class.
+ *
+ * @param <T> The expected value class.
+ * @param value The value to cast, or {@code null}.
+ * @param type The expected value class.
+ * @return The value casted to the given type, or {@code null} if the
given value was null.
+ * @throws ClassCastException if the given value doesn't have the expected
value class.
+ *
+ * @see Class#cast(Object)
+ *
+ * @category verification
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> ParameterValue<T> cast(final ParameterValue<?> value,
final Class<T> type)
+ throws ClassCastException
+ {
+ if (value != null) {
+ final ParameterDescriptor<?> descriptor = value.getDescriptor();
+ final Class<?> actual = descriptor.getValueClass();
+ if (!type.equals(actual)) { // Same comment than
cast(ParameterDescriptor)...
+ throw new
ClassCastException(Errors.format(Errors.Keys.IllegalParameterType_2,
+ descriptor.getName().getCode(), actual));
+ }
+ }
+ return (ParameterValue<T>) value;
+ }
+
+ /**
* Gets the parameter name as an instance of {@code MemberName}.
* This method performs the following checks:
*
@@ -160,9 +242,15 @@ public abstract class Parameters impleme
/**
* Returns the domain of valid values defined by the given descriptor, or
{@code null} if none.
- * This method builds the range from the {@linkplain
DefaultParameterDescriptor#getMinimumValue() minimum value},
- * {@linkplain DefaultParameterDescriptor#getMaximumValue() maximum value}
and, if the values are numeric, from
- * the {@linkplain DefaultParameterDescriptor#getUnit() unit}.
+ * This method performs the following operations:
+ *
+ * <ul>
+ * <li>If the given parameter is an instance of {@code
DefaultParameterDescriptor},
+ * delegate to {@link
DefaultParameterDescriptor#getValueDomain()}.</li>
+ * <li>Otherwise builds the range from the {@linkplain
DefaultParameterDescriptor#getMinimumValue() minimum value},
+ * {@linkplain DefaultParameterDescriptor#getMaximumValue() maximum
value} and, if the values are numeric, from
+ * the {@linkplain DefaultParameterDescriptor#getUnit() unit}.</li>
+ * </ul>
*
* @param descriptor The parameter descriptor, or {@code null}.
* @return The domain of valid values, or {@code null} if none.
@@ -281,11 +369,17 @@ public abstract class Parameters impleme
* <ul>
* <li>The most appropriate {@linkplain
DefaultParameterDescriptor#getName() name} or
* {@linkplain DefaultParameterDescriptor#getAlias() alias} to use
for searching
- * in this {@code ParameterValueGroup};</li>
+ * in this {@code ParameterValueGroup}, chosen as below:
+ * <ul>
+ * <li>a name or alias defined by the same
+ * {@linkplain
org.apache.sis.metadata.iso.ImmutableIdentifier#getAuthority() authority}, if
any;</li>
+ * <li>an arbitrary name or alias otherwise.</li>
+ * </ul>
+ * </li>
* <li>The {@linkplain DefaultParameterDescriptor#getDefaultValue()
default value}
- * to return if there is no value associated to the above-cited name
or alias;</li>
+ * to return if there is no value associated to the above-cited name
or alias.</li>
* <li>The {@linkplain DefaultParameterDescriptor#getUnit() unit of
measurement}
- * (if any) of numerical value to return;</li>
+ * (if any) of numerical value to return.</li>
* <li>The {@linkplain DefaultParameterDescriptor#getValueClass() type}
of value to return.</li>
* </ul>
*
@@ -480,6 +574,16 @@ public abstract class Parameters impleme
* Returns the parameter identified by the given descriptor.
* If the identified parameter is optional and not yet created, then it
will be created now.
*
+ * <p>The default implementation is equivalent to:</p>
+ *
+ * {@preformat java
+ * return cast(parameter(name), parameter.getValueClass());
+ * }
+ *
+ * where {@code name} is a {@code parameter} {@linkplain
DefaultParameterDescriptor#getName() name}
+ * or {@linkplain DefaultParameterDescriptor#getAlias() alias} chosen by
the same algorithm than
+ * {@link #getValue(ParameterDescriptor)}.
+ *
* @param <T> The type of the parameter value.
* @param parameter The parameter to look for.
* @return The requested parameter instance.
@@ -494,59 +598,20 @@ public abstract class Parameters impleme
}
/**
- * Casts the given parameter descriptor to the given type.
- * An exception is thrown immediately if the parameter does not have the
expected
- * {@linkplain DefaultParameterDescriptor#getValueClass() value class}.
- *
- * @param <T> The expected value class.
- * @param descriptor The descriptor to cast, or {@code null}.
- * @param valueClass The expected value class.
- * @return The descriptor casted to the given value class, or {@code null}
if the given descriptor was null.
- * @throws ClassCastException if the given descriptor does not have the
expected value class.
- *
- * @category verification
- */
- @SuppressWarnings("unchecked")
- public static <T> ParameterDescriptor<T> cast(final ParameterDescriptor<?>
descriptor, final Class<T> valueClass)
- throws ClassCastException
- {
- if (descriptor != null) {
- final Class<?> actual = descriptor.getValueClass();
- // We require a strict equality - not
type.isAssignableFrom(actual) - because in
- // the later case we could have (to be strict) to return a <?
extends T> type.
- if (!valueClass.equals(actual)) {
- throw new
ClassCastException(Errors.format(Errors.Keys.IllegalParameterType_2,
- descriptor.getName().getCode(), actual));
- }
- }
- return (ParameterDescriptor<T>) descriptor;
- }
-
- /**
- * Casts the given parameter value to the given type.
- * An exception is thrown immediately if the parameter does not have the
expected value class.
+ * Returns a deep copy of this group of parameter values.
+ * Included parameter values and subgroups are cloned recursively.
*
- * @param <T> The expected value class.
- * @param value The value to cast, or {@code null}.
- * @param type The expected value class.
- * @return The value casted to the given type, or {@code null} if the
given value was null.
- * @throws ClassCastException if the given value doesn't have the expected
value class.
+ * @return A copy of this group of parameter values.
*
- * @category verification
+ * @see #copy(ParameterValueGroup, ParameterValueGroup)
*/
- @SuppressWarnings("unchecked")
- public static <T> ParameterValue<T> cast(final ParameterValue<?> value,
final Class<T> type)
- throws ClassCastException
- {
- if (value != null) {
- final ParameterDescriptor<?> descriptor = value.getDescriptor();
- final Class<?> actual = descriptor.getValueClass();
- if (!type.equals(actual)) { // Same comment than
cast(ParameterDescriptor)...
- throw new
ClassCastException(Errors.format(Errors.Keys.IllegalParameterType_2,
- descriptor.getName().getCode(), actual));
- }
+ @Override
+ public Parameters clone() {
+ try {
+ return (Parameters) super.clone();
+ } catch (CloneNotSupportedException e) {
+ throw new AssertionError(e); // Should never happen since we are
Cloneable
}
- return (ParameterValue<T>) value;
}
/**
@@ -658,21 +723,4 @@ public abstract class Parameters impleme
throw new IndexOutOfBoundsException(name);
}
}
-
- /**
- * Returns a deep copy of this group of parameter values.
- * Included parameter values and subgroups are cloned recursively.
- *
- * @return A copy of this group of parameter values.
- *
- * @see #copy(ParameterValueGroup, ParameterValueGroup)
- */
- @Override
- public Parameters clone() {
- try {
- return (Parameters) super.clone();
- } catch (CloneNotSupportedException e) {
- throw new AssertionError(e); // Should never happen since we are
Cloneable
- }
- }
}
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=1663971&r1=1663970&r2=1663971&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] Wed Mar 4 12:42:13 2015
@@ -43,29 +43,29 @@ import java.util.Objects;
* Base class of builders for various kind of {@link IdentifiedObject}. {@code
Builder}s aim to make object creation
* easier — they do not add any new functionality compared to {@link
org.opengis.referencing.ObjectFactory}.
* Builder methods like {@link #addName(CharSequence)} and {@link
#addIdentifier(String)} provide convenient ways
- * to fill the {@link #properties} map, which will be given to the {@code
ObjectFactory} methods at
- * {@code IdentifiedObject} creation time. Creations happen when any {@code
createXXX(…)} method defined in
- * the builder subclasses is invoked.
+ * 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>
- * <blockquote><table class="compact" summary="Builder properties.">
- * <tr><td>{@link AbstractIdentifiedObject#getName() Name}:</td>
- * <td>Each {@code IdentifiedObject} shall have a name, which can be
specified by a call to any of the
- * {@code addName(…)} methods defined in this class.</td></tr>
- *
- * <tr><td>{@link AbstractIdentifiedObject#getAlias() Aliases}:</td>
- * <td>Identified objects can optionally have an arbitrary amount of
aliases, which are also specified
- * by the {@code addName(…)} methods — each call after the first one adds
an alias.</td></tr>
- *
- * <tr><td>{@link AbstractIdentifiedObject#getIdentifiers() Identifiers}:</td>
- * <td>Identified objects can also have an arbitrary amount of
identifiers, which are specified by the
- * {@code addIdentifier(…)} methods. Like names, more than one identifier
can be added by invoking
- * the method many time.</td></tr>
- *
- * <tr><td>{@link AbstractIdentifiedObject#getRemarks() Remarks}:</td>
- * <td>Identified objects can have at most one remark, which is specified
by the {@code setRemarks(…)}
- * method.</td></tr>
- * </table></blockquote>
+ *
+ * <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>
+ *
+ * <tr><td><b>{@linkplain AbstractIdentifiedObject#getAlias()
Aliases}:</b></td>
+ * <td>Identified objects can optionally have an arbitrary amount of
aliases, which are also specified
+ * by the {@code addName(…)} methods. Each call after the first one adds an
alias.</td></tr>
+ *
+ * <tr><td><b>{@linkplain AbstractIdentifiedObject#getIdentifiers()
Identifiers}:</b></td>
+ * <td>Identified objects can also have an arbitrary amount of identifiers,
which are specified by any
+ * of the {@link #addIdentifier(String) addIdentifier(…)} methods. Like
names, more than one identifier
+ * can be added by invoking the method many time.</td></tr>
+ *
+ * <tr><td><b>{@linkplain AbstractIdentifiedObject#getRemarks()
Remarks}:</b></td>
+ * <td>Identified objects can have at most one remark, which is specified by
the {@code setRemarks(…)}
+ * 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)
@@ -106,17 +106,17 @@ import java.util.Objects;
* 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>
- * <blockquote><table class="compact" summary="IdentifiedObject properties.">
- * <tr><td>{@link AbstractIdentifiedObject#getName() Name}:</td>
+ * <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>{@link AbstractIdentifiedObject#getAlias() Aliases}:</td>
+ * <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>{@link AbstractIdentifiedObject#getIdentifiers() Identifiers}:</td>
+ * <tr><td>{@linkplain AbstractIdentifiedObject#getIdentifiers()
Identifiers}:</td>
* <td>{@code "EPSG:9804"} and {@code "GeoTIFF:7"}.</td></tr>
- * <tr><td>{@link AbstractIdentifiedObject#getRemarks() Remarks}:</td>
+ * <tr><td>{@linkplain AbstractIdentifiedObject#getRemarks() Remarks}:</td>
* <td>{@code "The “Mercator (1SP)” method name was used prior to October
2010."}</td></tr>
- * </table></blockquote>
+ * </table>
*
* See {@link org.apache.sis.parameter.ParameterBuilder} class javadoc for
more examples with the
* <cite>Mercator</cite> projection parameters.