did i write "make our code obsolete with new versions of java"? while i'm not 
generally opposed to /top posting/, this is exactly what /inline replying/ is 
for ;) just place your question under the unclear lines in the dialog below and 
everyone and me understands what you are referring too :)

..ede

On 09.08.2020 20:38, Michaud Michael wrote:
> Thanks for your detailed answer Ede,
>
> Not sure I get everything about the pom's problem, but I agree with all your 
> proposition concerning OpenJUMP evolution.
>
> One point which is not clear to me is what exactly will make our code 
> obsolete with new versions of java ? Seems that at the moment, we can write 
> java 8 code and compile it and run it with java 11 or more isn't it ?
>
> Michaël
>
>  
>
>> envoyé : 9 août 2020 à 17:40
>> de : edgar.sol...@web.de
>> à : jump-pilot-devel@lists.sourceforge.net
>> objet : [JPP-Devel] OJ 2.x Was:Re: JTS update: first experiments
>>
>>
>> hey Eric,
>>
>> welcome to the team! see my answers below
>>
>> On 07.08.2020 20:55, Eric wrote:
>>
>>> Hi all,
>>>
>>> Here are the different steps I made to try updating JTS to at least 1.15, 
>>> the last one being 1.17.
>>>
>>>
>>> The first thing I did was to install OpenJUMP (core / trunk) via SVN in my 
>>> IDE.
>>>
>>> I realised that two Maven repositories are outdated in the configuration, 
>>> Central Maven 2
>>> (http://central.maven.org/maven2) and Cambridge Maven 2 
>>> (https://maven.ch.cam.ac.uk/m2repo/).
>>>
>>> The first one could be replaced by the kind of new Maven Central 
>>> repository, used by JTS:
>>> <repository>
>>>     <id>Maven Central group</id>
>>>     <name>Maven Central group Repository</name>
>>>     <url>https://mvnrepository.com/artifact/</url>
>>> </repository>
>>>
>>> By adding this last one, it would mean that the OpenJUMP Maven repositories 
>>> aren't totally
>>> internally dependent, because otherwise they rely mostly on:
>>> http://jump-pilot.sourceforge.net/repository/
>>>
>> yeah, that's kind of a backup in case repos disappear which as you correctly 
>> determined happened since the last clean up (ages ago;)
>>
>>> Even if it is sufficient in a certain extent, I encountered some problems 
>>> this morning when
>>> I tried to import the Maven dependencies, having a joyful "Failed to 
>>> transfer [...] Error code
>>> 429, Too Many Requests". I imagine that some other services are slightly 
>>> more permissive.
>>>
>> planned to move it to the current snapshot build machine at some point, as 
>> it holds the latest and most current dependencies of course. but never 
>> needed to, so here we are.
>>
>>> Then I checked which OJ lib dependencies rely on JTS and it seems that 
>>> there is only deegree 2,
>>> without considering here the plethora of extensions/plugins.
>>>
>> which is the main obstacle. the only clean solution i see is to branch out a 
>> new OJ 2.x that initially will break compatibility to all external plugins. 
>> that's the bad news.
>> the good news is that this forces us to retouch pretty much all of them and 
>> during this effort we might eventually come up with a working plugin manager 
>> after all.
>>
>> >This is quite a good news because
>>
>>> if the deegree dependency is updated to its latest version (3.x.x), which 
>>> relies on JTS 1.15,
>>> then, theoretically, only the import statements and a few other 
>>> com.vividsolutions directly used in the code
>>> need to be modified.
>>>
>> yeah, probably not. deegree2 is afaics used primarily or exclusively for the 
>> WFS extension and i remember checking out deegree3 as a drop in for deegree2 
>> but failing miserably. that's why i stuck with deegree2 happy to have at 
>> least a working WFS extension for the time being.
>>
>> but again, we can remove WFS from core for OJ 2.x and come up with a working 
>> extension later (if at all).
>>
>>> It was therefore time to remove the current OJ JTS dependencies in the 
>>> Maven configuration
>>> and to replace them with:
>>>
>>> <dependency>
>>>     <groupId>org.locationtech.jts</groupId>
>>>     <artifactId>jts-core</artifactId>
>>>     <version>1.17.0</version>
>>> </dependency>
>>> <dependency>
>>>     <groupId>org.locationtech.jts</groupId>
>>>     <artifactId>jts-io</artifactId>
>>>     <version>1.17.0</version>
>>>     <type>pom</type>
>>> </dependency>
>>>
>>> Note that the second dependency has a pom type. Therefore, by default, it 
>>> didn't import
>>> the jts-io related code, based on the current Maven configuration. This JTS 
>>> IO pom
>>> only refers to some modules, including the one (common) containing the 
>>> GeoJSON related code
>>> (reader, writer, etc.) used in OpenJUMP. See:
>>> - (code) https://github.com/locationtech/jts/tree/master/modules/io/common
>>> - 
>>> (pom)https://repo1.maven.org/maven2/org/locationtech/jts/jts-io/1.17.0/jts-io-1.17.0.pom
>>>
>>> It was time to replace com.vividsolutions.jts. by org.locationtech.jts. 
>>> Using Eclipse as an IDE,
>>> it was a straightforward move. A quick CTRL + H did the trick in a matter 
>>> of seconds.
>>>
>>> In terms of results, it's pretty good:
>>> - it worked globally well,
>>>
>> that corresponds to my findings when trying to find a solution to the 
>> package renaming dilemma jts created in 2018. we talked about it on the ml 
>> but didn't find a solution
>> https://sourceforge.net/p/jump-pilot/mailman/jump-pilot-devel/thread/CA%2BALWNw%3DBfuQGjNLuOPgxU%2BBz7tcB5FeytomPVqFe9M5Sbh1hQ%40mail.gmail.com/#msg36283823
>> or
>> https://sourceforge.net/p/jump-pilot/mailman/search/?q=%22jts+1.15%22&limit=250&page=0&sort=posted_date%20desc
>>
>>> - the GeoJSON part (com.vividsolutions.jump.io.geojson) is problematic due 
>>> to the jts-io
>>> pom type only, but once imported, this part of the code will be functional 
>>> again,
>>>
>> how do you figure? com.vividsolutions.jump.io.geojson was written by myself 
>> from scratch utilizing google's json-simple . it holds no dependency apart 
>> from the jts geometry code. maybe myself placing it in this package has 
>> mislead you ;)
>>
>>> - some classes have been deprecated, removed, or simply moved in the new 
>>> JTS versions,
>>> such as com.vividsolutions.jts.geom.DefaultCoordinateSequenceFactory. New 
>>> interfaces
>>> have been created in JTS. It shouldn't be too complex to find a solution or 
>>> a workaround,
>>>
>> agreed
>>
>>> At that stage, most of the errors I had, were related to deegree. I tried 
>>> to import
>>> deegree-core 3 using (note the pom type again):
>>>
>> SNIP
>>
>>>  </dependencies>
>>>
>>> without much success. I also tried to use the import scope 
>>> (<scope>import</scope>)
>>> with the pom type, but as they can only be managed inside 
>>> <dependencyManagement>,
>>> which is basically used in parent poms, it didn't help much, except if the 
>>> project is reconfigured.
>>>
>>> I'm now reading some documentations about Maven and the recent changes to 
>>> see how
>>> I can tackle this "pom type" problem without the need to import all of the 
>>> submodules
>>> manually.
>>>
>> as stated above. let's skip deegree3 but rather remove WFS for the time 
>> being and focus on JTS 1.15+ instead.
>>
>>> Another aspect of the deegree 3 dependency is that deegree-core relies on a 
>>> certain
>>> number of common OJ dependencies. Here are the ones I identified:
>>> - log4j / log4j (same version in both projects: 1.2.17) -- it would be good 
>>> to upgrade
>>> to log4j 2 because there is a security problem in v1 and it isn't 
>>> maintained anymore
>>> (see http://logging.apache.org/log4j/1.2/)
>>> - org.slf4j / slf4j-api (deegree 1.7.13 vs OJ 1.7.25),
>>> - org.slf4j / slf4j-log4j12 (deegree 1.7.13 vs OJ 1.7.25),
>>> - org.locationtech.jts / jts-core (deegree 1.7.13 vs OJ 1.17 potentially 
>>> but 1.15 woud probably
>>> be OK for the time being),
>>> - xerces / xercesImpl (deegree 2.12.0 vs OJ 2.11.0),
>>> - org.postgresql / postgresql (deegree 42.2.8 vs OJ 9.4.1208.jre6),
>>> - org.apache.xmlgraphics / batik-awt-util (deegree 1.7 vs OJ 1.13), just 
>>> updated on the OJ
>>> side a couple of days ago,
>>> - same with org.apache.xmlgraphics / batik-dom,
>>> - junit / junit (same version in both projects: 1.12),
>>> - commons-codec / commons-codec (deegree 1.7 vs OJ 1.14),
>>> - commons-io / commons-io (deegree 2.4 vs OJ 2.6),
>>> - org.apache.commons / commons-lang3 (deegree 3.7 vs OJ 3.10),
>>> - it.geosolutions.imageio-ext / imageio-ext-utilities (deegree 1.1.9 vs OJ 
>>> 1.1.16),
>>> - it.geosolutions.imageio-ext / imageio-ext-tiff (deegree 1.1.9 vs OJ 
>>> 1.1.13).
>>>
>> mostly deegree3 issues that disappear if deegree3 is not needed
>>
>>> Once these problems of imports are solved, the JTS update should be 
>>> relatively
>>> straightforward, and some work will probably be needed to update the code
>>> based on deegree. I tried to update one of my plugins, it took me seconds
>>> to do it, and I know that it would be exactly the same for the others, just 
>>> by
>>> replacing com.vividsolutions.jts by org.locationtech.jts.
>>>
>> sure. problem is not the port but gathering all plugin sources, setting up 
>> build env, porting and releasing the new modification for each and everyone. 
>> on the other hand, there is no alternative since locationtech forced our 
>> hand ;)
>>
>>> It generally should be relatively simple to update all the 
>>> extensions/plugins if they
>>> don't rely on a dependency itself depending on JTS, like deegree for 
>>> example.
>>>
>>> Finally, I share this link to an interesting deegree wiki page i found 
>>> (Java 11 support):
>>> https://github.com/deegree/deegree3/wiki/Java-SE-11-Support
>>>
>> pretty much sums up the challenges we face as well. thanks for the link!
>>
>>> That's all for now.
>>>
>>> Ede, or anyone, if you know the solution to these pom type dependencies, 
>>> thanks to
>>> let me know.
>>>
>> my maven-fu pretty much is compiled in the OJ pom. never needed it before or 
>> setting up the snapshot/release profiles. so you are on your own there. had 
>> to figure out some Ant for some finetuning but that's it. but it's pretty 
>> well documented, so we will get it into shape if something has to be changed.
>>
>> going forward i'd suggest you (Eric)
>> 1. work with the stable OJ 1.15 check out
>> 2. remove WFS, here is the adding commit from 2014
>> https://sourceforge.net/p/jump-pilot/code/4219/
>> essentially it is the package 'de.latlon.deejump.wfs'
>> 3. fixup a running port to JTS 1.15+
>>
>> if that worked out you may holler and we can decide how to proceed. i could 
>> imagine
>> 1. doing a "final" OJ 1.16 release only updated on critical issues
>> 2. announcing and moving development focus over to OJ 2.x
>> 3. branch OJ 2.x dev from the OJ 1.16 and apply the changes researched by 
>> Eric
>> 3. extension fixup, extension fixup, ...
>>
>> bonusbonusbonus
>> b1. maybe even finally porting the svn repo to git (to attract more 
>> comitters and make it easier to apply contributions), what's important to me 
>> here is to keep our commit history so we can still retrace changes after 
>> years and find out why they were done this way by the commit messages or by 
>> whom to ask them
>> b2. tackling java's module system jigsaw, as classpath based loading looks 
>> like to become a thing of the past
>>
>> so far, so hot ..ede
>>
>> ps. "how hard can it be?" :) - https://dilbert.com/strip/2020-08-07
>>
>>
>> _______________________________________________
>> Jump-pilot-devel mailing list
>> Jump-pilot-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>
>
>
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>



_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to