You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2026/05/17 19:21:48 UTC
(cayenne) 03/04: CAY-2945 CayenneModeler universal "main"
This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 58aa607e5770b56b93a5cc3c543bb290adc1b877
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Sun May 17 14:55:26 2026 -0400
CAY-2945 CayenneModeler universal "main"
cleanup
---
modeler/cayenne-modeler-generic/pom.xml | 18 -----------
modeler/cayenne-modeler-mac/pom.xml | 22 --------------
.../src/main/resources/README.txt | 6 ++--
modeler/cayenne-modeler-win/pom.xml | 20 -------------
.../main/java/org/apache/cayenne/modeler/Main.java | 13 ++++----
.../{osx/OSXVersion.java => mac/MacOSVersion.java} | 20 ++++++-------
.../{osx/OSXPanelUI.java => mac/MacPanelUI.java} | 10 +++----
.../MacPlatformInitializer.java} | 12 ++++----
.../MacToolBarSeparatorUI.java} | 8 ++---
.../modeler/service/os/OperatingSystem.java | 26 +++++++---------
.../modeler/toolkit/text/style/TextSyntax.java | 2 +-
.../cayenne/modeler/toolkit/url/UrlOpener.java | 4 +--
.../org/apache/cayenne/modeler/ui/MainFrame.java | 2 +-
.../java/org/apache/cayenne/modeler/MainTest.java} | 35 ++++++++--------------
14 files changed, 61 insertions(+), 137 deletions(-)
diff --git a/modeler/cayenne-modeler-generic/pom.xml b/modeler/cayenne-modeler-generic/pom.xml
index 6a5576a32..ef6c6d87a 100644
--- a/modeler/cayenne-modeler-generic/pom.xml
+++ b/modeler/cayenne-modeler-generic/pom.xml
@@ -30,24 +30,6 @@
<artifactId>cayenne-modeler</artifactId>
<version>${project.version}</version>
</dependency>
-
- <!-- adding cayenne runtime dependencies explicitly, as they are marked
- as "provided" in the modeler pom and won't be included in the jar -->
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-project</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cayenne.modeler</groupId>
- <artifactId>cayenne-wocompat</artifactId>
- <version>${project.version}</version>
- </dependency>
</dependencies>
<profiles>
diff --git a/modeler/cayenne-modeler-mac/pom.xml b/modeler/cayenne-modeler-mac/pom.xml
index d9586c75f..fe6ce14df 100644
--- a/modeler/cayenne-modeler-mac/pom.xml
+++ b/modeler/cayenne-modeler-mac/pom.xml
@@ -37,28 +37,6 @@
<artifactId>cayenne-modeler</artifactId>
<version>${project.version}</version>
</dependency>
-
- <!--
- adding cayenne runtime dependencies explicitly,
- as they are marked as "provided" in the modeler pom
- and won't be included in the jar
- -->
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-project</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cayenne.modeler</groupId>
- <artifactId>cayenne-wocompat</artifactId>
- <version>${project.version}</version>
- </dependency>
-
</dependencies>
<profiles>
diff --git a/modeler/cayenne-modeler-mac/src/main/resources/README.txt b/modeler/cayenne-modeler-mac/src/main/resources/README.txt
index eaee13e73..924c054ef 100644
--- a/modeler/cayenne-modeler-mac/src/main/resources/README.txt
+++ b/modeler/cayenne-modeler-mac/src/main/resources/README.txt
@@ -1,11 +1,9 @@
-
-
MAC OS X INSTALLATION
---------------------
-1. "CayenneModeler.app" is the GUI modeler. Drag it to a folder where you
+1. "CayenneModeler.app" is the GUI ORM modeler. Drag it to a folder where you
normally put your applications (e.g. in the "Applications" folder). It
- requires Java 8 or newer.
+ requires Java 21 or newer.
2. "cayenne-xxx" folder contains Cayenne documentation and runtime libraries. Drag it
anywhere you would normally place such things.
\ No newline at end of file
diff --git a/modeler/cayenne-modeler-win/pom.xml b/modeler/cayenne-modeler-win/pom.xml
index b4c05d7e8..a33a3350f 100644
--- a/modeler/cayenne-modeler-win/pom.xml
+++ b/modeler/cayenne-modeler-win/pom.xml
@@ -38,26 +38,6 @@
<artifactId>cayenne-modeler</artifactId>
<version>${project.version}</version>
</dependency>
- <!--
- adding cayenne runtime dependencies explicitly,
- as they are marked as "provided" in the modeler pom
- and won't be included in the jar
- -->
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-project</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cayenne.modeler</groupId>
- <artifactId>cayenne-wocompat</artifactId>
- <version>${project.version}</version>
- </dependency>
</dependencies>
<build>
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
index 52fb46965..40aadf424 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
@@ -25,15 +25,16 @@ import org.apache.cayenne.modeler.platform.UIPlatformInitializer;
public final class Main {
public static void main(String[] args) {
- Application.launch(args, loadPlatformInitializer());
+ Application.launch(args, loadPlatformInitializer(OperatingSystem.os));
}
- private static UIPlatformInitializer loadPlatformInitializer() {
- String fqn = switch (OperatingSystem.getOS()) {
- case MAC_OS_X -> "org.apache.cayenne.modeler.platform.osx.OSXPlatformInitializer";
- case WINDOWS -> "org.apache.cayenne.modeler.platform.win.WinPlatformInitializer";
- case OTHER -> "org.apache.cayenne.modeler.platform.generic.GenericPlatformInitializer";
+ static UIPlatformInitializer loadPlatformInitializer(OperatingSystem os) {
+ String fqn = switch (os) {
+ case MAC_OS -> "org.apache.cayenne.modeler.platform.mac.MacPlatformInitializer";
+ case WINDOWS -> "org.apache.cayenne.modeler.platform.win.WinPlatformInitializer";
+ case OTHER -> "org.apache.cayenne.modeler.platform.generic.GenericPlatformInitializer";
};
+
try {
return (UIPlatformInitializer) Class.forName(fqn).getDeclaredConstructor().newInstance();
} catch (ReflectiveOperationException e) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXVersion.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacOSVersion.java
similarity index 79%
rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXVersion.java
rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacOSVersion.java
index 2af3a8c50..983e697d8 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXVersion.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacOSVersion.java
@@ -17,21 +17,21 @@
* under the License.
****************************************************************/
-package org.apache.cayenne.modeler.platform.osx;
+package org.apache.cayenne.modeler.platform.mac;
/**
* @since 4.2
*/
-public class OSXVersion {
+public class MacOSVersion {
- public static final OSXVersion UNKNOWN = new OSXVersion(-1, -1);
- public static final OSXVersion CATALINA = new OSXVersion(10, 15);
- public static final OSXVersion BIG_SUR = new OSXVersion(10, 16);
+ public static final MacOSVersion UNKNOWN = new MacOSVersion(-1, -1);
+ public static final MacOSVersion CATALINA = new MacOSVersion(10, 15);
+ public static final MacOSVersion BIG_SUR = new MacOSVersion(10, 16);
private final int major;
private final int minor;
- public static OSXVersion fromSystemProperties() {
+ public static MacOSVersion fromSystemProperties() {
// sanity check in case this code executed not on macOS
String osName = System.getProperty("os.name").toLowerCase();
if(!osName.contains("mac")) {
@@ -46,23 +46,23 @@ public class OSXVersion {
try {
int major = Integer.parseInt(osVersionComponents[0]);
int minor = Integer.parseInt(osVersionComponents[1]);
- return new OSXVersion(major, minor);
+ return new MacOSVersion(major, minor);
} catch (Exception ex) {
return UNKNOWN;
}
}
- public OSXVersion(int major, int minor) {
+ public MacOSVersion(int major, int minor) {
this.major = major;
this.minor = minor;
}
- public boolean gt(OSXVersion version) {
+ public boolean gt(MacOSVersion version) {
return getMajor() >= version.getMajor()
&& getMinor() > version.getMinor();
}
- public boolean eq(OSXVersion version) {
+ public boolean eq(MacOSVersion version) {
return getMajor() == version.getMajor()
&& getMinor() == version.getMinor();
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPanelUI.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacPanelUI.java
similarity index 90%
rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPanelUI.java
rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacPanelUI.java
index c8dd1ec16..70d0e5a0e 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPanelUI.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacPanelUI.java
@@ -17,7 +17,7 @@
* under the License.
****************************************************************/
-package org.apache.cayenne.modeler.platform.osx;
+package org.apache.cayenne.modeler.platform.mac;
import org.apache.cayenne.modeler.ui.SearchPanel;
@@ -26,11 +26,11 @@ import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicPanelUI;
import java.awt.*;
-public class OSXPanelUI extends BasicPanelUI {
+public class MacPanelUI extends BasicPanelUI {
private static final Color BACKGROUND = new Color(0xEEEEEE);
- private static final OSXPanelUI INSTANCE;
+ private static final MacPanelUI INSTANCE;
static {
BasicPanelUI delegate;
@@ -43,12 +43,12 @@ public class OSXPanelUI extends BasicPanelUI {
delegate = new BasicPanelUI();
}
- INSTANCE = new OSXPanelUI(delegate);
+ INSTANCE = new MacPanelUI(delegate);
}
private BasicPanelUI delegate;
- private OSXPanelUI(BasicPanelUI delegate) {
+ private MacPanelUI(BasicPanelUI delegate) {
this.delegate = delegate;
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPlatformInitializer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacPlatformInitializer.java
similarity index 94%
rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPlatformInitializer.java
rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacPlatformInitializer.java
index 56d7457ff..4146ad6c9 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPlatformInitializer.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacPlatformInitializer.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
****************************************************************/
-package org.apache.cayenne.modeler.platform.osx;
+package org.apache.cayenne.modeler.platform.mac;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.service.action.GlobalActions;
@@ -32,7 +32,7 @@ import java.awt.*;
import java.util.HashSet;
import java.util.Set;
-public class OSXPlatformInitializer implements UIPlatformInitializer {
+public class MacPlatformInitializer implements UIPlatformInitializer {
@Override
public void initLookAndFeel() {
@@ -42,8 +42,8 @@ public class OSXPlatformInitializer implements UIPlatformInitializer {
Color darkGrey = new Color(225, 225, 225);
Border darkBorder = BorderFactory.createLineBorder(darkGrey);
- UIManager.put("ToolBarSeparatorUI", OSXToolBarSeparatorUI.class.getName());
- UIManager.put("PanelUI", OSXPanelUI.class.getName());
+ UIManager.put("ToolBarSeparatorUI", MacToolBarSeparatorUI.class.getName());
+ UIManager.put("PanelUI", MacPanelUI.class.getName());
// next two is custom-made for Cayenne's MainToolBar
UIManager.put("ToolBar.background", lightGrey);
UIManager.put("MainToolBar.background", lightGrey);
@@ -69,8 +69,8 @@ public class OSXPlatformInitializer implements UIPlatformInitializer {
UIManager.put("CheckBoxHeader.border", BorderFactory.createEmptyBorder(0, 9, 0, 0));
// MacOS BigSur needs additional style tweaking for the tabs active state
- OSXVersion version = OSXVersion.fromSystemProperties();
- if (version.gt(OSXVersion.CATALINA)) {
+ MacOSVersion version = MacOSVersion.fromSystemProperties();
+ if (version.gt(MacOSVersion.CATALINA)) {
UIManager.put("TabbedPane.selectedTabTitlePressedColor", Color.BLACK);
UIManager.put("TabbedPane.selectedTabTitleNormalColor", Color.BLACK);
UIManager.put("TabbedPane.selectedTabTitleShadowDisabledColor", new Color(0, 0, 0, 0));
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXToolBarSeparatorUI.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacToolBarSeparatorUI.java
similarity index 92%
rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXToolBarSeparatorUI.java
rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacToolBarSeparatorUI.java
index 7aeda95a6..1348dd354 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXToolBarSeparatorUI.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacToolBarSeparatorUI.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
****************************************************************/
-package org.apache.cayenne.modeler.platform.osx;
+package org.apache.cayenne.modeler.platform.mac;
import java.awt.Dimension;
import java.awt.Graphics;
@@ -31,13 +31,13 @@ import javax.swing.plaf.basic.BasicToolBarSeparatorUI;
*
* @since 4.0
*/
-public class OSXToolBarSeparatorUI extends BasicToolBarSeparatorUI {
+public class MacToolBarSeparatorUI extends BasicToolBarSeparatorUI {
- private OSXToolBarSeparatorUI() {
+ private MacToolBarSeparatorUI() {
}
public static ComponentUI createUI(JComponent c) {
- return new OSXToolBarSeparatorUI();
+ return new MacToolBarSeparatorUI();
}
public void paint( Graphics g, JComponent c ) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/service/os/OperatingSystem.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/service/os/OperatingSystem.java
index b556738a7..b7c7f71b4 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/service/os/OperatingSystem.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/service/os/OperatingSystem.java
@@ -24,26 +24,20 @@ package org.apache.cayenne.modeler.service.os;
*/
public enum OperatingSystem {
- MAC_OS_X, WINDOWS, OTHER;
+ MAC_OS, WINDOWS, OTHER;
+
+ public static final OperatingSystem os;
- private static final OperatingSystem os;
static {
- String osName = System.getProperty("os.name");
- if (osName == null) {
- os = OTHER;
+ String osName = System.getProperty("os.name").toLowerCase();
+
+ if (osName.startsWith("win")) {
+ os = WINDOWS;
+ } else if (osName.startsWith("mac")) {
+ os = MAC_OS;
} else {
- if (osName.startsWith("Windows")) {
- os = WINDOWS;
- } else if (osName.startsWith("Mac OS X")) {
- os = MAC_OS_X;
- } else {
- os = OTHER;
- }
+ os = OTHER;
}
}
-
- public static OperatingSystem getOS() {
- return os;
- }
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/style/TextSyntax.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/style/TextSyntax.java
index c52d05a95..8353c1f4c 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/style/TextSyntax.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/style/TextSyntax.java
@@ -25,7 +25,7 @@ import java.awt.Font;
public interface TextSyntax {
- Font DEFAULT_FONT = new Font(OperatingSystem.getOS() == OperatingSystem.WINDOWS
+ Font DEFAULT_FONT = new Font(OperatingSystem.os == OperatingSystem.WINDOWS
? "Courier New"
: "Courier", Font.PLAIN, 14);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/url/UrlOpener.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/url/UrlOpener.java
index 0402ede3c..4f9882089 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/url/UrlOpener.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/url/UrlOpener.java
@@ -35,10 +35,10 @@ public class UrlOpener {
if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
Desktop.getDesktop().browse(new URI(url));
// failover to a platform-specific hacks
- } else if (OperatingSystem.getOS() == OperatingSystem.WINDOWS) {
+ } else if (OperatingSystem.os == OperatingSystem.WINDOWS) {
String cmd = "rundll32 url.dll,FileProtocolHandler " + url;
Runtime.getRuntime().exec(cmd);
- } else if (OperatingSystem.getOS() == OperatingSystem.MAC_OS_X) {
+ } else if (OperatingSystem.os == OperatingSystem.MAC_OS) {
String cmd = "open " + url;
Runtime.getRuntime().exec(cmd);
} else { // assume Unix or Linux
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/MainFrame.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/MainFrame.java
index d86d84824..2ea845d87 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/MainFrame.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/MainFrame.java
@@ -225,7 +225,7 @@ public class MainFrame extends AppFrame {
});
// Register a hook to save the window position when quit via the app menu. This is in macOS only.
- if (OperatingSystem.getOS() == OperatingSystem.MAC_OS_X) {
+ if (OperatingSystem.os == OperatingSystem.MAC_OS) {
Runnable runner = session::saveSelectionToPrefs;
Runtime.getRuntime().addShutdownHook(new Thread(runner, "Window Prefs Hook"));
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/style/TextSyntax.java b/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/MainTest.java
similarity index 62%
copy from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/style/TextSyntax.java
copy to modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/MainTest.java
index c52d05a95..18869bfa5 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/style/TextSyntax.java
+++ b/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/MainTest.java
@@ -16,31 +16,22 @@
* specific language governing permissions and limitations
* under the License.
****************************************************************/
-package org.apache.cayenne.modeler.toolkit.text.style;
-import org.apache.cayenne.modeler.service.os.OperatingSystem;
-
-import java.awt.Color;
-import java.awt.Font;
-
-public interface TextSyntax {
-
- Font DEFAULT_FONT = new Font(OperatingSystem.getOS() == OperatingSystem.WINDOWS
- ? "Courier New"
- : "Courier", Font.PLAIN, 14);
+package org.apache.cayenne.modeler;
- Color DEFAULT_COLOR = Color.black;
- String COMMENT_TEXT = "(?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/)|(?://.*)";
- String COMMENT_TEXT_START = "/\\*.?";
- String NUMBER_TEXT = "\\d+";
-
- String[] keywords();
-
- String[] keywords2();
+import org.apache.cayenne.modeler.platform.UIPlatformInitializer;
+import org.apache.cayenne.modeler.service.os.OperatingSystem;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
- String[] types();
+import static org.junit.jupiter.api.Assertions.assertNotNull;
- String[] operators();
+public class MainTest {
- String contentType();
+ @ParameterizedTest
+ @EnumSource(OperatingSystem.class)
+ public void loadPlatformInitializer_resolvesValidClass(OperatingSystem os) {
+ UIPlatformInitializer initializer = Main.loadPlatformInitializer(os);
+ assertNotNull(initializer, "No initializer resolved for " + os);
+ }
}