Releases: JeffersonLab/smoothness
v5.2.0
- 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
What's Changed
- Bump Keycloak to v26 by @slominskir in #57
- Configurable CacheFilter by @slominskir in #59
Full Changelog: v5.0.2...v5.1.0
v5.0.2
- Workaround Jakarta tlddoc tool missing from Maven Central (jakartaee/tags#275)
Full Changelog: v5.0.1...v5.0.2
Full Changelog: v5.0.1...v5.0.2
v5.0.1
What's Changed
- Update web.xml, JSTL URIs by @slominskir in #53
- Declare Jakarta JSP 3.0 by @slominskir in #55
- Replace deprecated method call
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
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:
- Most
javax.*classes are moved to packagejakarta.*. Search and replace your source files. - Update your build.gradle file to replace
javaxpackage dependencies withjakartaequivalents. See demo app build.gradle. - Update your Dockerfile to use v2.2.0 of JeffersonLab/wildfly image.
- Remove
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect"/>fromsrc/main/resources/META-INF/persistence.xml
Full Changelog: v4.13.1...v5.0.0
v4.13.1
- 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
- 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
- Bug Fix: Regression preventing authenticated users from editing fixed.
Full Changelog: v4.12.1...v4.12.2
v4.12.1
- Bug Fix:
getMemberUsernameCsvnow returns more than the first result, plus is now sorted for consistent repeatibility
Full Changelog: v4.12.0...v4.12.1
v4.12.0
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