-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move to jsr363 dependencies #1834
Conversation
|
Thank you, I will continue here for a bit... |
And start of manually fixing compile errors
modules/library/referencing/pom.xml
Outdated
| <dependency> | ||
| <groupId>si.uom</groupId> | ||
| <artifactId>systems-common</artifactId> | ||
| <version>0.7.2</version> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should get this from dependency management
|
So I am running into trouble with gt-coverage which makes use of JSCR-275 Measure: With Measure<V,Q extends Quantity>
Examples provided for:
I cannot seem to find a similar JSR-363 representation. Further research shows:
|
|
Too big, cannot finish it today. I'll try to resume tomorrow (already set various comments in the review, but it's not complete) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looks good, most of the changes are mechanic search and replace. Found some duplicated code and have some questions.
| @@ -14,7 +15,8 @@ | |||
| @Test | |||
| public void testRoundTripPoint() throws Exception { | |||
| PointSymbolizer sym = (PointSymbolizer) parse("example-pointsymbolizer-local-uom.xml"); | |||
| assertEquals(NonSI.PIXEL, sym.getUnitOfMeasure()); | |||
| assertEquals("pixel", Units.toName( sym.getUnitOfMeasure() )); | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So there is no constant for pixels? What's the deal here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a new Units.PIXEL, would be nice if it was used consistently
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Strangely we did find a PIXEL constant, as a unit of information measuring 4 bytes :)
| @@ -1317,7 +1317,7 @@ public void testSymbolizerUoMPixel() throws Exception { | |||
| public void testSymbolizerUoMOther() throws Exception { | |||
| PointSymbolizer p = CommonFactoryFinder.getStyleFactory().createPointSymbolizer(); | |||
| FeatureTypeStyle fts = fts(p); | |||
| p.setUnitOfMeasure(NonSI.LIGHT_YEAR); | |||
| p.setUnitOfMeasure(NonSI.ASTRONOMICAL_UNIT); | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if relevant in the context of the test, but an "astronomical unit" is not a light year: https://en.wikipedia.org/wiki/Astronomical_unit
| @@ -970,13 +979,15 @@ private void parseUnit(Unit<?> unit, int model,GeoTiffIIOMetadataEncoder metadat | |||
| default: | |||
| throw new IllegalStateException("Unable to map model "+model+" for this unit"); | |||
| } | |||
| if(unit.equals(SI.METER)){ | |||
| unit = Units.autoCorrect(unit); // auto-correct DEGREE_ANGLE and FOOT_SURVEY | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like a workaround. Is there any guidance of where this should be used? I see it applied in various places, seems like "ah hoc", "if it breaks then I'll add it" style.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are correct, so far it has just added it when running into accuracy differences that prevented "matching" units from being recognized as such.
Perhaps Units.toCanonicalUnit(Unit) would be more appropriate.
| format.label(Units.PIXEL, "pixel"); | ||
|
|
||
| format.label(tec.uom.se.unit.Units.KELVIN, "kelvin"); | ||
| //format.alias(tec.uom.se.unit.Units.KELVIN, "kelvin"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leftover commented out code
| } | ||
| if (!AbstractUnit.ONE.equals(unit)) { | ||
| // or SI.RADIAN | ||
| converter = ((Unit<Angle>) unit).getConverterTo(NonSI.SECOND_ANGLE); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Confused, base was RADIAN and now it has become SECOND_ANGLE?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Base was compatible with radian, was not necessarirly radian. Still I will run test cases again and see if I can make the code more clear
| @@ -38,7 +41,7 @@ | |||
| .getLogger(SpeedConverter.class); | |||
|
|
|||
| /** UCUM_FORMAT_INSTANCE */ | |||
| private static final UnitFormat UCUM_FORMAT_INSTANCE = UnitFormat.getUCUMInstance(); | |||
| //private static final UnitFormat UCUM_FORMAT_INSTANCE = UCUMFormat.getInstance(Variant.CASE_INSENSITIVE); | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leftover commented out block
| @Override | ||
| public <N extends Number & Comparable<? super N>> MeasurementRange<N> castTo(Class<N> type) { | ||
| return (MeasurementRange) damnJava5(this, type); | ||
| return (MeasurementRange<N>) this; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LOL, this old method made me laugh quite a bit :-)
| if (converter.equals(UnitConverter.IDENTITY)) { | ||
| UnitConverter converter; | ||
| try { | ||
| converter = units.getConverterToAny(targetUnits); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bit confused, there is a getConverterTo method in Units that seems to be already doing the same job as this try catch, or not? https://github.com/unitsofmeasurement/unit-api/blob/master/src/main/java/javax/measure/Unit.java#L184
Btw, seen this block repeated somewhere else too (GeneralEnvelope for example), actually, in many places where getConverterToAny is used. If getConverterTo cannot be used for some reason, probably best to factor it out in Units?
| final Unit<?> unit = axis.getUnit(); | ||
| try { | ||
| if (AxisDirection.EAST.equals(direction)) { | ||
| longitudeAxis = i; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent formatting, why the extra new lines here and not in the other blocks?
| label(unit, name); | ||
| } | ||
| } | ||
| java.lang.reflect.Field nameToUnitField = DefaultFormat.class |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is... unavoidable but bad. Was a improvement request filed against the implementation to make DefaultFormat/SimpleUnitFormat clonable (maybe by copy constructor) to allow building variants of it without resorting to reflection in the future?
|
One thing that would be useful for all other devs that were not involved in the sprint is a short guide of how to do things past migration. Most of the info seems to be contained in the proposal, but would be have a table and maybe some indication about the usage of the "magic" autocorrect method (when to use it). |
…t SimpleUnitFormat which ensures that Geotools custom units are correctly registered. Adapt GeoToolsUnitFormat accordingly
|
I've committed some additional fixes, but I there are some fundamental issues (in addition to the minor corrections pointed by @aaime in the review) which IMHO should be solved before merging (or at least they should be considered when approving the migration). Unfortunately I will not be able to invest more time in this JSR363 migration (I've already spent quite a lot), so I've taken some time to explain the issues and I've also outlined 2 different solutions to avoid them (one of them is implemented in a new subbranch, see details below). The root of the problem: the old JSR275 library was able to identify equivalent unit definitions in the equals method, while the new one is not able to do so when the units to compare are defined using different converter classes (e.g. RationalConverter vs MultiplyConverter). This different behaviour has an impact at least in the following Geotools use cases, potentially causing regressions:
// old lib: returns 1.0
NonSI.DEGREE_ANGLE.getConverterTo(SI.RADIAN.times(0.0174532925199433)).convert(1.0)
// new lib: returns 0.9999999999999998
NonSI.DEGREE_ANGLE.getConverterTo(SI.RADIAN.multiply(0.0174532925199433)).convert(1.0)
// old lib: returns 23.0
NonSI.DEGREE_ANGLE.getConverterTo(SI.RADIAN.times(0.0174532925199433)).convert(23.0)
// new lib: returns 22.999999999999993
NonSI.DEGREE_ANGLE.getConverterTo(SI.RADIAN.multiply(0.0174532925199433)).convert(23.0)The behaviour of the new implementation can't be considered incorrect (it is more precise), but Geotools is not expecting this behaviour and it will produce different results and even errors in some situations. In order to mitigate these issues, Units.autocorrect method was introduced, which tries to replace the provided unit by another well-known unit. This is done case by case (currently only for 2 units), so it mitigates the problem but does not prevent it to happen for other units that have not been considered in autocorrect. We can envisage a full solution to these issues using one of the following approaches:
Finally, note that some small differences will remain compared with the JSR275 implementation:
I hope this information is useful to take a decision for next steps. |
…ethod which mimics JSR275 behaviour
|
Hi again, I've finally done a last try and implemented an approach similar to the second solution outlined above. Basically, it consists on replacing the existing autocorrect method by a more generic one which mimics behaviour of the old JSR275 library. I also tried to use autocorrect only where necessary (for units instantiation), so I removed it from some places. I am quite satisfied with the result, so I've committed it to this branch. It compiles and passes tests. I believe that now only @aaime comments needs to be tackled to get the PR ready for merging. I've written some documentation regarding units usage, which might be added to the proposal: JSR363 Units HOWTOGetting Unit instancesIf you know the unit to use at compile time, use one of the Unit instances defined as static variables in If you need to define new Units at runtime, it is important to immediately try to convert the new unit to one of the existing instances using // the result should be NonSI.DEGREE_ANGLE:
Unit<?> deg = Units.autoCorrect(SI.RADIAN.multiply(0.0174532925199433));Unit<?> halfMetre = SI.METRE.divide(2);
// the result should be SI.METRE
Unit<?> stupidUnit = Units.autocorrect(halfMetre.multiply(4).divide(2));public <T extends Quantity<T>> Unit<T> deriveUnit(Unit<T> baseUnit, double factor) {
return Units.autocorrect(baseUnit.multiply(factor);)
}Use a specific Unit<Length> halfMetre = SI.METRE.divide(2);
Unit<Length> stupidUnit = Units.autocorrect(halfMetre.multiply(4).divide(2));Formatting unitsUse Unit<?> unit = ...
System.out.println(Units.toName(unit)):// prints "Litre"
System.out.println(Units.toName(SI.LITRE))
// prints "l"
System.out.println(Units.getDefaultFormat().format(SI.LITRE))
// Most units don't define a name, so it does not make a difference
// prints "m"
System.out.println(Units.toName(SI.METRE))
// prints "m"
System.out.println(Units.getDefaultFormat().format(SI.METRE))There are specific formatters for EPSG and ESRI dialects (although they are not public classes, they are used by WKT Converting unitsIf the unit Quantity type is known, use the type-safe getConverterTo() method: Unit<Angle> unit = ...
UnitConverter converter = unit.getConverterTo(SI.RADIAN);
double convertedQuantity = converter.convert(3.1415);If the Quantity type is undefined, use the convenience method Unit<?> unit = ...
UnitConverter converter = Units.getConverterToAny(unit, SI.RADIAN);
double convertedQuantity = converter.convert(3.1415); |
|
On Tue, Apr 17, 2018 at 12:04 PM, Cesar Martinez Izquierdo < ***@***.***> wrote:
Hi @jodygarnett <https://github.com/jodygarnett> @aaime
<https://github.com/aaime>
I've committed some additiona fixes, but I there are some fundamental
issues (in addition to the minor corrections pointed by @aaime
<https://github.com/aaime> in the review) which IMHO should be solved
before merging (or at least they should be considered when approving the
migration). Unfortunately I will not be able to invest more time in this
JSR363 migration (I've already spent quite a lot), so I've taken some time
to explain the issues and I've also outlined 2 different solutions to avoid
them (one of them is implemented in a new subbranch, see details below).
The root of the problem: the old JSR275 library was able to identify
equivalent unit definitions in the equals method, while the new one is not
able to do so when the units to compare are defined using different
converter classes (e.g. RationalConverter vs MultiplyConverter).
This different behaviour has an impact at least in the following Geotools
use cases, potentially causing regresions:
1.
method CRS.lookupEpsgCode(crs, false): when trying to derive an EPSG
code from a CRS created from a non-EPSG WKT string, because the crs units
are not considered equivalent units to the ones defined in the EPSG
database and the replacement fails
Yep, this is serious, and it's going to make a sizeable amount of work I
did in this area regress, but maybe not a stopper
1. method CRS.toWKT(): when trying to format a unit. In the resulting
WKT string, units that have not been recognised will be assigned a name
based in the base unit and the conversion factor. Example using JSR-363
implementation: UNIT["m*0.3048006096012192", 0.3048006096012192], instead
of UNIT["foot_survey_us", 0.3048006096012192] using the old JSR-275 library.
This seem like a stopper, but I'm not sure, afraid it will cause issues
with shapefile/world files we generate (or else, with other systems ability
to deal with it).
1.
in any place where the getConverterTo()/getConverterToAny() method is
used: it will produce a non-Identity converter if the fromUnit and toUnit
aren't considered equivalent by the new library. This creates precision
errors as illustrated in the following examples:
// old lib: returns 1.0NonSI.DEGREE_ANGLE.getConverterTo(SI.RADIAN.times(0.0174532925199433)).convert(1.0)// new lib: returns 0.9999999999999998NonSI.DEGREE_ANGLE.getConverterTo(SI.RADIAN.multiply(0.0174532925199433)).convert(1.0)// old lib: returns 23.0NonSI.DEGREE_ANGLE.getConverterTo(SI.RADIAN.times(0.0174532925199433)).convert(23.0)// new lib: returns 22.999999999999993NonSI.DEGREE_ANGLE.getConverterTo(SI.RADIAN.multiply(0.0174532925199433)).convert(23.0)
The behaviour of the new implementation can't be considered incorrect (it
is more precise), but Geotools is not expecting this behaviour and it will
produce different results and even errors in some situations.
Unsure about this one (if it's a stopper or not)
In order to mitigate these issues, Units.autocorrect method was
introduced, which tries to replace the provided unit by another well-known
unit. This is done case by case (currently only for 2 units), so it
mitigates the problem but does not prevent it to happen for other units
that have not been condidered in autocorrect.
We can envisage a full solution to these issues using one of the following
approaches:
1.
We can't inject the old behaviour in the JSR363 implementation, but we
can implement a Units.equals(Unit unit1, Unit unit2) method which mimics
the JSR-275 behaviour and use it in key points of Geotools. In addition, we
will also override the forName method in EPSGFormat and ESRIFormat classes
to use equivalent names when available. Finally, we will provide an
Units.getConverterToAny method which provides the Identity converter if
units are considered equivalent. Note that this approach might still fail
if we have failed to identify some of the key points in which Units.equals
should be used. I've created a subbranch implementing this solution, which
compiles and passes tests (even disabling the autocorrect method), but I
find the changes quite intrusive. On the TODO list: replace all the usages
of getConverterTo()/getConverterToAny() by the
Units.getConverterToAny() method. The branch is here:
units_jsr363_equalsapproach
Interesting, I'll try to have a look
1. We can try to get one of the units defined by the new
implementation whenever we need to instantiate a unit. We would parse the
unit name to get a unit instance, then we would compare the conversion
factor of the instatiated unit with the provided provided factor. In this
way, we will not need to later check for units equivalences and we would
avoid all the mentioned issues. The will produce a side effect when we
parse a unit such UNIT["degree", 0.0174532925199433], since it will
inmediately be converted on the reference degree unit and we will loose
some information (the real conversion factor defined in the WKT). Anyway,
this is partially happening alredy in the JSR275 implementation and also in
the S1 solution, so I think it is acceptable. I find this approach cleaner
and simpler and I'm trying to implement it on a new subbranch.
Yep, agreed.
Finally, note that some small differences will remain compared with the
JSR275 implementation:
- Units may have a different label, which has some effects in
formatting. For instance, old library defined "foot_survey_us" while the
new one defines "ft_survey_us". It doesn't seem a big problem, since none
of these labels is the official one defined by the EPSG database: "US
Survey foot". In general, names seem to be ignored when parsing units. In
any case, we can override labels in Units.registerCustomUnits
(system-wide), in the EPSGFormat constructor (epsg-wide) or in the
ESRIFormat constructor (esri-wide)
Yeah, I guess it would be useful.
I am worried about the current state, as this is crossing with the
"wholesale reformat" proposal, if this does not get merged
before the reformat goes in, you'll get a landslide of conflicts.
Thankfully the reformat proposal is a "method and tool" that requires very
few manual changes, the reformat will be done on the fly
when we are ready by a tool... but I'd rather not wait for months before
applying it (I'm happy to wait a few weeks more if needed though).
Cheers
Andrea
==
GeoServer Professional Services from the experts! Visit http://goo.gl/it488V
for more information.
==
Ing. Andrea Aime
@geowolf
Technical Lead
GeoSolutions S.A.S.
Via di Montramito 3/A
55054 Massarosa (LU)
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549
http://www.geo-solutions.it
http://twitter.com/geosolutions_it
AVVERTENZE AI SENSI DEL D.Lgs. 196/2003
Le informazioni contenute in questo messaggio di posta elettronica e/o
nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
loro utilizzo è consentito esclusivamente al destinatario del messaggio,
per le finalità indicate nel messaggio stesso. Qualora riceviate questo
messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
darcene notizia via e-mail e di procedere alla distruzione del messaggio
stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
utilizzarlo per finalità diverse, costituisce comportamento contrario ai
principi dettati dal D.Lgs. 196/2003.
The information in this message and/or attachments, is intended solely for
the attention and use of the named addressee(s) and may be confidential or
proprietary in nature or covered by the provisions of privacy act
(Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
Code).Any use not in accord with its purpose, any disclosure, reproduction,
copying, distribution, or either dissemination, either whole or partial, is
strictly forbidden except previous formal approval of the named
addressee(s). If you are not the intended recipient, please contact
immediately the sender by telephone, fax or e-mail and delete the
information in this message that has been received in error. The sender
does not give any warranty or accept liability as the content, accuracy or
completeness of sent messages and accepts no responsibility for changes
made after they were sent or for other risks which arise as a result of
e-mail transmission, viruses, etc.
|
|
Thanks for they key update @dispiste, I too am quite happy with the "second approach" result. |
|
Hi, I've tackled the requested changes. I've ignored code formatting concerns (they are the result of a lost battle against configuration of Eclipse automatic format), since I understand that a global reformatting is coming soon. Maybe commit 7aba004 needs to be also reviewed, then we are ready to merge IMHO. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good, maybe missing one header.
| } catch (UnconvertibleException | IncommensurableException e) { | ||
| throw new IllegalArgumentException(e); | ||
| } | ||
| value = Units.getConverterToAny(source, unit).convert(value); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change makes sense
| @@ -218,7 +218,7 @@ public static UnitConverter getConverterToAny(Unit<?> fromUnit, Unit<?> toUnit) | |||
| try { | |||
| return fromUnit.getConverterToAny(toUnit); | |||
| } catch (UnconvertibleException | IncommensurableException e) { | |||
| throw new IllegalArgumentException(e); | |||
| throw new IllegalArgumentException("Can't convert to the candidate unit", e); | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
any chance of using the unit names or labels here so the error message is not so generic?
| .concatenate(tunit2.getSystemConverter().inverse()).convert(1.0f); | ||
| // FIXME: old JSR-275 library converted to float to compare factors to provide some tolerance | ||
| // Should we use a configurable tolerance or a smaller tolerance using doubles? | ||
| if (factor == 1.0f) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could down grade this comment to a "note" rather than a "fixme" since the code is reproducing the behaviour you intended. You are matching the old JSR-275 functionality, float just being a rather amusing way to specify a tolerance.
I am quite impressed with the generic nature of this implementation.
| @@ -0,0 +1,112 @@ | |||
| package org.geotools.referencing.wkt; | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we meed a header here?
|
I have written up your notes and the change proposal as as upgrade documentation. This is now ready to merge in conjunction with geoserver/geoserver#2828 |
|
Okay so geoserver reports a netCDF regression: Difference between using a symbol Research: |
| @@ -880,8 +882,9 @@ private void initRange() { | |||
| for (UnitCharReplacement replacement: UNIT_CHARS_REPLACEMENTS) { | |||
| unitString = replacement.replace(unitString); | |||
| } | |||
| unit = Unit.valueOf(unitString); | |||
| } catch (IllegalArgumentException iae) { | |||
| unit = SimpleUnitFormat.getInstance().parse(unitString); | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
May need to use Units.parseUnit(unitStirng) to access configured units?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In Units [1], we define "kelvin" as the label for Kelvin unit. You might want to change it to "K".
Replacing SimpleUnitFormat.getInstance().parse(unitString); by Units.parseUnit() is also a good idea, since it ensures that our units are registered on SimpleUnitFormat (Geotools units are registered during static code execution of Units class).
|
JSR363 API provides some methods in Unit interface:
However, the implementation returns null for getName() and/or getSymbol() for most units. Some examples: The toString() method relies on SimpleUnitFormat.getInstance().format() method. The SimpleUnitFormat.getInstance().format() method is based on the labels that have been registered using the label() method. If no labels have been registered, format uses getSymbol() for Therefore, from a practical point of view, I would say we only have format() method, which we can configure in the best way we decide, but that it will fallback to getSymbol() to "unconfigured" units. Therefore, I'd consider it a replacement for getSymbol() and not for getName(). Note that there are 2 main use cases for names and symbols: formatting and parsing. We can only set one label for formatting, but we can use aliases to be able to parse alternate symbols or names. |
…ress the differences between getSymbol and getName
|
Hi again @jodygarnett, I've removed kelvin label, since symbol is already defined as "K" by default, and everything compiles and passes tests (in Geotools and also in Geoserver). I've used the following command: Note that you'll need to sync the test_units_jsr363 branch with geotools master in order to successfully compile Geoserver. We can further refine formatting if needed after merging the branch in master (for instance if we eventually need a custom formatter for NetCDF). I've added a new convenience method to Units class: public static String toSymbol(Unit<?> unit)because as explained in my previous comment, we'll wish to get the symbol most of the time, since we can't declare/alter names with current implementation. If we really need to declare unit names (in addition to labels), we could create a mechanism to add names to DefaultUnitParser, then we could add a formatName() method in DefaultUnitParser and use this method in Units.toName(). |
|
rebased and merged to master |
|
Thanks @dispiste I was rebasing to master concurrently, I have picked up your commit via cherry-pick |
|
@dispiste thanks again for you hard work, build.geoserver.org is reporting success across geotools and geoserver branches. |
|
@dispiste @jodygarnett while I concur that |
|
Note also that there is another unrelated failure in the mix. The |
|
I can confirm that this test is run locally in both Maven and Eclipse and passes in both cases. |
|
@dispiste @jodygarnett I re-ran the most recent GeoServer master build on Travis CI and it passed this time, so I guess the previous failure was just a temporary Travis CI problem: https://travis-ci.org/geoserver/geoserver/builds/370120346 |
|
Thank you @jodygarnett for supporting and petting this transition, and also
@aaime and the all the rest of the team for reviewing the changes and
ensuring everything looks good.
…On 24 April 2018 at 06:51, Ben Caradoc-Davies ***@***.***> wrote:
@dispiste <https://github.com/dispiste> @jodygarnett
<https://github.com/jodygarnett> I re-ran the most recent GeoServer
master build on Travis CI and it passed this time, so I guess the previous
failure was just a temporary Travis CI problem: https://travis-ci.org/
geoserver/geoserver/builds/370120346
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1834 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ABfd3_lv6z81Kx15nm2kK4yJ9LQGeFPVks5trq9lgaJpZM4Sxnp9>
.
--
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
César Martínez Izquierdo
GIS developer
- - - - - - - - - - - - - - - - - - - -
SCOLAB: http://www.scolab.es
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
Proposal: https://github.com/geotools/geotools/wiki/Migrate-Units-to-JSR-363
https://osgeo-org.atlassian.net/browse/GEOT-5867