Skip to content

Releases: JeffersonLab/smoothness

v5.2.0

11 Jun 13:23

Choose a tag to compare

  • Bump JLab Keycloak to v2.6.0
  • Bump JLab Wildfly to v3.0.1
  • devcontainer cleanup

Full Changelog: v5.1.0...v5.2.0

v5.1.0

22 Jan 17:09

Choose a tag to compare

What's Changed

Full Changelog: v5.0.2...v5.1.0

v5.0.2

18 Sep 18:53

Choose a tag to compare

Full Changelog: v5.0.1...v5.0.2

Full Changelog: v5.0.1...v5.0.2

v5.0.1

11 Sep 15:31

Choose a tag to compare

What's Changed

Migration Note:

Search and replace http://java.sun.com/jsp/jstl/ with jakarta.tags.

Also, replaced smoothness URI http://jlab.org/smoothness with simply jlab.tags.smoothness to follow spirit of Jakarta tag URI change. Do a search and replace.

Finally, update your web.xml to indicate Servlet 6. Should look like:

<web-app version="6.0"
         xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd">

Full Changelog: v5.0.0...v5.0.1

v5.0.0

09 Sep 19:34

Choose a tag to compare

What's Changed

  • Build for Wildfly v37 (Jakarta EE 10) by @slominskir in #51
  • Bump org.apache.poi:poi-ooxml from 5.2.3 to 5.4.0 in the gradle group across 1 directory by @dependabot[bot] in #49

Migration Notes

This is a major backwards incompatible release in that the lib is jumping from Java EE 8 to Jakarta EE 10. In particular:

  1. Most javax.* classes are moved to package jakarta.*. Search and replace your source files.
  2. Update your build.gradle file to replace javax package dependencies with jakarta equivalents. See demo app build.gradle.
  3. Update your Dockerfile to use v2.2.0 of JeffersonLab/wildfly image.
  4. Remove <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect"/> from src/main/resources/META-INF/persistence.xml

Full Changelog: v4.13.1...v5.0.0

v4.13.1

18 Aug 17:21

Choose a tag to compare

  • Bump Gradle to v9
  • Use JDK21 compiled to Java 17 bytecode
  • Use new Maven Central API as released in java-workflows v2.4.0

Full Changelog: v4.13.0...v4.13.1

v4.13.0

02 Jun 19:04

Choose a tag to compare

  • Improved Exception Handling
    • Don't log 400 Bad Request Stack Trace

Migration Notes

In web.xml replace:

    <error-page>
        <error-code>500</error-code>
        <location>/error</location>
    </error-page>
    <error-page>
        <error-code>404</error-code>
        <location>/error</location>
    </error-page>
    <error-page>
        <exception-type>java.lang.Throwable</exception-type>
        <location>/error</location>
    </error-page>

with:

    <error-page>
        <location>/error</location>
    </error-page>

Wrap URL Parameter Conversion/Validation with separate try/catch and send status 400 on error. On GET use:

      response.sendError(HttpServletResponse.SC_BAD_REQUEST);
      return;

On POST often returning JSON (avoid HTML Error page) so use:

      errorReason = "Bad Request";
      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);

Full Changelog: v4.12.2...v4.13.0

v4.12.2

28 Apr 18:46

Choose a tag to compare

  • Bug Fix: Regression preventing authenticated users from editing fixed.

Full Changelog: v4.12.1...v4.12.2

v4.12.1

28 Apr 18:19

Choose a tag to compare

  • Bug Fix: getMemberUsernameCsv now returns more than the first result, plus is now sorted for consistent repeatibility

Full Changelog: v4.12.0...v4.12.1

v4.12.0

28 Apr 13:03

Choose a tag to compare

What's Changed

  • IpReadFilter by @slominskir in #46
  • Set break-word on Settings columns (#45)
  • Refresh Cache Settings before calling ChangeAction
  • Format Settings page
  • Show admins in Help page if logged in
  • Smoothness lib version now read from build
  • Help page config now comes from Settings instead of env
  • Notifications config now comes from Settings instead of env
  • Email config now comes from Settings instead of env

Oracle DB Migration Notes

-- OPTIONAL: IP READ FILTER (ACL)
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('IP_READ_FILTER_ENABLED', 'N', 'BOOLEAN', 'Whether to enable IP filtering of pages requiring auth to view.  You must redeploy the app for this setting change to take effect.', 'ACL', 1);
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT, CHANGE_ACTION_JNDI) values ('IP_READ_ALLOWLIST_PATTERN', '127\.0.*', 'STRING', 'Java REGEX Pattern of allowed IPs for unauthenticated access to view IpReadFilter pages', 'ACL', 2, 'java:global/sim/IpReadAllowlistReconfigureService');
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('IP_READ_URL_PATTERN', '/*', 'STRING', 'URL patterns to match when applying the IP Read Filter.  You must redeploy the app for this setting change to take effect.', 'ACL', 3);

-- OPTIONAL: Notification Banner
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('NOTIFICATION_ENABLED', 'Y', 'BOOLEAN', 'Notification banner enabled', 'NOTIFICATION', 1);
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('NOTIFICATION_MESSAGE', 'Development Environment', 'STRING', 'Notification message', 'NOTIFICATION', 2);
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('NOTIFICATION_LINK_NAME', 'Home', 'STRING', 'Notification link name', 'NOTIFICATION', 3);
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('NOTIFICATION_LINK_URL', 'https://github.com/JeffersonLab/smoothness', 'STRING', 'Notification link URL', 'NOTIFICATION', 4);

-- OPTIONAL: Help Page
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('HELP_CONTENT_CONTACT', 'John Doe (jdoe)', 'STRING', 'Content Contact for help page', 'HELP', 1);
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('HELP_TECHNICAL_CONTACT', 'John Doe (jdoe)', 'STRING', 'Technical Contact for help page', 'HELP', 2);
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('HELP_DOC_CSV', 'https://github.com/JeffersonLab/smoothness|Home', 'CSV', 'CSV of documentation items where each item is a URL and a Label separated with the pipe symbol', 'HELP', 3);

-- OPTIONAL: Email
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('EMAIL_ENABLED', 'Y', 'BOOLEAN', 'Emails (including Help/Feedback) enabled', 'EMAIL', 1);
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('EMAIL_TESTING_ENABLED', 'N', 'BOOLEAN', 'Send all emails to testlead user group', 'EMAIL', 2);
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('EMAIL_DOMAIN_NAME', '@jlab.org', 'STRING', 'The email domain to append to usernames, starting with and including the ampersat.', 'EMAIL', 3);
insert into SETTING (KEY, VALUE, TYPE, DESCRIPTION, TAG, WEIGHT) values ('EMAIL_SENDER_ADDRESS', 'smoothness@jlab.org', 'STRING', 'Email address to use as sender from emails generated in this app.  Note: this is not the same as "from".', 'EMAIL', 4);

-- rename key
update SETTING set KEY = 'SMOOTHNESS_CDN_ENABLED' where key = 'SMOOTHNESS_CDN';

-- remove key
delete from SETTING where KEY = 'SMOOTHNESS_VERSION';

web.xml changes

Add:

    <context-param>
        <param-name>smoothnessVersion</param-name>
        <param-value>@SMOOTHNESS_VERSION@</param-value>
        <description>Needed if you enable CDN.  Set once in build.gradle.</description>
    </context-param>
    <listener>
        <listener-class>org.jlab.smoothness.presentation.util.SettingsCacheInit</listener-class>
        <description>We don't use @WebListener because we want this listener to be first in case others use DB Setting Cache</description>
    </listener>

build.gradle changes

Add:

ext.smoothnessVersion = '4.12.0'
...
    implementation "org.jlab:smoothness-weblib:${smoothnessVersion}"
...
        filter {
            String line -> line.replaceAll("@SMOOTHNESS_VERSION@", smoothnessVersion)
        }
...

Full Changelog: v4.11.0...v4.12.0