Skip to content

Commit 8e0821e

Browse files
committed
Merge branch 'upgrade'
2 parents 182d620 + ff00be2 commit 8e0821e

108 files changed

Lines changed: 1415 additions & 1110 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ build
1515
/docker/db
1616
/docker/elasticsearch/data/nodes
1717
/docker/opensearch/data/nodes/*
18+
/docker/opensearch/data/*.conf
1819
!/docker/opensearch/data/nodes/README
1920
/docker/acme.sh
2021
/docker/nginx/conf.d
@@ -57,6 +58,13 @@ nb-configuration.xml
5758
# VSCode files
5859
.vscode
5960

61+
# Emacs files
62+
.projectile
63+
64+
# Version managers (sdkman, mise, asdf)
65+
mise.toml
66+
.tool-versions
67+
6068
# OSX auto files
6169
.DS_Store
6270
.AppleDouble

AUTHORS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ that are otherwise encumbered.
3535
Signed by git commit adding my legal name and git username:
3636

3737
Written in 2010-2022 by David E. Jones - jonesde
38-
Written in 2021-2021 by D. Michael Jones - acetousk
38+
Written in 2021-2026 by D. Michael Jones - acetousk
3939
Written in 2014-2015 by Solomon Bessire - sbessire
4040
Written in 2014-2015 by Jacopo Cappellato - jacopoc
4141
Written in 2014-2015 by Abdullah Shaikh - abdullahs

Procfile.README

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
No memory or other JVM options specified here so that the standard JAVA_TOOL_OPTIONS env var may be used (command line args trump JAVA_TOOL_OPTIONS)
22

33
For example: export JAVA_TOOL_OPTIONS="-Xmx1024m -Xms1024m"
4-
Note that in Java 8 if no max heap size is specified it will default to 1/4 system memory
4+
Note that in Java 21 if no max heap size is specified it will default to 1/4 system memory
55

66
The port specified here is the default for the AWS ElasticBeanstalk Java SE image
77
see: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-procfile.html

ReleaseNotes.md

Lines changed: 178 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,182 @@
1+
# Moqui Framework Release Notes
12

3+
## Release 4.0.0 - 27 Feb 2026
24

3-
# Moqui Framework Release Notes
5+
Moqui framework v4.0.0 is a major new release with massive changes some of which
6+
are breaking changes. All users are advised to upgrade to benefit from all the
7+
new features, security fixes, upgrades, performance improvements and so on.
8+
9+
### Major Changes
10+
11+
#### Java Upgrade to Version 21 (Incompatible Change)
12+
13+
Moqui Framework now requires Java 21. This provides improved performance,
14+
long-term support, and access to modern JVM features, while removing legacy
15+
APIs. All custom code and components must be validated against Java 21 to ensure
16+
compatibility.
17+
18+
As part of this work:
19+
20+
- Remove deprecated finalize methods no longer applicable in JDK21.
21+
- Lots of code improvements to comply with JDK21.
22+
23+
#### Groovy upgrade to version 5 (Incompatible Change)
24+
25+
Groovy 5 in combination with newer JDK21 is more strict in @CompileStatic. There
26+
were illegal bytecodes being generated, and it has to do with accessing fields
27+
from inner classes.
28+
29+
Another change is that Groovysh is removed. Therefore, the terminal interface
30+
was rewritten from scratch using a different architecture based on
31+
`groovy.lang.GroovyShell`. This led to both Screen changes (in runtime) and
32+
backend changes.
33+
34+
#### Change EntityValue API (Breaking Change)
35+
36+
Change `EntityValue.getEntityName()` to `EntityValue.resolveEntityName()` and
37+
`EntityValue.getEntityNamePretty()` to `EntityValue.resolveEntityNamePretty()`.
38+
39+
Groovy 4+ introduced a change in the way property to method mapping happens as
40+
[documented](https://groovy-lang.org/style-guide.html#_getters_and_setters).
41+
42+
This introduced a bug that occurs when querying an entity that has a field named
43+
`entityName`. The bug occurs because the query returns an object of type
44+
`org.moqui.entity.EntityValue`. The problem is that the EntityValue class has a
45+
method called getEntityName() and as per the groovy 4+ behavior this function is
46+
called when trying to access a field named `entityName`. Sample code:
47+
48+
```
49+
def someMember = ec.entity
50+
.find('moqui.entity.view.DbViewEntityMember')
51+
.condition(...)
52+
.one()
53+
someMember.entityName // BUG returns .getEntityName(), not .get('entityName')
54+
```
55+
56+
#### Upgrade to Jetty version 12.1 and EE 11
57+
58+
This is a major migration. It bumps jetty to version 12.1 and also servlet
59+
related packages (websocket, webapp, proxy) to jakarta EE 11.
60+
61+
The upgrade broke the existing custom moqui class loaders, and required
62+
significant refactoring of class loaders and webapp structure (e.g.
63+
WebAppContext, Session Handling, etc ...)
64+
65+
Impact on developers:
66+
67+
Any custom work for jetty should be upgraded to the new versions compatible with
68+
jetty 12.1 and jakarta EE 11
69+
70+
#### Upgrade all javax libraries to jakarta
71+
72+
All libraries including commons-fileupload, xml.bind-api, activation, mail,
73+
websocket, servlets (6.1), and others are all migrated to their jakarta
74+
equivalents. As part of this exercise, many deprecated, old or irrelevant / not
75+
used dependencies were removed. This change required refactoring critical moqui
76+
facades and core API to comply with the switch to Jakarta.
477

5-
## Release 3.9.9 - Feb 25 2026
78+
Any custom work for older javax should be upgraded where applicable to use the
79+
jakarta equivalent libraries.
80+
81+
#### Integration with the New Bitronix Fork (Incompatible Change)
82+
83+
Moqui Framework now depends on the actively maintained Bitronix fork at:
84+
https://github.com/moqui/bitronix
85+
86+
The current integrated version is 4.0.0-BETA1, with stabilization ongoing.
87+
88+
This fork includes:
89+
90+
- Major modernization and cleanup
91+
- Jakarta namespace migration
92+
- JMS namespace migration
93+
- Important bug fixes and stability improvements
94+
- Legacy Bitronix artifacts are no longer supported.
95+
- Deployments must remove old Bitronix dependencies.
96+
97+
#### Migration From javax.transaction to jakarta.transaction (BREAKING CHANGE)
98+
99+
Moqui has migrated all transaction-related imports and internal APIs from
100+
javax.transaction.* to jakarta.transaction.*, following changes in the new
101+
Bitronix fork.
102+
103+
Impact on developers:
104+
105+
- Any code referencing javax.transaction.* must update imports to
106+
jakarta.transaction.*.
107+
- Affects transaction facade usage, user transactions, and service-layer
108+
transaction management.
109+
- If using custom transaction API, then compilation failures should be expected
110+
until imports are updated. This does not impact projects that are purely
111+
depending on moqui facades without accessing the underlying APIs
112+
113+
This aligns Moqui with the Jakarta EE namespace changes and the newer Bitronix
114+
transaction manager.
115+
116+
#### Upgrade Infrastructure
117+
118+
- Postgres to version 18.1
119+
- MySQL to version 9.5
120+
- Remove docker compose "version" obsolete key
121+
- Upgrade opensearch to 3.4.0
122+
- Upgrade java in docker to eclipse-temurin:21
123+
- Switch jwilder/nginx-proxy to nginxproxy/nginx-proxy
124+
125+
These upgrades require careful planning when migrating to moqui V4. It is
126+
recommended to delete elastic / open search and reindex, and to switch
127+
from elasticsearch to opensearch. Also ensure an upgrade path for your chosen
128+
database.
129+
130+
Also, in newer versions of docker, the "version" key is obsolete, so ensure
131+
updating installed docker so that it works without the "version" setting.
132+
133+
#### Gradle Wrapper Updated to 9.2 (BREAKING CHANGE)
134+
135+
The framework now builds using Gradle 9.2, bringing:
136+
137+
- Faster builds
138+
- Stricter validation and deprecation cleanup
139+
140+
Changes included:
141+
- Refactored property assignments and function calls to satisfy newer Gradle immutability rules.
142+
- Replaced deprecated exec {} blocks with Groovy execute() usage (Windows support still being refined).
143+
- Updated and corrected dependency declarations, including replacing deprecated modules and fixing invalid version strings.
144+
- Numerous misc. updates required by Gradle 9.x API changes.
145+
- Unified dependencyUpdates settings
146+
147+
This upgrade required significant modifications to component build scripts.
148+
149+
Given the upgrade to gradle, Java and bitronix, the following community components were upgraded to comply with new requirements:
150+
- HiveMind
151+
- PopCommerce
152+
- PopRestStore
153+
- example
154+
- mantle-braintree
155+
- mantle-usl
156+
- moqui-camel
157+
- moqui-cups
158+
- moqui-fop
159+
- moqui-hazelcast
160+
- moqui-image
161+
- moqui-orientdb
162+
- moqui-poi
163+
- moqui-runtime
164+
- moqui-sftp
165+
- moqui-sso
166+
- moqui-wikitext
167+
- start
168+
169+
### New Features
170+
171+
- Upgrade groovy to version 5
172+
- Upgrade to JDK21 by default
173+
- Upgrade to Apache Shiro 2, no longer using INI factory, but rather INI environment classes
174+
- Upgrade to jetty 2.1 and jakarta EE 11
175+
- Upgrade docker infrastructure including opensearch, mysql, postgres to latest
176+
- Upgrade all dependencies to their latest versions
177+
- Switch from Thread.getId() to Thread.threadId() to work on both virtual and platform threads
178+
179+
## Release 3.9.9 - 25 Feb 2026
6180

7181
Moqui Framework 3.9.9 is a minor new feature and bug fix release, but mostly a maintenance release for the Moqui Framework
8182
4.0.0 release series.
@@ -11,6 +185,8 @@ For a complete list see the commit log:
11185

12186
https://github.com/moqui/moqui-framework/compare/v3.0.0...v3.9.9
13187

188+
## Release 3.1.0 - Canceled release
189+
14190
## Release 3.0.0 - 31 May 2022
15191

16192
Moqui Framework 3.0.0 is a major new feature and bug fix release with some changes that are not backward compatible.

addons.xml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
<component name="moqui-sso" group="moqui" version="1.9.9" branch="master"/>
5757
<component name="moqui-wikitext" group="moqui" version="1.0.4" branch="master"/>
5858

59-
<component name="moqui-atomikos" group="moqui" version="1.0.0" branch="master"/><!-- not actively maintained -->
59+
<!-- <component name="moqui-atomikos" group="moqui" version="1.0.0" branch="master"/> Deprecated after Moqui 4.0 release and bitronix fork (Atomikos intentionally broke community version to sell commercial; not actively maintained -->
6060

6161
<!-- Mantle Business Artifact and Integration Components -->
6262
<component name="mantle-udm" group="moqui" version="2.2.1" branch="master"/>
@@ -90,15 +90,17 @@
9090
<component name="moqui-captcha" group="shendepu" version="" branch="master"/><!-- no releases -->
9191
<component name="moqui-chile" group="Moitcl" version="" branch="master"/><!-- no releases -->
9292
<component name="moqui-de_DE-addon" group="mckhoi" version="" branch="master"/><!-- no releases -->
93-
<component name="moqui-graphql" group="shendepu" version="" branch="master"/><!-- no releases -->
94-
<component name="moqui-react-ssr" group="shendepu" version="" branch="master"/><!-- no releases -->
93+
<!-- <component name="moqui-graphql" group="shendepu" version="" branch="master"/> Deprecated, graphql was a bad idea. Don't use it -->
94+
<!-- <component name="moqui-react-ssr" group="shendepu" version="" branch="master"/> Deprecated, moqui-react-ssr is an experiment. We suggest you just use standard js tools if you want full control over the UI. no releases -->
9595
<component name="moqui-zh_CN-addon" group="chunlinyao" version="" branch="master"/><!-- no releases -->
9696
<!-- moqui-fop replacement use alibaba easyexcel for excel output -->
9797
<component name="moqui-easyexcel" group="chunlinyao" version="" branch="master"/><!-- no releases -->
9898
<component name="OFBizToMantle" group="jonesde" version="" branch="master"/><!-- no releases -->
9999
<component name="ServiceJobMonitor" group="tailorsoft" version="" branch="master"/><!-- no releases -->
100100
<component name="Sales" group="xolvegroup" version="" branch="main"/><!-- no releases -->
101101
<component name="WorkManagement" group="xolvegroup" version="" branch="main"/><!-- no releases -->
102+
<component name="coarchy" group="coarchy" version="" branch="coarchy"/><!-- no releases -->
103+
<component name="stripe" group="coarchy" version="" branch="master"/><!-- no releases -->
102104

103105
<!-- Component Sets -->
104106
<!-- NOTE: using these component sets is NOT recommended, with so many components doing
@@ -112,6 +114,7 @@
112114
<component-set name="demo" components="moqui-poi,moqui-demo,example,HiveMind,PopCommerce,PopRestStore,MarbleERP"/>
113115
<component-set name="popc" components="PopCommerce,PopRestStore"/>
114116
<component-set name="all-moqui" components="example,start,moqui-aws,moqui-camel,moqui-cups,moqui-fop,moqui-hazelcast,moqui-image,moqui-kie,moqui-orientdb,moqui-poi,moqui-sftp,moqui-sso,moqui-wikitext,mantle-udm,mantle-usl,AuthorizeDotNet,mantle-edi,mantle-paytrace,mantle-shippo,mantle-yotpo,mantle-braintree,mantle-rsis,mantle-oagis,mantle-ubpl,SimpleScreens,HiveMind,PopCommerce,MarbleERP,PopRestStore,WeCreate,moqui-mjml,moqui-org,moqui-demo"/>
117+
<component-set name="all-working" components="example,start,moqui-aws,moqui-camel,moqui-cups,moqui-fop,moqui-hazelcast,moqui-image,moqui-kie,moqui-orientdb,moqui-poi,moqui-sftp,moqui-sso,moqui-wikitext,mantle-udm,mantle-usl,AuthorizeDotNet,mantle-edi,mantle-paytrace,mantle-shippo,mantle-yotpo,mantle-braintree,mantle-rsis,mantle-oagis,mantle-ubpl,SimpleScreens,HiveMind,PopCommerce,MarbleERP,PopRestStore,WeCreate,moqui-org,moqui-demo,moqui-de_DE-addon,moqui-zh_CN-addon,Sales,WorkManagement,coarchy,stripe"/>
115118

116119
<!-- Release builds:
117120
gradle getComponentSet -PcomponentSet=demo -PlocationType=release

0 commit comments

Comments
 (0)