You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2013/07/25 16:51:57 UTC
svn commit: r1506993 - in /sis/branches/JDK6: ./ application/sis-webapp/
core/sis-build-helper/src/main/ant/ core/sis-build-helper/src/site/apt/
core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/
core/sis-metadata/src/main/java/org/apach...
Author: desruisseaux
Date: Thu Jul 25 14:51:57 2013
New Revision: 1506993
URL: http://svn.apache.org/r1506993
Log:
Merge from the JDK7 branch.
Added:
sis/branches/JDK6/core/sis-build-helper/src/main/ant/
- copied from r1506959, sis/branches/JDK7/core/sis-build-helper/src/main/ant/
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ArrayConverter.java
- copied unchanged from r1506959, sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ArrayConverter.java
sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java
- copied, changed from r1506959, sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java
Removed:
sis/branches/JDK6/core/sis-metadata/src/site/fml/faq.fml
sis/branches/JDK6/src/site/apt/branches.apt
sis/branches/JDK6/src/site/apt/code-format.apt
sis/branches/JDK6/src/site/apt/develop.apt
sis/branches/JDK6/src/site/apt/download.apt
sis/branches/JDK6/src/site/fml/
Modified:
sis/branches/JDK6/ (props changed)
sis/branches/JDK6/KEYS
sis/branches/JDK6/application/sis-webapp/pom.xml
sis/branches/JDK6/core/sis-build-helper/src/site/apt/index.apt
sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/TimePeriodBound.java
sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
sis/branches/JDK6/core/sis-metadata/src/site/apt/index.apt
sis/branches/JDK6/core/sis-metadata/src/site/site.xml
sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ConverterRegistry.java
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapWithSpecialCases.java
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/SpecializedIdentifier.java
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/setup/About.java
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ConverterRegistryTest.java
sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java
sis/branches/JDK6/ide-project/NetBeans/nbproject/project.xml
sis/branches/JDK6/pom.xml
sis/branches/JDK6/src/site/apt/index.apt
sis/branches/JDK6/src/site/resources/css/site.css
sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java
sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java
Propchange: sis/branches/JDK6/
------------------------------------------------------------------------------
Merged /sis/branches/JDK7:r1502492-1506959
Modified: sis/branches/JDK6/KEYS
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/KEYS?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/KEYS (original)
+++ sis/branches/JDK6/KEYS Thu Jul 25 14:51:57 2013
@@ -47,4 +47,63 @@ dTgTbK62ZnSjsnRYbgf0HdA+kW9n9XBMEHwgYk0q
iEkEGBECAAkFAkdvL9QCGwwACgkQcPCcxrh2iEplXwCgraY3ELlDStqpJDSUzVsN
rGuNiwsAoKz92ycEjcMnoLnX8AaPADdo1m/P
=zEfO
------END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub 4096R/74383E9D 2013-07-24
+uid Martin Desruisseaux (Code signing key) <de...@apache.org>
+sig 3 74383E9D 2013-07-24 Martin Desruisseaux (Code signing key) <de...@apache.org>
+sub 4096R/E498164E 2013-07-24
+sig 74383E9D 2013-07-24 Martin Desruisseaux (Code signing key) <de...@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.13 (Darwin)
+
+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
+=rrNc
+-----END PGP PUBLIC KEY BLOCK-----
Modified: sis/branches/JDK6/application/sis-webapp/pom.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/application/sis-webapp/pom.xml?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/application/sis-webapp/pom.xml (original)
+++ sis/branches/JDK6/application/sis-webapp/pom.xml Thu Jul 25 14:51:57 2013
@@ -47,8 +47,8 @@
<artifactId>georss-rome</artifactId>
<version>0.9.8</version>
<!-- We have to specify the version here because georss-rome is intentionally excluded from
- the dependency management of the root pom.xml. The problem is that the artefact filename
- is "georss-rome", but the <artefactId> element in its pom.xml declares "georss" without
+ the dependency management of the root pom.xml. The problem is that the artifact filename
+ is "georss-rome", but the <artifactId> element in its pom.xml declares "georss" without
the "-rome" suffix, which causes some environments to complain about this inconsistency.
Omitting the declaration from the root pom.xml limits the inconvenience to this "sis-webapp"
module only. -->
Modified: sis/branches/JDK6/core/sis-build-helper/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-build-helper/src/site/apt/index.apt?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-build-helper/src/site/apt/index.apt [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-build-helper/src/site/apt/index.apt [UTF-8] Thu Jul 25 14:51:57 2013
@@ -29,13 +29,7 @@ Building Apache SIS
Content:
- * Javadoc taglets
-
- * Localized resources compiler
-
- * JAR files collector
-
- * Pack200 bundles
+%{toc|fromDepth=2|toDepth=2}
* Javadoc taglets
@@ -129,7 +123,7 @@ Building Apache SIS
so execution of this plugin should be very cheap and consume few disk space.
* Dependencies already present in the <<<target/binaries>>> directory are presumed stables and
- are not overwritten. Only artefacts produced by the Maven build are unconditionally overwritten.
+ are not overwritten. Only artifacts produced by the Maven build are unconditionally overwritten.
This plugin can be activated by the following fragment in the parent <<<pom.xml>>> file:
@@ -153,7 +147,7 @@ Building Apache SIS
+-----------------------------------------------------
-* Pack200 bundles
+* Pack200 bundle
To merges the binaries produced by the above step and compress them using Pack200,
invoke the following from the command line. Do not forget the <<<--non-recursive>>>
Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/TimePeriodBound.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/TimePeriodBound.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/TimePeriodBound.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/TimePeriodBound.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -37,7 +37,7 @@ import org.opengis.temporal.Instant;
* @module
*/
@XmlTransient
-abstract class TimePeriodBound {
+public abstract class TimePeriodBound {
/**
* Empty constructor for subclasses only.
*/
Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -16,7 +16,6 @@
*/
package org.apache.sis.metadata.iso;
-import java.util.UUID;
import java.util.Collection;
import java.util.logging.Logger;
import java.io.Serializable;
@@ -28,11 +27,9 @@ import org.opengis.metadata.Identifier;
import org.apache.sis.xml.IdentifierMap;
import org.apache.sis.xml.IdentifierSpace;
import org.apache.sis.xml.IdentifiedObject;
-import org.apache.sis.xml.ValueConverter;
import org.apache.sis.metadata.MetadataStandard;
import org.apache.sis.metadata.ModifiableMetadata;
import org.apache.sis.internal.jaxb.IdentifierMapWithSpecialCases;
-import org.apache.sis.internal.jaxb.Context;
import org.apache.sis.util.logging.Logging;
import org.apache.sis.util.CharSequences;
import org.apache.sis.util.ThreadSafe;
@@ -163,6 +160,10 @@ public class ISOMetadata extends Modifia
@XmlAttribute // Defined in "gco" as unqualified attribute.
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
private String getUUID() {
+ /*
+ * IdentifierMapWithSpecialCases will take care of converting UUID to String,
+ * or to return a previously stored String if it was an unparsable UUID.
+ */
return isNullOrEmpty(identifiers) ? null : getIdentifierMap().get(IdentifierSpace.UUID);
}
@@ -173,22 +174,11 @@ public class ISOMetadata extends Modifia
* @throws IllegalArgumentException If the UUID is already assigned to an other object.
*/
private void setUUID(String id) {
- final Context context = Context.current();
- final ValueConverter converter = Context.converter(context);
- final UUID uuid;
- try {
- uuid = converter.toUUID(context, id);
- } catch (IllegalArgumentException e) {
- // IF we can not store the value as a UUID, store it as a String.
- Context.warningOccured(context, this, ISOMetadata.class, "setUUID", e, false);
- id = CharSequences.trimWhitespaces(id);
- if (id != null && !id.isEmpty()) {
- getIdentifierMap().put(IdentifierSpace.UUID, id);
- }
- return;
- }
- if (uuid != null) {
- getIdentifierMap().putSpecialized(IdentifierSpace.UUID, uuid);
- }
+ /*
+ * IdentifierMapWithSpecialCases will take care of converting the String to UUID if possible,
+ * or will store the value as a plain String if it can not be converted. In the later case, a
+ * warning will be emitted (logged or processed by listeners).
+ */
+ getIdentifierMap().put(IdentifierSpace.UUID, id);
}
}
Modified: sis/branches/JDK6/core/sis-metadata/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/site/apt/index.apt?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/site/apt/index.apt [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/site/apt/index.apt [UTF-8] Thu Jul 25 14:51:57 2013
@@ -28,7 +28,7 @@ Apache SIS Metadata
of the metadata interfaces defined in GeoAPI, and a framework for handling those metadata through
Java reflection.
- * {{{./faq.html}Frequently Asked Questions}}
+ * {{{http://sis.apache.org/faq.html#metadata}Frequently Asked Questions}}
* {{{https://geo-ide.noaa.gov/wiki/index.php?title=Category:ISO_19115}ISO 19115 wiki at NOAA}}
Modified: sis/branches/JDK6/core/sis-metadata/src/site/site.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/site/site.xml?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/site/site.xml (original)
+++ sis/branches/JDK6/core/sis-metadata/src/site/site.xml Thu Jul 25 14:51:57 2013
@@ -30,7 +30,7 @@
<body>
<menu name="Quick links">
<item name="Module Javadoc" href="apidocs/index.html"/>
- <item name="FAQ" href="faq.html"/>
+ <item name="FAQ" href="http://sis.apache.org/faq.html#metadata"/>
<item name="Apache SIS home" href="../index.html"/>
</menu>
Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -113,7 +113,7 @@ public final class Envelopes extends Sta
* parsed} by the {@code GeneralEnvelope} constructor.
*
* @param envelope The envelope to format.
- * @return The envelope as a {@code BOX} or {@code BOX3D} in WKT format.
+ * @return This envelope as a {@code BOX} or {@code BOX3D} (most typical dimensions) element.
*
* @see #fromWKT(CharSequence)
* @see org.apache.sis.io.wkt
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ConverterRegistry.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ConverterRegistry.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ConverterRegistry.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/converter/ConverterRegistry.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -20,6 +20,7 @@ import java.util.Map;
import java.util.LinkedHashMap;
import org.apache.sis.util.Debug;
import org.apache.sis.util.Classes;
+import org.apache.sis.util.Numbers;
import org.apache.sis.util.ThreadSafe;
import org.apache.sis.util.ArgumentChecks;
import org.apache.sis.util.ObjectConverter;
@@ -479,6 +480,21 @@ public class ConverterRegistry {
put(key, converter);
return converter;
}
+ /*
+ * Still no converter found. If the source and target classes are array classes,
+ * search a converter for their components.
+ */
+ final Class<?> sourceComponent = sourceClass.getComponentType();
+ if (sourceComponent != null) {
+ final Class<?> targetComponent = targetClass.getComponentType();
+ if (targetComponent != null) {
+ converter = new ArrayConverter<S,T>(sourceClass, targetClass, find(
+ Numbers.primitiveToWrapper(sourceComponent),
+ Numbers.primitiveToWrapper(targetComponent)));
+ put(key, converter);
+ return converter;
+ }
+ }
}
throw new UnconvertibleObjectException(Errors.format(Errors.Keys.CanNotConvertFromType_2, sourceClass, targetClass));
}
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapWithSpecialCases.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapWithSpecialCases.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapWithSpecialCases.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapWithSpecialCases.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -22,6 +22,7 @@ import java.util.Collection;
import org.opengis.metadata.Identifier;
import org.opengis.metadata.citation.Citation;
import org.apache.sis.xml.IdentifierSpace;
+import org.apache.sis.xml.ValueConverter;
import org.apache.sis.xml.XLink;
// Related to JDK7
@@ -92,7 +93,9 @@ public final class IdentifierMapWithSpec
/**
* Sets the {@code xlink:href} value, which may be null. If an explicit {@code xlink:href}
* identifier exists, it is removed before to set the new {@code href} in the {@link XLink}
- * object.
+ * object. The intend is to give precedence to the {@link XLink#getHRef()} property in every
+ * cases where the {@code href} is parsable as a {@link URI}, and use the value associated
+ * to the {@code HREF} key only as a fallback when the string can not be parsed.
*/
private URI setHRef(final URI href) {
URI old = super.putSpecialized(IdentifierSpace.HREF, null);
@@ -175,35 +178,54 @@ public final class IdentifierMapWithSpec
/**
* {@inheritDoc}
+ *
+ * <p>If the given {@code authority} is {@code HREF} and if the given string is parsable as a {@link URI},
+ * then this method will actually store the value as the {@link XLink#getHRef()} property of the {@code XLink}
+ * associated to the {@code XLINK} key. Only if the given string can not be parsed, then the value is stored
+ * <cite>as-is</cite> under the {@code HREF} key.</p>
*/
@Override
public String put(final Citation authority, final String code)
throws UnsupportedOperationException
{
+ final Context context;
+ final Object removed;
+ final Class<?> type;
final Exception exception;
switch (specialCase(authority)) {
default: {
return super.put(authority, code);
}
case NonMarshalledAuthority.HREF: {
- URI id = null;
- if (code != null) try {
- id = new URI(code);
- } catch (URISyntaxException e) {
- exception = e;
- break;
+ URI uri = null;
+ if (code != null) {
+ context = Context.current();
+ final ValueConverter converter = Context.converter(context);
+ try {
+ uri = converter.toURI(context, code);
+ } catch (URISyntaxException e) {
+ exception = e;
+ removed = setHRef(null);
+ type = URI.class;
+ break;
+ }
}
final String old = getUnspecialized(authority);
- id = setHRef(id);
- return (id != null) ? id.toString() : old;
+ uri = setHRef(uri);
+ return (uri != null) ? uri.toString() : old;
}
}
- SpecializedIdentifier.parseFailure(this, exception);
- return super.put(authority, code);
+ SpecializedIdentifier.parseFailure(context, this, code, type, exception);
+ final String old = super.put(authority, code);
+ return (old == null && removed != null) ? removed.toString() : old;
}
/**
* {@inheritDoc}
+ *
+ * <p>If the given {@code authority} is {@code HREF}, then this method will actually store the value
+ * as the {@link XLink#getHRef()} property of the {@code XLink} associated to the {@code XLINK} key.
+ * The previous {@code HREF} value, if any, is discarded.</p>
*/
@Override
@SuppressWarnings("unchecked")
@@ -211,8 +233,12 @@ public final class IdentifierMapWithSpec
throws UnsupportedOperationException
{
switch (specialCase(authority)) {
- default: return super.putSpecialized(authority, value);
- case NonMarshalledAuthority.HREF: return (T) setHRef((URI) value);
+ default: {
+ return super.putSpecialized(authority, value);
+ }
+ case NonMarshalledAuthority.HREF: {
+ return (T) setHRef((URI) value);
+ }
}
}
}
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/SpecializedIdentifier.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/SpecializedIdentifier.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/SpecializedIdentifier.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/SpecializedIdentifier.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -20,12 +20,16 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.util.UUID;
import java.io.Serializable;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
import org.opengis.metadata.Identifier;
import org.opengis.metadata.citation.Citation;
import org.apache.sis.xml.XLink;
import org.apache.sis.xml.IdentifierMap;
import org.apache.sis.xml.IdentifierSpace;
+import org.apache.sis.xml.ValueConverter;
import org.apache.sis.util.Debug;
+import org.apache.sis.util.resources.Messages;
import org.apache.sis.internal.util.Citations;
// Related to JDK7
@@ -96,36 +100,35 @@ public final class SpecializedIdentifier
*/
static Identifier parse(final IdentifierMap source, final Citation authority, final String code) {
if (authority instanceof NonMarshalledAuthority) {
- switch (((NonMarshalledAuthority) authority).ordinal) {
+ final int ordinal = ((NonMarshalledAuthority) authority).ordinal;
+ switch (ordinal) {
case NonMarshalledAuthority.ID: {
return new SpecializedIdentifier<String>(IdentifierSpace.ID, code);
}
case NonMarshalledAuthority.UUID: {
+ final Context context = Context.current();
+ final ValueConverter converter = Context.converter(context);
try {
- return new SpecializedIdentifier<UUID>(IdentifierSpace.UUID, UUID.fromString(code));
+ return new SpecializedIdentifier<UUID>(IdentifierSpace.UUID, converter.toUUID(context, code));
} catch (IllegalArgumentException e) {
- parseFailure(source, e);
+ parseFailure(context, source, code, UUID.class, e);
break;
}
}
- case NonMarshalledAuthority.HREF: {
- final URI href;
- try {
- href = new URI(code);
- } catch (URISyntaxException e) {
- parseFailure(source, e);
- break;
- }
- return new SpecializedIdentifier<URI>(IdentifierSpace.HREF, href);
- }
+ case NonMarshalledAuthority.HREF:
case NonMarshalledAuthority.XLINK: {
+ final Context context = Context.current();
+ final ValueConverter converter = Context.converter(context);
final URI href;
try {
- href = new URI(code);
+ href = converter.toURI(context, code);
} catch (URISyntaxException e) {
- parseFailure(source, e);
+ parseFailure(context, source, code, URI.class, e);
break;
}
+ if (ordinal == NonMarshalledAuthority.HREF) {
+ return new SpecializedIdentifier<URI>(IdentifierSpace.HREF, href);
+ }
final XLink xlink = new XLink();
xlink.setHRef(href);
return new SpecializedIdentifier<XLink>(IdentifierSpace.XLINK, xlink);
@@ -139,10 +142,25 @@ public final class SpecializedIdentifier
* Invoked by {@link #parse(Citation,String)} when a string can not be parsed.
* This is considered a non-fatal error, because the parse method can fallback
* on the generic {@link IdentifierMapEntry} in such cases.
- */
- static void parseFailure(final IdentifierMap source, final Exception e) {
- // IdentifierMap.put(Citation,String) is the public facade.
- Context.warningOccured(Context.current(), source, IdentifierMap.class, "put", e, true);
+ *
+ * <p>This method assumes that {@link IdentifierMap#put(Citation, String)} is
+ * the public API by which this method has been invoked.</p>
+ *
+ * @param context The marshalling context, or {@code null} if none.
+ * @param source The object to declare as the source of the warning.
+ * @param value The value that we failed to parse.
+ * @param type The target type of the parsing process.
+ * @param cause The exception that occurred during the parsing process.
+ */
+ static void parseFailure(final Context context, final IdentifierMap source,
+ final String value, final Class<?> type, final Exception cause)
+ {
+ final Messages resources = Messages.getResources(context != null ? context.getLocale() : null);
+ final LogRecord record = resources.getLogRecord(Level.WARNING, Messages.Keys.UnparsableValueStoredAsText_2, type, value);
+ record.setSourceClassName(IdentifierMap.class.getCanonicalName());
+ record.setSourceMethodName("put");
+ record.setThrown(cause);
+ Context.warningOccured(context, source, record);
}
/**
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -52,13 +52,13 @@ import org.apache.sis.internal.jaxb.Spec
*/
final class ObjectReference {
/**
- * A URN to an external resources, or to an other part of a XML document, or an identifier.
+ * A unique identifier to an external resources, or to an other part of a XML document.
* The {@code uuidref} attribute is used to refer to an XML element that has a corresponding
* {@code uuid} attribute.
*
* @see <a href="http://www.schemacentral.com/sc/niem21/a-uuidref-1.html">Usage of uuidref</a>
*/
- String anyUUID;
+ UUID uuid;
/**
* The {@code xlink} attributes, or {@code null} if none.
@@ -66,11 +66,6 @@ final class ObjectReference {
XLink xlink;
/**
- * The parsed value of {@link #anyUUID}, computed when first needed.
- */
- private transient UUID uuid;
-
- /**
* Creates an initially empty object reference.
*/
ObjectReference() {
@@ -82,22 +77,9 @@ final class ObjectReference {
* @see ReferenceResolver#canSubstituteByReference(MarshalContext, Class, Object, UUID)
* @see ReferenceResolver#canSubstituteByReference(MarshalContext, Class, Object, XLink)
*/
- ObjectReference(final UUID uuid, final String anyUUID, final XLink link) {
- this.uuid = uuid;
- this.anyUUID = anyUUID;
- this.xlink = link;
- }
-
- /**
- * Parses the given string as a UUID.
- *
- * @param context The marshalling context, or {@code null} if none.
- * @param anyUUID The string to parse, or {@code null}.
- * @return The parsed UUID, or {@code null}.
- * @throws IllegalArgumentException If {@code anyUUID} can not be parsed.
- */
- static UUID toUUID(final Context context, final String anyUUID) throws IllegalArgumentException {
- return (anyUUID != null) ? Context.converter(context).toUUID(context, anyUUID) : null;
+ ObjectReference(final UUID uuid, final XLink link) {
+ this.uuid = uuid;
+ this.xlink = link;
}
/**
@@ -105,19 +87,15 @@ final class ObjectReference {
* declared in this {@code ObjectReference}. If the given metadata object is non-null,
* assigns to that object the identifiers declared in this {@code ObjectReference}.
*
- * <p>This method is invoked at unmarshalling time.</p>
+ * <p>This method is invoked at unmarshalling time by {@link PropertyType#resolve(Context)}.</p>
*
* @param <T> The compile-time type of the {@code type} argument.
* @param context The marshalling context, or {@code null} if none.
* @param type The expected type of the metadata object.
* @param metadata The metadata object, or {@code null}.
* @return A metadata object for the identifiers, or {@code null}
- * @throws IllegalArgumentException If the {@link #anyUUID} field can not be parsed.
*/
- final <T> T resolve(final Context context, final Class<T> type, T metadata) throws IllegalArgumentException {
- if (uuid == null) {
- uuid = toUUID(context, anyUUID);
- }
+ final <T> T resolve(final Context context, final Class<T> type, T metadata) {
if (metadata == null) {
final ReferenceResolver resolver = Context.resolver(context);
if ((uuid == null || (metadata = resolver.resolve(context, type, uuid )) == null) &&
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -154,22 +154,37 @@ public abstract class PropertyType<Value
}
}
if (metadata instanceof IdentifiedObject) {
+ /*
+ * Get the identifiers as full UUID or XLink objects. We do not use the more permissive methods
+ * working with arbitrary strings -- e.g. map.get(IdentifierSpace.HREF) -- because we are going
+ * to use those values for marshalling REFERENCES to an externally-defined metadata object, not
+ * for declaring the attributes to marshal together with the metadata. Since references REPLACE
+ * the original metadata object, we are better to ensure that they are well formed - in case of
+ * doubt, we are better to marshal the full object. We are not loosing information since in the
+ * later case, the identifiers will be marshalled as Strings by ISOMetadata. Example:
+ *
+ * <gmd:CI_Citation>
+ * <gmd:series uuidref="f8f5fcb1-d57b-4013-b3a4-4eaa40df6dcf"> ☚ marshalled by this
+ * <gmd:CI_Series uuid="f8f5fcb1-d57b-4013-b3a4-4eaa40df6dcf"> ☚ marshalled by ISOMetadata
+ * ...
+ * </gmd:CI_Series>
+ * </gmd:series>
+ * </gmd:CI_Citation>
+ *
+ * We do not try to parse UUID or XLink objects from String because it should be the job of
+ * org.apache.sis.internal.jaxb.IdentifierMapWithSpecialCases.put(Citation, String).
+ */
final IdentifierMap map = ((IdentifiedObject) metadata).getIdentifierMap();
XLink link = map.getSpecialized(IdentifierSpace.XLINK);
UUID uuid = map.getSpecialized(IdentifierSpace.UUID);
- String anyUUID = (uuid != null) ? uuid.toString() : map.get(IdentifierSpace.UUID);
- if (anyUUID != null || link != null) {
+ if (uuid != null || link != null) {
final Context context = Context.current();
final ReferenceResolver resolver = Context.resolver(context);
final Class<BoundType> type = getBoundType();
- if (uuid == null) {
- uuid = ObjectReference.toUUID(context, anyUUID); // May still null.
- }
/*
* Check if the user gives us the permission to use reference to those identifiers.
- * If not, forget them. Information will actually not be lost, since the same identifiers
- * will be provided by private methods in ISOMetadata. If we do nott clear the identifiers
- * here, they would appear twice in the XML output.
+ * If not, forget them in order to avoid marshalling the identifiers twice (see the
+ * example in the above comment).
*/
if (uuid != null && !resolver.canSubstituteByReference(context, type, metadata, uuid)) {
uuid = null;
@@ -178,7 +193,7 @@ public abstract class PropertyType<Value
link = null;
}
if (uuid != null || link != null) {
- reference = new ObjectReference(uuid, anyUUID, link);
+ reference = new ObjectReference(uuid, link);
}
}
}
@@ -271,24 +286,26 @@ public abstract class PropertyType<Value
@XmlAttribute(name = "uuidref") // Defined in "gco" as unqualified attribute.
public final String getUUIDREF() {
final ObjectReference ref = reference(false);
- return (ref != null) ? ref.anyUUID : null;
+ return (ref != null) ? toString(ref.uuid) : null;
}
/**
* Sets the {@code uuidref} attribute value.
*
- * @param uuid The new attribute value.
+ * @param uuid The new attribute value.
+ * @throws IllegalArgumentException If the given UUID can not be parsed.
* @category gco:ObjectReference
*/
- public final void setUUIDREF(final String uuid) {
- reference(true).anyUUID = uuid;
+ public final void setUUIDREF(final String uuid) throws IllegalArgumentException {
+ final Context context = Context.current();
+ reference(true).uuid = Context.converter(context).toUUID(context, uuid);
}
/**
* Returns the given URI as a string, or returns {@code null} if the given argument is null.
*/
- private static String toString(final Object uri) {
- return (uri != null) ? uri.toString() : null;
+ private static String toString(final Object text) {
+ return (text != null) ? text.toString() : null;
}
/**
@@ -516,10 +533,9 @@ public abstract class PropertyType<Value
* If the {@linkplain #metadata} is still null, tries to resolve it using UUID, XLink
* or NilReason information. This method is invoked at unmarshalling time.
*
- * @throws URISyntaxException If a URI can not be parsed.
- * @throws IllegalArgumentException If the UUID can not be parsed.
+ * @throws URISyntaxException If a nil reason is present and can not be parsed.
*/
- final BoundType resolve(final Context context) throws URISyntaxException, IllegalArgumentException {
+ final BoundType resolve(final Context context) throws URISyntaxException {
final ObjectReference ref = reference(false);
if (ref != null) {
metadata = ref.resolve(context, getBoundType(), metadata);
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/LocalizedParseException.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -81,7 +81,7 @@ public final class LocalizedParseExcepti
/**
* Constructs a {@code ParseException} with a message formatted from the given resource key
- * and unparseable string. This convenience constructor fetches the word starting at the error
+ * and unparsable string. This convenience constructor fetches the word starting at the error
* index, and uses that word as the single argument associated to the resource key.
*
* @param locale The locale for {@link #getLocalizedMessage()}.
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/setup/About.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/setup/About.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/setup/About.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/setup/About.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -536,7 +536,7 @@ pathTree: for (int j=0; ; j++) {
/**
* If a file path in the given node or any children follow the Maven pattern, remove the
- * artefact name and version numbers redundancies in order to make the name more compact.
+ * artifact name and version numbers redundancies in order to make the name more compact.
* For example this method replaces {@code "org/opengis/geoapi/3.0.0/geoapi-3.0.0.jar"}
* by {@code "org/opengis/(…)/geoapi-3.0.0.jar"}.
*/
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -614,7 +614,7 @@ public final class Numbers extends Stati
* @return The value object, or {@code null} if {@code value} was null.
* @throws IllegalArgumentException if {@code type} is not a recognized type.
* @throws NumberFormatException if {@code type} is a subclass of {@link Number} and the
- * string value is not parseable as a number of the specified type.
+ * string value is not parsable as a number of the specified type.
*/
@SuppressWarnings("unchecked")
public static <T> T valueOf(final String value, final Class<T> type)
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -74,6 +74,12 @@ public final class Messages extends Inde
* Property “{0}” is hidden by “{1}”.
*/
public static final int PropertyHiddenBy_2 = 3;
+
+ /**
+ * Can not parse “{1}” as an instance of {0}. The value is stored as plain text instead, but
+ * will be ignored by some processing.
+ */
+ public static final int UnparsableValueStoredAsText_2 = 4;
}
/**
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties [ISO-8859-1] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties [ISO-8859-1] Thu Jul 25 14:51:57 2013
@@ -18,3 +18,4 @@ ChangedContainerCapacity_2 = Change
DiscardedExclusiveProperty_2 = Property \u201c{0}\u201d has been discarded in favor of \u201c{1}\u201d, because those two properties are mutually exclusive.
PropertyHiddenBy_2 = Property \u201c{0}\u201d is hidden by \u201c{1}\u201d.
LocalesDiscarded = Text were discarded for some locales.
+UnparsableValueStoredAsText_2 = Can not parse \u201c{1}\u201d as an instance of {0}. The value is stored as plain text instead, but will be ignored by some processing.
Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties [ISO-8859-1] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties [ISO-8859-1] Thu Jul 25 14:51:57 2013
@@ -18,3 +18,4 @@ ChangedContainerCapacity_2 = Change
DiscardedExclusiveProperty_2 = La propri\u00e9t\u00e9 \u201c{0}\u201d a \u00e9t\u00e9 \u00e9cart\u00e9e en faveur de \u201c{1}\u201d, parce que ces deux propri\u00e9t\u00e9s sont mutuellement exclusives.
PropertyHiddenBy_2 = La propri\u00e9t\u00e9 \u201c{0}\u201d est masqu\u00e9e par \u201c{1}\u201d.
LocalesDiscarded = Des textes ont \u00e9t\u00e9 ignor\u00e9s pour certaines langues.
+UnparsableValueStoredAsText_2 = La valeur \u201c{1}\u201d ne peut pas \u00eatre interpr\u00e9t\u00e9e comme une instance de {0}. Elle est donc m\u00e9moris\u00e9e sous sa forme textuelle, mais sera ignor\u00e9e par certains traitements.
Copied: sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java (from r1506959, sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java?p2=sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java&p1=sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java&r1=1506959&r2=1506993&rev=1506993&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ArrayConverterTest.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -37,7 +37,7 @@ public final strictfp class ArrayConvert
* The types need to be specified because we want to test wrapper and primitive types.
*/
private static <S,T> ArrayConverter<S,T> create(final Class<S> sourceClass, final Class<T> targetClass) {
- return new ArrayConverter<>(sourceClass, targetClass, new NumberConverter<>(Integer.class, Double.class));
+ return new ArrayConverter<S,T>(sourceClass, targetClass, new NumberConverter<Integer,Double>(Integer.class, Double.class));
}
/**
Modified: sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ConverterRegistryTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ConverterRegistryTest.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ConverterRegistryTest.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/internal/converter/ConverterRegistryTest.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -36,7 +36,7 @@ import static org.apache.sis.test.Assert
*
* <p>This test shall not perform any conversion neither serialization. It shall only ensures
* that the converters are properly registered. This is because some {@link SystemConverter}
- * methods may query back {@link HeuristicRegistry#SYSTEM} while we want to keep the tests
+ * methods may query back {@link SystemRegistry#INSTANCE} while we want to keep the tests
* isolated.</p>
*
* @author Martin Desruisseaux (Geomatys)
@@ -335,4 +335,31 @@ public final strictfp class ConverterReg
*/
assertAllConvertersAreRegistered();
}
+
+ /**
+ * Tests automatic creation of a converter for an array of values.
+ */
+ @Test
+ public void testArrayOfWrapperTypes() {
+ register(new NumberConverter<Float,Double>(Float.class, Double.class));
+ final ObjectConverter<?,?> converter = registry.find(Float[].class, Double[].class);
+ assertInstanceOf("Array conversions", ArrayConverter.class, converter);
+ assertEquals(Float [].class, converter.getSourceClass());
+ assertEquals(Double[].class, converter.getTargetClass());
+ assertSame("Converter shall be cached.", converter, registry.find(Float[].class, Double[].class));
+ }
+
+ /**
+ * Tests automatic creation of a converter for an array of values.
+ */
+ @Test
+ @DependsOnMethod("testArrayOfWrapperTypes")
+ public void testArrayOfPrimitiveTypes() {
+ register(new NumberConverter<Float,Double>(Float.class, Double.class));
+ final ObjectConverter<?,?> converter = registry.find(float[].class, double[].class);
+ assertInstanceOf("Array conversions", ArrayConverter.class, converter);
+ assertEquals(float [].class, converter.getSourceClass());
+ assertEquals(double[].class, converter.getTargetClass());
+ assertSame("Converter shall be cached.", converter, registry.find(float[].class, double[].class));
+ }
}
Modified: sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -104,6 +104,7 @@ import org.junit.BeforeClass;
org.apache.sis.internal.converter.StringConverterTest.class,
org.apache.sis.internal.converter.PathConverterTest.class,
org.apache.sis.internal.converter.FallbackConverterTest.class,
+ org.apache.sis.internal.converter.ArrayConverterTest.class,
org.apache.sis.internal.converter.ConverterRegistryTest.class,
org.apache.sis.internal.converter.SystemRegistryTest.class,
org.apache.sis.internal.converter.NumberConverterTest.class, // Shall be after SystemRegistryTest.
Modified: sis/branches/JDK6/ide-project/NetBeans/nbproject/project.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/ide-project/NetBeans/nbproject/project.xml?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/ide-project/NetBeans/nbproject/project.xml (original)
+++ sis/branches/JDK6/ide-project/NetBeans/nbproject/project.xml Thu Jul 25 14:51:57 2013
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
@@ -18,7 +17,6 @@
specific language governing permissions and limitations
under the License.
-->
-
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
@@ -63,6 +61,7 @@
<word>monospaced</word>
<word>namespace</word>
<word>namespaces</word>
+ <word>parsable</word>
<word>timezone</word>
<word>Unicode</word>
<word>uninstall</word>
@@ -70,6 +69,7 @@
<word>unmarshaller</word>
<word>unmarshallers</word>
<word>unmarshalling</word>
+ <word>unparsable</word>
<word>whitespaces</word>
</spellchecker-wordlist>
</configuration>
Modified: sis/branches/JDK6/pom.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/pom.xml?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/pom.xml (original)
+++ sis/branches/JDK6/pom.xml Thu Jul 25 14:51:57 2013
@@ -453,7 +453,7 @@ Apache SIS is a free software, Java lang
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
- <version>2.3.7</version>
+ <version>2.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
@@ -543,7 +543,7 @@ Apache SIS is a free software, Java lang
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
- <version>8.0.0.M2</version>
+ <version>8.0.1.v20110908</version>
</plugin>
</plugins>
</pluginManagement>
@@ -683,7 +683,7 @@ Apache SIS is a free software, Java lang
<!-- ==============================================================
Additional repositories from which to download artifacts.
The parent pom.xml already declares the apache.snapshots
- repository for library artefacts. But we also need it for
+ repository for library artifacts. But we also need it for
Maven plugins in order to download sis-build-helper when
the user did not built it himself.
============================================================== -->
Modified: sis/branches/JDK6/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/src/site/apt/index.apt?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/src/site/apt/index.apt [UTF-8] (original)
+++ sis/branches/JDK6/src/site/apt/index.apt [UTF-8] Thu Jul 25 14:51:57 2013
@@ -40,44 +40,17 @@ The Apache SIS™ library
applicable to simple imagery as to many dimensional data structures.
SIS is a project of the {{{http://www.apache.org}Apache Software Foundation}}.
-
-
-* Using SIS
-
- SIS requires a Java 6 Runtime Environment.
- The latest release is <<<0.3>>>.
- The version under development is <<<0.4-SNAPSHOT>>>.
-
- The source code can be checked out anonymously with SubVersion from
- {{{http://svn.apache.org/repos/asf/sis/trunk}http://svn.apache.org/repos/asf/sis/trunk}},
- or can be cloned with Git from {{{git://git.apache.org/sis.git}git://git.apache.org/sis.git}}.
+ The project home is {{http://sis.apache.org}}.
* Documentation
** User documentation
- * {{{./download.html}Downloading binaries}}
-
* {{{./apidocs/index.html}Aggregated Javadoc}}
* Developer Guide (English - translation to be provided later) ({{{./book/fr.xhtml}Français}})
- * {{{http://cwiki.apache.org/confluence/display/SIS}SIS Wiki}}
-
-
-** SIS developer documentation
-
- * {{{./develop.html}Developing Apache SIS}}
-
- * {{{./branches.html}Branches (JDK6, JDK7, GeoAPI)}}
-
- * {{{./code-patterns.html}Recommended code patterns}}
-
- * {{{./code-format.html}Code and Javadoc formatting}}
-
- * {{{http://reviews.apache.org/groups/sis/}Code review}}
-
Apache SIS, Apache, the Apache feather logo, and the Apache SIS project logo are trademarks of
The Apache Software Foundation.
Modified: sis/branches/JDK6/src/site/resources/css/site.css
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/src/site/resources/css/site.css?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/src/site/resources/css/site.css (original)
+++ sis/branches/JDK6/src/site/resources/css/site.css Thu Jul 25 14:51:57 2013
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-/* Override styles in maven-base.css */
+/* Overwrite styles in maven-base.css */
#leftColumn {
width: 190px;
}
@@ -23,7 +23,7 @@
margin-left: 210px;
}
-/* Override styles in maven-theme.css */
+/* Overwrite styles in maven-theme.css */
a {
color: #387085;
}
Modified: sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java [UTF-8] (original)
+++ sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -91,7 +91,7 @@ public abstract class Decoder implements
* Returns the value of the attribute of the given name as a number, or {@code null} if none.
*
* @param name The name of the attribute to search, or {@code null}.
- * @return The attribute value, or {@code null} if none or unparseable or if the given name was null.
+ * @return The attribute value, or {@code null} if none or unparsable or if the given name was null.
* @throws IOException If an I/O operation was necessary but failed.
*/
public abstract Number numericValue(final String name) throws IOException;
@@ -121,7 +121,7 @@ public abstract class Decoder implements
* Returns the value of the attribute of the given name as a date, or {@code null} if none.
*
* @param name The name of the attribute to search, or {@code null}.
- * @return The attribute value, or {@code null} if none or unparseable or if the given name was null.
+ * @return The attribute value, or {@code null} if none or unparsable or if the given name was null.
* @throws IOException If an I/O operation was necessary but failed.
*/
public abstract Date dateValue(final String name) throws IOException;
@@ -130,7 +130,7 @@ public abstract class Decoder implements
* Returns the value of the attribute of the given name as a unit of measurement, or {@code null} if none.
*
* @param name The name of the attribute to search, or {@code null}.
- * @return The attribute value, or {@code null} if none or unparseable or if the given name was null.
+ * @return The attribute value, or {@code null} if none or unparsable or if the given name was null.
* @throws IOException If an I/O operation was necessary but failed.
*
* @todo Current Units.valueOf(String) implementation ignore direction in "degrees_east" or "degrees_west".
Modified: sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java?rev=1506993&r1=1506992&r2=1506993&view=diff
==============================================================================
--- sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java [UTF-8] (original)
+++ sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java [UTF-8] Thu Jul 25 14:51:57 2013
@@ -190,7 +190,7 @@ public final class DecoderWrapper extend
* Returns the value of the attribute of the given name as a number, or {@code null} if none.
*
* @param name The name of the attribute to search, or {@code null}.
- * @return The attribute value, or {@code null} if none or unparseable or if the given name was null.
+ * @return The attribute value, or {@code null} if none or unparsable or if the given name was null.
*/
@Override
public Number numericValue(final String name) {
@@ -216,7 +216,7 @@ public final class DecoderWrapper extend
* Returns the value of the attribute of the given name as a date, or {@code null} if none.
*
* @param name The name of the attribute to search, or {@code null}.
- * @return The attribute value, or {@code null} if none or unparseable or if the given name was null.
+ * @return The attribute value, or {@code null} if none or unparsable or if the given name was null.
*/
@Override
public Date dateValue(final String name) {