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 12 available

    Oct 12, 2021 - OpenCms 12 features a headless JSON API for REST content access, together with several JavaScript demo applications that show how to use it. The default "Mercury" template has been greatly improved. Template variants allow to completely switch the generated HTML of a website simply by configuration. The updated WebDAV implementation enables mounting the OpenCms virtual file system from any WebDAV client.

  • OpenCms 12 Release Notes

    Oct 12, 2021 - The OpenCms 12 release notes contain detailed information about the new features and fixes in this version.

  • Alkacon OCEE 12.0

    Oct 12, 2021 - Alkacon OCEE 12.0 is the latest OCEE release for OpenCms 12. It adds new functions for managing log files in an OpenCms cluster, as well as improvements for the accelerator and the user synchronization.

  • OpenCms Docker image

    Oct 12, 2021 - 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.