Release Notes for Lib BGS
=========================

To Do
=====

Update the classes in bgs.geophys.library.JFreeChart, bgs.geophys.library.Magnetogram
and bgs.geophys.library.Magnetogram.BLV to use a recent version of JFreeChart
and iText or alternatives to these libraries. See comments in the classes in these 
packages and in the project's pom.xml.

There are a huge number of Javadoc:Lint warnings to resolve!

Replace obsolete classes (such as "Vector")

Find modular versions of all dependencies so that the transitive dependencies for
users of this library do not include libraries that use automatic modules.

bgs.geophys.library.RealTimeData.Sdas.SdasTimeSeriesData uses a deprecated class
from the JZlib library, called ZStream. This probably needs replacing with
a class from the same library called InflaterInputStream.

Version 5.0.6
=============

Package bgs.geophys.library.Gdas.GdasCollect.Config was opened but not exported.
This has been fixed (it is now both opened and exported).


Version 5.0.1
=============

Add code to read the new "elevation" field from the GIN system table station_details.


Version 5.0.0
=============

First release under the new name lib_geomag.

Autoplot jar moved to resources and loaded as an addition to the classpath
when running as an external process. Trying to bring the Autoplot jar into
the project as a dependency (with either no specific scope, or scope set to
"test") causes the testCompile Maven phase to fail with an error of:

  bgs/geophys/library/Maths/BGSMathTest.java:[7,15] cannot access org
    R1549aadb

The main compile phase worked and the library jar was created OK, but compilation
of the test code failed. This may be something to do with split packages and the
way that Maven automates the generation of test code in a modular java project?

JarFileWriter "finalize" method was renamed to "close" and JarFileWriter now
implements AutoCloseable so that the close method can be automatically called
to release resources. The motivation for this change is the marking for removal
of the "finalize" method in Java 18.

The "finalize" method in UDPMessengerClient and UDPMessenger server has been
renamed to "close". This method is not suitable for AutoCloseable implementation -
applications using these classes will need to call the "close" method themselves
to ensure the threads associated with these objects are shut down. The threads
that these objects create are *not* background threads, so failure to close these
objects will prevent the application that uses them from exiting. The motivation 
for this change is the marking for removal of the "finalize" method in Java 18.

Removed class bgs.geophys.library.Threads.AbstractRunnable, as it did not seem to
do anything.

Removed classes bgs.geophys.library.signal.SignalFinder and 
bgs.geophys.library.signal.UserSignalHandler, also the package
bgs.geophys.library.signal. This code used an internal proprietary API
(sun.misc.Signal) that may be removed in a future Java release. It's
unlikely that the code is used anywhere, but if it is then the package
and its contents can be copied from the most recent version of the
lib_bgs project's source code. If doing this, then the line:
    requires jdk.unsupported;
Needs to be added to lib_geomag's module-info.java file.


Version 4.1.0
=============

Migrated tests from Junit 4 to Junit 5

Removed Autoplot as an explicit dependency - code using the library's Autoplot 
connector class must declare an Autoplot jar as a dependency .

Version 4.1.0 was never released as problems with the build system prevented
it from compiling properly.

Last release under the name lib_bgs.


Version 4.0.0
=============

Breaking changes
----------------

bgs.geophys.library.Threads.ClasspathAdder
    This class has been removed. The functionality it provided is difficult to 
    provide post Java 8 and not possible by Java 17.
                
bgs.geophys.library.Threads.RunClass
    New arguments have been added to the constructors. All new arguments may be 
    set to null when updating existing code
    
    Two static methods have been removed - addToProperties and removeFromProperties.
    The functionality provide by these methods is replaced by the new "properties"
    and "clear_props_on_exit" arguments to the constructors.

    All three static methods called addToClasspath have been removed. These were 
    wrappers that called bgs.geophys.library.Threads.ClasspathAdder

Removed package bgs.geophys.library.jsp. The package contained these files:
- EditableCookie.java
- HttpAuthenticate.java
- PersistantSessionBean.java
- RequestParser.java 
This code, which depends on portions of the Tomcat Servlet API, has been moved to 
the two projects which use it - GINFileUpload (RequestParser.java) and GINWebAccess
(RequestParser.java and PersistantSessionBean.java). Both of these are web service
projects. The code in HttpAuthenticate.java was incomplete and not used. The code in
EditableCookie was not used.

Removed package bgs.geophys.library.SerialPort. The package was used by applications
that have now been retired. It also depended on a library (javax.comm) that has not
been maintained for many years.

As a consequence of removing these packages, the following dependencies were also removed:
- Apache Commons FileUpload
- Apache Commons IO, 
- Servlet API from Tomcat 6.0.14
- comm version 1.0r

Explicit dependency on jfree/jcommon removed. This is a transitive dependency of 
jfreechart and so should be downloaded by Maven without an explict dependency 
statement in the POM.

           
Other changes
-------------

The lib_bgs has been modularized - module name bgs.geophys.LibBgs. This will
not affect applications using the library if they are not themselves modularized.

The RunClass code in bgs.geophys.library.Threads and the associated code in
RunClassExternal and RunClassInternal has been updated to return to its original
purpose, of running a class from the current classpath using either the current 
JVM (RunClassInternal) or another copy of the JVM (RunClassExternal). Some work
had been done on these classes to allow running of a jar file which was outside
the current classpath - this has been removed from the code in this version.

The code in bgs.geophys.library.Autoplot has been updated:
    - to work with a current version of Autoplot (v2022_2a)
    - to include Autoplot as a dependency in lib_bgs (rather than holding it as 
      a resource file that is then installed by applications).

A number of statements in the library gave compiler warnings. The simpleset of
these to resolve (e.g. boxing/unboxing of primitive types have been fixed, but
there are still a significant number to remove. Removal of the more complex
warnings requires a unit test to be in place before the issue is fixed, to
ensure that the functionality of the code is not impaired.

A number of tests have been added (mainly by reusing old debugging code that was
included, often in comments, in the main library). There are now no "main" methods 
in the main library code.

