[Geoserver-devel] [jira] Created: (GEOS-3701) java.lang.ClassCastException throwed by org.geoserver.config.util.XStreamPersister while saving a layer with "java.lang.Short" bondary values

java.lang.ClassCastException throwed by org.geoserver.config.util.XStreamPersister while saving a layer with "java.lang.Short" bondary values
---------------------------------------------------------------------------------------------------------------------------------------------

                 Key: GEOS-3701
                 URL: http://jira.codehaus.org/browse/GEOS-3701
             Project: GeoServer
          Issue Type: Bug
          Components: Configuration
    Affects Versions: 2.0.0
         Environment: Windows Vista x64. Sun Java Development Kit 1.6.0 Update 16 32 bits + JAI for Windows x86 32 bits + JBoss Application Server 4.2.3. Geoserver 2.0.0 Web War Version.
            Reporter: Rodolfo Rothganger
            Assignee: Justin Deoliveira
             Fix For: 2.0.1

While tring to register a layer mapped to a GeoTopp 30 data store (bounded to -60, -60, -20, -10) with SRS EPSG:4326), the following error is generated:

java.lang.ClassException: cannot convert java.lang.Short to java.lang.Double

I´ve mapped the problem to the following lines of codes on class "org.geoserver.config.util.XStreamPersister" (lines 957 to 972):

             if ( Double.isInfinite( ((Double)range.getMinValue()).doubleValue() ) ) {
                context.convertAnother( "-inf" );
            }
            else {
                context.convertAnother( range.getMinValue() );
            }
            writer.endNode();
            
            writer.startNode("max");
            if ( Double.isInfinite( ((Double)range.getMaxValue()).doubleValue() )) {
                context.convertAnother( "inf");
            }
            else {
                context.convertAnother( range.getMaxValue() );
            }
            writer.endNode();

Fixed the problem with the code change bellow:

  if ( Double.isInfinite( ((Number)range.getMinValue()).doubleValue() ) ) {
                context.convertAnother( "-inf" );
            }
            else {
                context.convertAnother( range.getMinValue() );
            }
            writer.endNode();
            
            writer.startNode("max");
            if ( Double.isInfinite( ((Number)range.getMaxValue()).doubleValue() )) {
                context.convertAnother( "inf");
            }
            else {
                context.convertAnother( range.getMaxValue() );
            }
            writer.endNode();

Although the change worked, I am not sure that is the best fix. I believe somechanges related to the use of Generics on the class NumberRange (and not the raw type) would solve the problem. Perhaps on line 954, something like: NumberRange<? extends Number> range = NumberRange(? extends Number) original.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira