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 <[email protected]> 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); + } }
