Updating OpenCms 3rd party libraries

The goal of this project was to update all 3rd partry libraries to their recent version and get rid of the patched commons-email.jar.

Performed changes

  • Originally, an alpha version of the Apache library Commons Email was adopted by OpenCms developers to OpenCms specific needs. With the official release of the version 1.0 of the Commons Email library, Apache developers had changed (of course amongst others) the signatures of crucial methods and also the exception concept. All Exceptions had to be changed from their respective javax.mail.MessagingException (including its subclasses) counterparts to the org.apache.commons.mail.EmailException of the Commons Email project. For this reason, with the update to the latest version of the commons-email.jar a few OpenCms classes needed to get refactored. This resulted in changes of the following classes:
    • org.opencms.mail.CmsHtmlJava
    • org.opencms.mail.CmsMailTransport
    • org.opencms.mail.CmsMultiPartMail
    • org.opencms.mail.CmsSimpleMail
    • org.opencms.mail.Messages
    • org.opencms.newsletter.CmsNewsletter
    • org.opencms.notification.A_CmsNotification
    • org.opencms.notification.CmsNotificaitonCandidates
    • org.opencms.frontend.templateone.CmsTemplateFormLetter
    • org.opencms.frontend.templateone.CmsTemplateFormRecommend
    • org.opencms.workplace.tools.workplace.broadcast. CmsMessageInfo
    Furthermore, a new entry was added to the property file org.opencms.mail.messages.properties.
    Two more classes were created to be able to test the mail functionality:
    • org.opencms.mail.AllTests
    • org.opencms.mail.TestCmsMail
    For further information regarding the Unit-Tests please consult the JUnit description.
  • The behaviour of the method ConvertUtils#convert(String) of commons-beanutils changed so it returned an empty String ("") instead of null if null was passed in as an argument. This resulted in a small change in the class org.opencms.configuration.CmsSetNextRule#end(String,String) (see patch for details)
  • The update of quartz to version 1.6.0 added a method to the interface org.quartz.spi.ThreadPool which is implemented by org.opencms.scheduler.CmsSchedulerThreadPool. This method has been implemented (see patch for details)
  • The update of quartz required adding jta-1.0.1b.jar to the libraries

Problems & future tasks

  • POI although out of date was not updated because some test cases fail if the libs are replaced. This needs further investigation.
  • Build a complete distribution and test it with a variety of modules
  • Send modifications to dumbster upstream
  • PDFBox version update broke tast cases. This needs further investigations.
  • TextMining version update broke test cases. This needs further investigations.
  • The JDBC drivers weren't tasked in lack of the respective database servers. The following drivers need testing:
    • MySQL 5
    • PostgreSQL
    • MSSQL
    • Oracle

Results

Latest News

  • OpenCms 17 available

    Apr 9, 2024 - OpenCms 17 gives content managers the new app "Date search" to find content that has been changed in a certain time range. The "Websites" app allows to easily export the content of a complete site for archiving. An option has been added to hide "sensitive" content in the Offline project. The default Mercury template has been further improved, e.g. with SEO optimized job postings, a "spacer" function and marker clusters for maps. OpenCms 17 has also been tested and certified using Java 17 LTS and 21 LTS.

  • OpenCms 17 Release Notes

    Apr 9, 2024 - The OpenCms 17 release notes contain detailed information about the new features and fixes in this version.

  • Alkacon OCEE 17

    Apr 9, 2024 - Alkacon OCEE 17 is the latest OCEE release for OpenCms 17. This version improves the cluster shutdown behaviour when using the CmsShell.

  • OpenCms Docker image

    Apr 9, 2024 - Test OpenCms using the official image from the Docker hub registry - the fastest way to evaluate and test OpenCms. The image is well suited for evaluation and test purposes of the latest OpenCms release. We provide a docker-compose file to get OpenCms and the database running with just one command.