Martin Desruisseaux wrote: > Jody Garnett a écrit : > >> Changing Utilities.equals( obj, obj ) to do reflection on arrays has >> helped matters to the point that shapefile renderer tests pass. Woots! >> > As of revision 28180, I reverted back Utilities.equals(...) to its old > implementation and renamed the new implementation as > Utilities.deepEquals(...). > So is the freeze still on? > I did a search on the whole code base and tried to invoke 'deepEquals' only > for > those who may need it. They are: > > modules/library/main/src/main/java/org/geotools/styling/LayerFeatureConstraintsImpl.java > modules/library/main/src/main/java/org/geotools/styling/FeatureTypeConstraintImpl.java > modules/library/main/src/main/java/org/geotools/styling/GraphicImpl.java > modules/library/main/src/main/java/org/geotools/styling/StrokeImpl.java > modules/library/main/src/main/java/org/geotools/feature/GeometryAttributeImpl.java > modules/library/main/src/main/java/org/geotools/feature/type/AttributeDescriptorImpl.java > modules/library/main/src/main/java/org/geotools/feature/PropertyImpl.java > modules/unsupported/community-schemas/fm/src/main/java/org/geotools/feature/iso/AttributeImpl.java > > Doing reflection on array was an overkill for the large majority of the > hundred > of Utilities.equals(...) invocations in the GeoTools code base (some of them > in > loops) - with performance impact. > Thanks Martin; I really wanted a review (in particular to keep Andreas performance numbers from heading down). > Rules for choosing a 'equals'/'deepEquals' method: > -------------------------------------------------- > > * If *both* objects are exactly Object[] (not anything else like String[]), > you may consider java.util.Arrays.deepEquals(...) - except if you know > that the array element can never be other arrays. > > * Otherwise if both objects are array of the same kind (e.g. Expression[], > String[], int[], etc.), uses java.util.Arrays.equals(...). This is valid > for array of primitive type too. > > * Otherwise if both objects are anything else than Object (e.g. String, > Expression, etc.), use Utilities.equals(...). Using 'deepEquals' would > be an overkill since there is no chance that String or Expression could > be an array. > > * Otherwise if *both* objects are declared exactly as Object type and you > know that they could be arrays, only then invoke Utilities.deepEquals. > > Better slam those instructions into the developers guide :-) Or are the javadocs really clear ... Jody
------------------------------------------------------------------------- SF.Net email is sponsored by: The Future of Linux Business White Paper from Novell. From the desktop to the data center, Linux is going mainstream. Let it simplify your IT future. http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 _______________________________________________ Geotools-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geotools-devel
