sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1697309 [2/2] - in /sis/branches/JDK7: ./ core/sis-metadata/src/main/java/org/apache/sis/io/wkt/ core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/ core/sis-referencing/src/main/java/org/apache/sis/internal/refere...
Date Mon, 24 Aug 2015 03:33:53 GMT
Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -17,10 +17,8 @@
 package org.apache.sis.referencing.operation;
 
 import java.util.Map;
-import org.opengis.parameter.ParameterValueGroup;
 import org.opengis.referencing.operation.MathTransform;
-import org.opengis.referencing.operation.OperationMethod;
-import org.opengis.referencing.operation.SingleOperation;
+import org.opengis.referencing.operation.CoordinateOperation;
 import org.opengis.referencing.operation.PassThroughOperation;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.referencing.operation.transform.PassThroughTransform;
@@ -51,7 +49,7 @@ public class DefaultPassThroughOperation
     /**
      * The operation to apply on the subset of a coordinate tuple.
      */
-    private final SingleOperation operation;
+    private final CoordinateOperation operation;
 
     /**
      * Constructs a single operation from a set of properties.
@@ -89,7 +87,7 @@ public class DefaultPassThroughOperation
     public DefaultPassThroughOperation(final Map<String,?>            properties,
                                        final CoordinateReferenceSystem sourceCRS,
                                        final CoordinateReferenceSystem targetCRS,
-                                       final SingleOperation           operation,
+                                       final CoordinateOperation       operation,
                                        final int firstAffectedOrdinate,
                                        final int numTrailingOrdinates)
     {
@@ -149,28 +147,6 @@ public class DefaultPassThroughOperation
     }
 
     /**
-     * @deprecated May be removed in GeoAPI 4.0 since it does not apply to pass-through operations.
-     *
-     * @return {@code null}.
-     */
-    @Override
-    @Deprecated
-    public OperationMethod getMethod() {
-        return null;
-    }
-
-    /**
-     * @deprecated May be removed in GeoAPI 4.0 since it does not apply to pass-through operations.
-     *
-     * @return {@code null}.
-     */
-    @Override
-    @Deprecated
-    public ParameterValueGroup getParameterValues() {
-        return null;
-    }
-
-    /**
      * Returns the operation to apply on the subset of a coordinate tuple.
      *
      * @return The operation to apply on the subset of a coordinate tuple.
@@ -178,7 +154,7 @@ public class DefaultPassThroughOperation
      * @see PassThroughTransform#getSubTransform()
      */
     @Override
-    public SingleOperation getOperation() {
+    public CoordinateOperation getOperation() {
         return operation;
     }
 

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterValueTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterValueTest.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterValueTest.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterValueTest.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -45,6 +45,7 @@ import static org.apache.sis.test.Metada
  * @version 0.6
  * @module
  */
+@SuppressWarnings("UnnecessaryBoxing")
 @DependsOn(DefaultParameterDescriptorTest.class)
 public final strictfp class DefaultParameterValueTest extends TestCase {
     /**

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterBuilderTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterBuilderTest.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterBuilderTest.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterBuilderTest.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -77,6 +77,7 @@ public final strictfp class ParameterBui
      */
     @Test
     @DependsOnMethod("testCreate")
+    @SuppressWarnings("UnnecessaryBoxing")
     public void testMercatorProjection() {
         final ParameterBuilder builder = new ParameterBuilder();
         builder.setCodeSpace(Citations.EPSG, "EPSG").setRequired(true);

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -58,23 +58,36 @@ public final strictfp class ParameterFor
      * Creates the parameter descriptors to be used by all tests in this class. This method
creates
      * a variant of the example documented in the {@link DefaultParameterDescriptorGroup}
javadoc
      * with arbitrary non-zero default values.
+     *
+     * <div class="note"><b>Note:</b>
+     * the default values are not part of EPSG definitions. They are added here only for
testing purpose.</div>
      */
     @BeforeClass
     public static void createParameterDescriptor() {
+        descriptor = createMercatorParameters();
+    }
+
+    /**
+     * Creates the test parameter for the Mercator projection, to be shared by {@link ParameterMarshallingTest}.
+     *
+     * <div class="note"><b>Note:</b>
+     * the default values are not part of EPSG definitions. They are added here only for
testing purpose.</div>
+     */
+    static ParameterDescriptorGroup createMercatorParameters() {
         ParameterBuilder builder = new ParameterBuilder();
         builder.setCodeSpace(EPSG, "EPSG").setRequired(true);
         ParameterDescriptor<?>[] parameters = {
-            builder.addName("Latitude of natural origin")      .addName(OGC, "latitude_of_origin").createBounded(
-80,  +84,  40, NonSI.DEGREE_ANGLE),
-            builder.addName("Longitude of natural origin")     .addName(OGC, "central_meridian")
 .createBounded(-180, +180, -60, NonSI.DEGREE_ANGLE),
-            builder.addName("Scale factor at natural origin")  .addName(OGC, "scale_factor")
     .createStrictlyPositive(1, Unit.ONE),
-            builder.addName("False easting").setRequired(false).addName(OGC, "false_easting")
    .create( 5000, SI.METRE),
-            builder.addName("False northing")                  .addName(OGC, "false_northing")
   .create(10000, SI.METRE)
+            builder.addIdentifier("8801").addName("Latitude of natural origin")      .addName(OGC,
"latitude_of_origin").createBounded( -80,  +84,  40, NonSI.DEGREE_ANGLE),
+            builder.addIdentifier("8802").addName("Longitude of natural origin")     .addName(OGC,
"central_meridian")  .createBounded(-180, +180, -60, NonSI.DEGREE_ANGLE),
+            builder.addIdentifier("8805").addName("Scale factor at natural origin")  .addName(OGC,
"scale_factor")      .createStrictlyPositive(1, Unit.ONE),
+            builder.addIdentifier("8806").addName("False easting").setRequired(false).addName(OGC,
"false_easting")     .create( 5000, SI.METRE),
+            builder.addIdentifier("8807").addName("False northing")                  .addName(OGC,
"false_northing")    .create(10000, SI.METRE)
         };
         builder.addIdentifier("9804")
                .addName("Mercator (variant A)")
                .addName("Mercator (1SP)")
                .addName(OGC, "Mercator_1SP");
-        descriptor = builder.createGroup(parameters);
+        return builder.createGroup(parameters);
     }
 
     /**
@@ -175,6 +188,10 @@ public final strictfp class ParameterFor
 
     /**
      * Tests {@link ParameterFormat#format(Object, Appendable)} for descriptors with {@code
ContentLevel.DETAILED}.
+     *
+     * <div class="note"><b>Note:</b>
+     * the default values expected by this method are not part of EPSG definitions.
+     * They are added here only for testing purpose.</div>
      */
     @Test
     public void testFormatDetailedDescriptors() {
@@ -185,24 +202,24 @@ public final strictfp class ParameterFor
                 "EPSG: Mercator (variant A) (9804)\n" +
                 "EPSG: Mercator (1SP)\n" +
                 "OGC:  Mercator_1SP\n" +
-                "╔══════════════════════════════════════╤════════╤════════════╤═══════════════╤═══════════════╗\n"
+
-                "║ Name                                 │ Type   │ Obligation │ Value
domain  │ Default value ║\n" +
-                "╟──────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n"
+
-                "║ EPSG: Latitude of natural origin     │ Double │ Mandatory  │ 
[-80 … 84]°  │        40.0°  ║\n" +
-                "║ OGC:  latitude_of_origin             │        │            │ 
             │               ║\n" +
-                "╟──────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n"
+
-                "║ EPSG: Longitude of natural origin    │ Double │ Mandatory  │ [-180
… 180]° │       -60.0°  ║\n" +
-                "║ OGC:  central_meridian               │        │            │ 
             │               ║\n" +
-                "╟──────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n"
+
-                "║ EPSG: Scale factor at natural origin │ Double │ Mandatory  │ 
  (0 … ∞)    │         1.0   ║\n" +
-                "║ OGC:  scale_factor                   │        │            │ 
             │               ║\n" +
-                "╟──────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n"
+
-                "║ EPSG: False easting                  │ Double │ Optional   │ 
 (-∞ … ∞) m  │      5000.0 m ║\n" +
-                "║ OGC:  false_easting                  │        │            │ 
             │               ║\n" +
-                "╟──────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n"
+
-                "║ EPSG: False northing                 │ Double │ Optional   │ 
 (-∞ … ∞) m  │     10000.0 m ║\n" +
-                "║ OGC:  false_northing                 │        │            │ 
             │               ║\n" +
-                "╚══════════════════════════════════════╧════════╧════════════╧═══════════════╧═══════════════╝\n",
text);
+                "╔═════════════════════════════════════════════╤════════╤════════════╤═══════════════╤═══════════════╗\n"
+
+                "║ Name                                        │ Type   │ Obligation
│ Value domain  │ Default value ║\n" +
+                "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n"
+
+                "║ EPSG: Latitude of natural origin (8801)     │ Double │ Mandatory
 │  [-80 … 84]°  │        40.0°  ║\n" +
+                "║ OGC:  latitude_of_origin                    │        │         
  │               │               ║\n" +
+                "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n"
+
+                "║ EPSG: Longitude of natural origin (8802)    │ Double │ Mandatory
 │ [-180 … 180]° │       -60.0°  ║\n" +
+                "║ OGC:  central_meridian                      │        │         
  │               │               ║\n" +
+                "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n"
+
+                "║ EPSG: Scale factor at natural origin (8805) │ Double │ Mandatory
 │    (0 … ∞)    │         1.0   ║\n" +
+                "║ OGC:  scale_factor                          │        │         
  │               │               ║\n" +
+                "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n"
+
+                "║ EPSG: False easting (8806)                  │ Double │ Optional
  │   (-∞ … ∞) m  │      5000.0 m ║\n" +
+                "║ OGC:  false_easting                         │        │         
  │               │               ║\n" +
+                "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼───────────────╢\n"
+
+                "║ EPSG: False northing (8807)                 │ Double │ Optional
  │   (-∞ … ∞) m  │     10000.0 m ║\n" +
+                "║ OGC:  false_northing                        │        │         
  │               │               ║\n" +
+                "╚═════════════════════════════════════════════╧════════╧════════════╧═══════════════╧═══════════════╝\n",
text);
     }
 
     /**
@@ -219,21 +236,21 @@ public final strictfp class ParameterFor
                 "EPSG: Mercator (variant A) (9804)\n" +
                 "EPSG: Mercator (1SP)\n" +
                 "OGC:  Mercator_1SP\n" +
-                "╔══════════════════════════════════════╤════════╤════════════╤═══════════════╤══════════╗\n"
+
-                "║ Name                                 │ Type   │ Obligation │ Value
domain  │ Value    ║\n" +
-                "╟──────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n"
+
-                "║ EPSG: Latitude of natural origin     │ Double │ Mandatory  │ 
[-80 … 84]°  │  20.0°   ║\n" +
-                "║ OGC:  latitude_of_origin             │        │            │ 
             │          ║\n" +
-                "╟──────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n"
+
-                "║ EPSG: Longitude of natural origin    │ Double │ Mandatory  │ [-180
… 180]° │ -60.0°   ║\n" +
-                "║ OGC:  central_meridian               │        │            │ 
             │          ║\n" +
-                "╟──────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n"
+
-                "║ EPSG: Scale factor at natural origin │ Double │ Mandatory  │ 
  (0 … ∞)    │ 0.997    ║\n" +
-                "║ OGC:  scale_factor                   │        │            │ 
             │          ║\n" +
-                "╟──────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n"
+
-                "║ EPSG: False northing                 │ Double │ Optional   │ 
 (-∞ … ∞) m  │  20.0 km ║\n" +
-                "║ OGC:  false_northing                 │        │            │ 
             │          ║\n" +
-                "╚══════════════════════════════════════╧════════╧════════════╧═══════════════╧══════════╝\n",
text);
+                "╔═════════════════════════════════════════════╤════════╤════════════╤═══════════════╤══════════╗\n"
+
+                "║ Name                                        │ Type   │ Obligation
│ Value domain  │ Value    ║\n" +
+                "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n"
+
+                "║ EPSG: Latitude of natural origin (8801)     │ Double │ Mandatory
 │  [-80 … 84]°  │  20.0°   ║\n" +
+                "║ OGC:  latitude_of_origin                    │        │         
  │               │          ║\n" +
+                "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n"
+
+                "║ EPSG: Longitude of natural origin (8802)    │ Double │ Mandatory
 │ [-180 … 180]° │ -60.0°   ║\n" +
+                "║ OGC:  central_meridian                      │        │         
  │               │          ║\n" +
+                "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n"
+
+                "║ EPSG: Scale factor at natural origin (8805) │ Double │ Mandatory
 │    (0 … ∞)    │ 0.997    ║\n" +
+                "║ OGC:  scale_factor                          │        │         
  │               │          ║\n" +
+                "╟─────────────────────────────────────────────┼────────┼────────────┼───────────────┼──────────╢\n"
+
+                "║ EPSG: False northing (8807)                 │ Double │ Optional
  │   (-∞ … ∞) m  │  20.0 km ║\n" +
+                "║ OGC:  false_northing                        │        │         
  │               │          ║\n" +
+                "╚═════════════════════════════════════════════╧════════╧════════════╧═══════════════╧══════════╝\n",
text);
     }
 
     /**
@@ -254,15 +271,15 @@ public final strictfp class ParameterFor
 
         text = format.format(parameters.toArray(new IdentifiedObject[parameters.size()]));
         assertMultilinesEquals(
-                "┌────────────────────────────────┬────────────────────┐\n"
+
-                "│ EPSG                           │ OGC                │\n" +
-                "├────────────────────────────────┼────────────────────┤\n"
+
-                "│ Latitude of natural origin     │ latitude_of_origin │\n" +
-                "│ Longitude of natural origin    │ central_meridian   │\n" +
-                "│ Scale factor at natural origin │ scale_factor       │\n" +
-                "│ False easting                  │ false_easting      │\n" +
-                "│ False northing                 │ false_northing     │\n" +
-                "└────────────────────────────────┴────────────────────┘\n",
text);
+                "┌────────────┬────────────────────────────────┬────────────────────┐\n"
+
+                "│ Identifier │ EPSG                           │ OGC              
 │\n" +
+                "├────────────┼────────────────────────────────┼────────────────────┤\n"
+
+                "│ EPSG:8801  │ Latitude of natural origin     │ latitude_of_origin
│\n" +
+                "│ EPSG:8802  │ Longitude of natural origin    │ central_meridian 
 │\n" +
+                "│ EPSG:8805  │ Scale factor at natural origin │ scale_factor     
 │\n" +
+                "│ EPSG:8806  │ False easting                  │ false_easting    
 │\n" +
+                "│ EPSG:8807  │ False northing                 │ false_northing   
 │\n" +
+                "└────────────┴────────────────────────────────┴────────────────────┘\n",
text);
     }
 
     /**

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -70,6 +70,7 @@ import org.junit.BeforeClass;
     org.apache.sis.parameter.MatrixParametersAlphaNumTest.class,
     org.apache.sis.parameter.TensorValuesTest.class,
     org.apache.sis.parameter.MapProjectionParametersTest.class,
+    org.apache.sis.parameter.ParameterMarshallingTest.class,
 
     // Test transforms other than map projections.
     org.apache.sis.referencing.operation.transform.CoordinateDomainTest.class,

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Context.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Context.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Context.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Context.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -29,6 +29,7 @@ import org.apache.sis.util.logging.Warni
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.resources.Messages;
 import org.apache.sis.util.resources.IndexedResourceBundle;
+import org.apache.sis.internal.jaxb.gco.PropertyType;
 import org.apache.sis.internal.system.Semaphores;
 import org.apache.sis.internal.system.Loggers;
 import org.apache.sis.xml.MarshalContext;
@@ -37,16 +38,12 @@ import org.apache.sis.xml.ReferenceResol
 
 
 /**
- * Thread-local status of a marshalling or unmarshalling processes, also occasionally used
for other processes.
+ * Thread-local status of a marshalling or unmarshalling processes.
  * All non-static methods in this class except {@link #finish()} are implementation of public
API.
  * All static methods are internal API. Those methods expect a {@code Context} instance as
their first argument.
  * They should be though as if they were normal member methods, except that they accept {@code
null} instance
  * if no (un)marshalling is in progress.
  *
- * <p>While this class is primarily used for (un)marshalling processes, it may also
be opportunistically used
- * for other processes like {@link org.apache.sis.metadata.AbstractMetadata#equals(Object)}.
The class name is
- * only "{@code Context}" for that reason.</p>
- *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3
  * @version 0.5
@@ -120,34 +117,46 @@ public final class Context extends Marsh
      * The timezone, or {@code null} if unspecified.
      * In the later case, an implementation-default (typically UTC) timezone is used.
      */
-    private TimeZone timezone;
+    private final TimeZone timezone;
 
     /**
      * The base URL of ISO 19139 (or other standards) schemas. The valid values
      * are documented in the {@link org.apache.sis.xml.XML#SCHEMAS} property.
      */
-    private Map<String,String> schemas;
+    private final Map<String,String> schemas;
 
     /**
      * The GML version to be marshalled or unmarshalled, or {@code null} if unspecified.
      * If null, than the latest version is assumed.
      */
-    private Version versionGML;
+    private final Version versionGML;
 
     /**
      * The reference resolver currently in use, or {@code null} for {@link ReferenceResolver#DEFAULT}.
      */
-    private ReferenceResolver resolver;
+    private final ReferenceResolver resolver;
 
     /**
      * The value converter currently in use, or {@code null} for {@link ValueConverter#DEFAULT}.
      */
-    private ValueConverter converter;
+    private final ValueConverter converter;
 
     /**
      * The object to inform about warnings, or {@code null} if none.
      */
-    private WarningListener<?> warningListener;
+    private final WarningListener<?> warningListener;
+
+    /**
+     * The {@code <gml:*PropertyType>} which is wrapping the {@code <gml:*Type>}
object to (un)marshal, or
+     * {@code null} if this information is not provided. See {@link #getWrapper(Context)}
for an example.
+     *
+     * <p>For performance reasons, this {@code wrapper} information is not provided
by default.
+     * See {@link #setWrapper(Context, PropertyType)} for more information.</p>
+     *
+     * @see #getWrapper(Context)
+     * @see #setWrapper(Context, PropertyType)
+     */
+    private PropertyType<?,?> wrapper;
 
     /**
      * The context which was previously used. This form a linked list allowing to push properties
@@ -177,6 +186,7 @@ public final class Context extends Marsh
      * @param  converter       The converter in use.
      * @param  warningListener The object to inform about warnings.
      */
+    @SuppressWarnings("ThisEscapedInObjectConstruction")
     public Context(final int                bitMasks,
                    final Locale             locale,   final TimeZone       timezone,
                    final Map<String,String> schemas,  final Version        versionGML,
@@ -191,13 +201,13 @@ public final class Context extends Marsh
         this.resolver        = resolver;
         this.converter       = converter;
         this.warningListener = warningListener;
-        previous = current();
-        CURRENT.set(this);
         if ((bitMasks & MARSHALLING) != 0) {
             if (!Semaphores.queryAndSet(Semaphores.NULL_COLLECTION)) {
                 this.bitMasks |= CLEAR_SEMAPHORE;
             }
         }
+        previous = current();
+        CURRENT.set(this);
     }
 
     /**
@@ -207,16 +217,24 @@ public final class Context extends Marsh
      *
      * @see #push(Locale)
      */
+    @SuppressWarnings("ThisEscapedInObjectConstruction")
     private Context(final Context previous) {
         if (previous != null) {
-            bitMasks         = previous.bitMasks;
-            locale           = previous.locale;
-            timezone         = previous.timezone;
-            schemas          = previous.schemas;
-            versionGML       = previous.versionGML;
-            resolver         = previous.resolver;
-            converter        = previous.converter;
-            warningListener  = previous.warningListener;
+            bitMasks        = previous.bitMasks;
+            locale          = previous.locale;
+            timezone        = previous.timezone;
+            schemas         = previous.schemas;
+            versionGML      = previous.versionGML;
+            resolver        = previous.resolver;
+            converter       = previous.converter;
+            warningListener = previous.warningListener;
+        } else {
+            timezone        = null;
+            schemas         = null;
+            versionGML      = null;
+            resolver        = null;
+            converter       = null;
+            warningListener = null;
         }
         this.previous = previous;
         CURRENT.set(this);
@@ -320,6 +338,57 @@ public final class Context extends Marsh
     }
 
     /**
+     * Returns the {@code <gml:*PropertyType>} which is wrapping the {@code <gml:*Type>}
object to (un)marshal,
+     * or {@code null} if this information is not provided. The {@code <gml:*PropertyType>}
element can contains
+     * information not found in {@code <gml:*Type>} objects like XLink or UUID.
+     *
+     * <div class="note"><b>Example:</b>
+     * before unmarshalling the {@code <gml:OperationParameter>} (upper case {@code
O}) element below,
+     * {@code wrapper} will be set to the temporary object representing {@code <gml:operationParameter>}.
+     * That adapter provides important information for the SIS {@code <gml:OperationParameter>}
constructor.
+     *
+     * {@preformat xml
+     *   <gml:ParameterValue>
+     *     <gml:valueFile>http://www.opengis.org</gml:valueFile>
+     *     <gml:operationParameter>
+     *       <gml:OperationParameter>
+     *         <gml:name>A parameter of type URI</gml:name>
+     *       </gml:OperationParameter>
+     *     </gml:operationParameter>
+     *   </gml:ParameterValue>
+     * }</div>
+     *
+     * For performance reasons, this {@code wrapper} information is not provided by default.
+     * See {@link #setWrapper(Context, PropertyType)} for more information.
+     *
+     * @param  context The current context, or {@code null} if none.
+     * @return The {@code <gml:*PropertyType>} which is wrapping the {@code <gml:*Type>}
object to (un)marshal,
+     *         or {@code null} if unknown.
+     */
+    public static PropertyType<?,?> getWrapper(final Context context) {
+        return (context != null) ? context.wrapper : null;
+    }
+
+    /**
+     * Invoked by {@link PropertyType} implementations for declaring the {@code <gml:*PropertyType>}
+     * instance which is wrapping the {@code <gml:*Type>} object to (un)marshal.
+     *
+     * <p>For performance reasons, this {@code wrapper} information is not provided
by default.
+     * To get this information, the {@code PropertyType} implementation needs to define the
+     * {@code beforeUnmarshal(…)} method. For an implementation example, see
+     * {@link org.apache.sis.internal.jaxb.referencing.CC_OperationParameter}.</p>
+     *
+     * @param context The current context, or {@code null} if none.
+     * @param wrapper The {@code <gml:*PropertyType>} which is wrapping the {@code
<gml:*Type>} object to (un)marshal,
+     *                or {@code null} if unknown.
+     */
+    public static void setWrapper(final Context context, final PropertyType<?,?> wrapper)
{
+        if (context != null) {
+            context.wrapper = wrapper;
+        }
+    }
+
+    /**
      * Returns {@code true} if the GML version is equals or newer than the specified version.
      * If no GML version were specified, then this method returns {@code true}, i.e. newest
      * version is assumed.

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Distance.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Distance.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Distance.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Distance.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -19,6 +19,7 @@ package org.apache.sis.internal.jaxb.gco
 import javax.measure.unit.SI;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.adapters.XmlAdapter;
+import org.apache.sis.internal.jaxb.gml.Measure;
 
 
 /**

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Measure.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Measure.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Measure.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Measure.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -19,6 +19,7 @@ package org.apache.sis.internal.jaxb.gco
 import javax.measure.unit.SI;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.adapters.XmlAdapter;
+import org.apache.sis.internal.jaxb.gml.Measure;
 
 
 /**

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -50,7 +50,7 @@ import org.apache.sis.util.iso.SimpleInt
  *   </CI_ResponsibleParty>
  * }
  *
- * The {@code </CI_Contact>} level is not really necessary, and JAXB is not designed
for inserting
+ * The {@code <CI_Contact>} level is not really necessary, and JAXB is not designed
for inserting
  * such level since it is not the usual way to write XML. In order to get this output with
JAXB,
  * we have to wrap metadata object in an additional object. So each {@code PropertyType}
subclass
  * is both a JAXB adapter and a wrapper. We have merged those functionalities in order to
avoid

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/UnitAdapter.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/UnitAdapter.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/UnitAdapter.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/UnitAdapter.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -19,6 +19,7 @@ package org.apache.sis.internal.jaxb.gco
 import javax.measure.unit.Unit;
 import javax.xml.bind.annotation.adapters.XmlAdapter;
 import org.apache.sis.internal.jaxb.Context;
+import org.apache.sis.internal.jaxb.gml.Measure;
 import org.apache.sis.internal.util.PatchedUnitFormat;
 
 

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/Utilities.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/Utilities.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/Utilities.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/Utilities.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -76,6 +76,7 @@ public final class Utilities extends Sta
             final String text, final String accepted, final boolean toLowerCase)
     {
         boolean added = false;
+        boolean toUpperCase = false;
         if (text != null) {
             for (int i=0; i<text.length();) {
                 final int c = text.codePointAt(i);
@@ -86,8 +87,12 @@ public final class Utilities extends Sta
                     if (!isFirst && !added && separator != 0) {
                         appendTo.append(separator);
                     }
-                    appendTo.appendCodePoint(toLowerCase ? Character.toLowerCase(c) : c);
+                    appendTo.appendCodePoint(toLowerCase ? Character.toLowerCase(c) :
+                                             toUpperCase ? Character.toUpperCase(c) : c);
                     added = true;
+                    toUpperCase = false;
+                } else {
+                    toUpperCase = true;
                 }
                 i += Character.charCount(c);
             }

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -208,7 +208,7 @@ public class NumberRange<E extends Numbe
         if (Float.isNaN(value)) {
             throw new IllegalArgumentException(Errors.format(Errors.Keys.NotANumber_1, name));
         }
-        return (value != infinity) ? Float.valueOf(value) : null;
+        return (value != infinity) ? value : null;
     }
 
     /**

Modified: sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java?rev=1697309&r1=1697308&r2=1697309&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java
[UTF-8] Mon Aug 24 03:33:52 2015
@@ -141,10 +141,10 @@ import org.junit.BeforeClass;
     org.apache.sis.internal.jaxb.IdentifierMapAdapterTest.class,
     org.apache.sis.internal.jaxb.IdentifierMapWithSpecialCasesTest.class,
     org.apache.sis.internal.jaxb.gco.StringAdapterTest.class,
-    org.apache.sis.internal.jaxb.gco.MeasureTest.class,
     org.apache.sis.internal.jaxb.gco.PropertyTypeTest.class,
     org.apache.sis.internal.jaxb.gmd.LanguageCodeTest.class,
     org.apache.sis.internal.jaxb.gml.TimePeriodTest.class,
+    org.apache.sis.internal.jaxb.gml.MeasureTest.class,
     org.apache.sis.util.iso.NameMarshallingTest.class
 })
 public final strictfp class UtilityTestSuite extends TestSuite {



Mime
View raw message