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 a44640c310a3a8e98df664a2ff12af99065b4eb6
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun May 17 14:55:26 2026 -0400

    CAY-2945 CayenneModeler universal "main"
---
 RELEASE-NOTES.txt                                  |  1 +
 modeler/cayenne-modeler-generic-ext/pom.xml        | 65 ----------------------
 .../cayenne/modeler/generic/GenericMain.java       | 28 ----------
 modeler/cayenne-modeler-generic/pom.xml            |  7 +--
 modeler/cayenne-modeler-mac-ext/pom.xml            | 61 --------------------
 .../org/apache/cayenne/modeler/osx/OSXMain.java    | 29 ----------
 modeler/cayenne-modeler-mac/pom.xml                | 10 +---
 modeler/cayenne-modeler-win-ext/pom.xml            | 65 ----------------------
 .../org/apache/cayenne/modeler/win/WinMain.java    | 28 ----------
 modeler/cayenne-modeler-win/pom.xml                | 15 +----
 modeler/cayenne-modeler/pom.xml                    |  5 ++
 .../org/apache/cayenne/modeler/Application.java    |  2 +-
 .../main/java/org/apache/cayenne/modeler/Main.java | 19 ++++++-
 .../{ui => platform}/UIPlatformInitializer.java    |  2 +-
 .../modeler/platform}/generic/GenericButtonUI.java |  2 +-
 .../generic/GenericPlatformInitializer.java        |  4 +-
 .../cayenne/modeler/platform}/osx/OSXPanelUI.java  |  2 +-
 .../platform}/osx/OSXPlatformInitializer.java      |  4 +-
 .../platform}/osx/OSXToolBarSeparatorUI.java       |  2 +-
 .../cayenne/modeler/platform}/osx/OSXVersion.java  |  2 +-
 .../platform}/win/WinCustomTextFieldUI.java        |  2 +-
 .../platform}/win/WinPlatformInitializer.java      |  4 +-
 .../modeler/CayenneModelerValidationIT.java        |  2 +-
 modeler/pom.xml                                    |  5 +-
 24 files changed, 42 insertions(+), 324 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 17c988b72..d2144e806 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -41,6 +41,7 @@ CAY-2937 Decommission "graph" Support
 CAY-2938 Modeler: prettier DB Import - part 1
 CAY-2940 Upgrade to SLF4J version 2.0.17
 CAY-2942 CayenneModeler MCP: cgen_run tool
+CAY-2945 CayenneModeler universal "main"
 
 Bug Fixes:
 
diff --git a/modeler/cayenne-modeler-generic-ext/pom.xml 
b/modeler/cayenne-modeler-generic-ext/pom.xml
deleted file mode 100644
index f7023e7d1..000000000
--- a/modeler/cayenne-modeler-generic-ext/pom.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-       
-       https://www.apache.org/licenses/LICENSE-2.0
-       
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.   
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
-
-       <modelVersion>4.0.0</modelVersion>
-
-       <parent>
-               <groupId>org.apache.cayenne.modeler</groupId>
-               <artifactId>cayenne-modeler-parent</artifactId>
-               <version>5.0-SNAPSHOT</version>
-       </parent>
-
-       <artifactId>cayenne-modeler-generic-ext</artifactId>
-       <name>cayenne-modeler-generic-ext: Modeler Generic Extensions</name>
-       <packaging>jar</packaging>
-
-       <dependencies>
-               
-               <dependency>
-                       <groupId>org.apache.cayenne.modeler</groupId>
-                       <artifactId>cayenne-modeler</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               
-               <dependency>
-                       <groupId>org.apache.cayenne</groupId>
-                       <artifactId>cayenne-di</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               
-               <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>com.jgoodies</groupId>
-                       <artifactId>jgoodies-looks</artifactId>
-               </dependency>
-       </dependencies>
-</project>
diff --git 
a/modeler/cayenne-modeler-generic-ext/src/main/java/org/apache/cayenne/modeler/generic/GenericMain.java
 
b/modeler/cayenne-modeler-generic-ext/src/main/java/org/apache/cayenne/modeler/generic/GenericMain.java
deleted file mode 100644
index abdb0c40f..000000000
--- 
a/modeler/cayenne-modeler-generic-ext/src/main/java/org/apache/cayenne/modeler/generic/GenericMain.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.modeler.generic;
-
-import org.apache.cayenne.modeler.Application;
-
-public final class GenericMain {
-
-    public static void main(String[] args) {
-        Application.launch(args, new GenericPlatformInitializer());
-    }
-}
diff --git a/modeler/cayenne-modeler-generic/pom.xml 
b/modeler/cayenne-modeler-generic/pom.xml
index d7148404d..6a5576a32 100644
--- a/modeler/cayenne-modeler-generic/pom.xml
+++ b/modeler/cayenne-modeler-generic/pom.xml
@@ -48,11 +48,6 @@
                        <artifactId>cayenne-wocompat</artifactId>
                        <version>${project.version}</version>
                </dependency>
-               <dependency>
-                       <groupId>org.apache.cayenne.modeler</groupId>
-                       <artifactId>cayenne-modeler-generic-ext</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
        </dependencies>
 
        <profiles>
@@ -66,7 +61,7 @@
                                                <configuration>
                                                        
<destDir>${project.build.outputDirectory}</destDir>
                                                        
<name>CayenneModeler</name>
-                                                       
<mainClass>org.apache.cayenne.modeler.generic.GenericMain</mainClass>
+                                                       
<mainClass>org.apache.cayenne.modeler.Main</mainClass>
                                                        <os>java</os>
                                                </configuration>
                                                <executions>
diff --git a/modeler/cayenne-modeler-mac-ext/pom.xml 
b/modeler/cayenne-modeler-mac-ext/pom.xml
deleted file mode 100644
index 5db067ae3..000000000
--- a/modeler/cayenne-modeler-mac-ext/pom.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-       
-       https://www.apache.org/licenses/LICENSE-2.0
-       
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.   
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
-
-       <modelVersion>4.0.0</modelVersion>
-
-       <parent>
-               <groupId>org.apache.cayenne.modeler</groupId>
-               <artifactId>cayenne-modeler-parent</artifactId>
-               <version>5.0-SNAPSHOT</version>
-       </parent>
-
-       <artifactId>cayenne-modeler-mac-ext</artifactId>
-       <name>cayenne-modeler-mac-ext: Modeler MacOS Extensions</name>
-       <packaging>jar</packaging>
-
-       <dependencies>
-
-               <dependency>
-                       <groupId>org.apache.cayenne.modeler</groupId>
-                       <artifactId>cayenne-modeler</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               
-               <dependency>
-                       <groupId>org.apache.cayenne</groupId>
-                       <artifactId>cayenne-di</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               
-               <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>
-       </dependencies>
-
-</project>
diff --git 
a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXMain.java
 
b/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXMain.java
deleted file mode 100644
index 27288d881..000000000
--- 
a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXMain.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-
-package org.apache.cayenne.modeler.osx;
-
-import org.apache.cayenne.modeler.Application;
-
-public final class OSXMain {
-
-    public static void main(String[] args) {
-        Application.launch(args, new OSXPlatformInitializer());
-    }
-}
diff --git a/modeler/cayenne-modeler-mac/pom.xml 
b/modeler/cayenne-modeler-mac/pom.xml
index a1bc63b2f..d9586c75f 100644
--- a/modeler/cayenne-modeler-mac/pom.xml
+++ b/modeler/cayenne-modeler-mac/pom.xml
@@ -38,13 +38,7 @@
                        <version>${project.version}</version>
                </dependency>
 
-               <dependency>
-                       <groupId>org.apache.cayenne.modeler</groupId>
-                       <artifactId>cayenne-modeler-mac-ext</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 
@@ -79,7 +73,7 @@
                                                        
<name>CayenneModeler</name>
                                                        
<longName>${project.version}</longName>
                                                        
<destDir>${project.build.outputDirectory}</destDir>
-                                                       
<mainClass>org.apache.cayenne.modeler.osx.OSXMain</mainClass>
+                                                       
<mainClass>org.apache.cayenne.modeler.Main</mainClass>
                                                        
<icon>src/japplication/resources/CayenneModeler.icns</icon>
                                                        <os>mac</os>
                                                        <jvm0>21</jvm0>
diff --git a/modeler/cayenne-modeler-win-ext/pom.xml 
b/modeler/cayenne-modeler-win-ext/pom.xml
deleted file mode 100644
index 05da7ba46..000000000
--- a/modeler/cayenne-modeler-win-ext/pom.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-       https://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <artifactId>cayenne-modeler-parent</artifactId>
-        <groupId>org.apache.cayenne.modeler</groupId>
-        <version>5.0-SNAPSHOT</version>
-    </parent>
-
-    <name>cayenne-modeler-win-ext: Modeler Win Extensions</name>
-    <packaging>jar</packaging>
-    <artifactId>cayenne-modeler-win-ext</artifactId>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.apache.cayenne.modeler</groupId>
-            <artifactId>cayenne-modeler</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.cayenne</groupId>
-            <artifactId>cayenne-di</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <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>com.jgoodies</groupId>
-            <artifactId>jgoodies-looks</artifactId>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
diff --git 
a/modeler/cayenne-modeler-win-ext/src/main/java/org/apache/cayenne/modeler/win/WinMain.java
 
b/modeler/cayenne-modeler-win-ext/src/main/java/org/apache/cayenne/modeler/win/WinMain.java
deleted file mode 100644
index d5feccc7a..000000000
--- 
a/modeler/cayenne-modeler-win-ext/src/main/java/org/apache/cayenne/modeler/win/WinMain.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.modeler.win;
-
-import org.apache.cayenne.modeler.Application;
-
-public final class WinMain {
-
-    public static void main(String[] args) {
-        Application.launch(args, new WinPlatformInitializer());
-    }
-}
diff --git a/modeler/cayenne-modeler-win/pom.xml 
b/modeler/cayenne-modeler-win/pom.xml
index 41b390563..b4c05d7e8 100644
--- a/modeler/cayenne-modeler-win/pom.xml
+++ b/modeler/cayenne-modeler-win/pom.xml
@@ -38,13 +38,7 @@
                        <artifactId>cayenne-modeler</artifactId>
                        <version>${project.version}</version>
                </dependency>
-
-               <dependency>
-                       <groupId>org.apache.cayenne.modeler</groupId>
-                       <artifactId>cayenne-modeler-win-ext</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 
@@ -64,11 +58,6 @@
                        <artifactId>cayenne-wocompat</artifactId>
                        <version>${project.version}</version>
                </dependency>
-               <dependency>
-                       <groupId>org.apache.cayenne.modeler</groupId>
-                       <artifactId>cayenne-modeler-generic-ext</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
        </dependencies>
 
        <build>
@@ -92,7 +81,7 @@
                                                        
<name>CayenneModeler</name>
                                                        
<longName>${project.version}</longName>
                                                        
<destDir>${project.build.outputDirectory}</destDir>
-                                                       
<mainClass>org.apache.cayenne.modeler.win.WinMain</mainClass>
+                                                       
<mainClass>org.apache.cayenne.modeler.Main</mainClass>
                                                        
<icon>src/japplication/resources/CayenneModeler.ico</icon>
                                                        <os>windows</os>
                                                        <jvm0>21</jvm0>
diff --git a/modeler/cayenne-modeler/pom.xml b/modeler/cayenne-modeler/pom.xml
index 721460f3b..5936a08cd 100644
--- a/modeler/cayenne-modeler/pom.xml
+++ b/modeler/cayenne-modeler/pom.xml
@@ -43,6 +43,11 @@
                        <artifactId>forms</artifactId>
                </dependency>
 
+               <dependency>
+                       <groupId>com.jgoodies</groupId>
+                       <artifactId>jgoodies-looks</artifactId>
+               </dependency>
+
                <dependency>
                        <groupId>org.apache.cayenne</groupId>
                        <artifactId>cayenne</artifactId>
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
index 93e6eb4e0..322fac1ed 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
@@ -37,7 +37,7 @@ import org.apache.cayenne.modeler.pref.PreferencesRepository;
 import org.apache.cayenne.modeler.pref.RecentProjectsPrefs;
 import org.apache.cayenne.modeler.service.action.GlobalActions;
 import org.apache.cayenne.modeler.service.classloader.ModelerClassLoader;
-import org.apache.cayenne.modeler.ui.UIPlatformInitializer;
+import org.apache.cayenne.modeler.platform.UIPlatformInitializer;
 import 
org.apache.cayenne.modeler.service.validator.ConfigurableProjectValidator;
 import org.apache.cayenne.modeler.ui.MainFrame;
 import org.apache.cayenne.modeler.ui.action.OpenProjectAction;
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 7be3e3f15..52fb46965 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
@@ -19,12 +19,25 @@
 
 package org.apache.cayenne.modeler;
 
-import org.apache.cayenne.modeler.ui.UIPlatformInitializer;
+import org.apache.cayenne.modeler.service.os.OperatingSystem;
+import org.apache.cayenne.modeler.platform.UIPlatformInitializer;
 
 public final class Main {
 
     public static void main(String[] args) {
-        Application.launch(args, new UIPlatformInitializer() {
-        });
+        Application.launch(args, loadPlatformInitializer());
+    }
+
+    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";
+        };
+        try {
+            return (UIPlatformInitializer) 
Class.forName(fqn).getDeclaredConstructor().newInstance();
+        } catch (ReflectiveOperationException e) {
+            throw new IllegalStateException("Cannot load platform initializer 
" + fqn, e);
+        }
     }
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/UIPlatformInitializer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/UIPlatformInitializer.java
similarity index 96%
rename from 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/UIPlatformInitializer.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/UIPlatformInitializer.java
index 3cfe0f554..4510f7a9f 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/UIPlatformInitializer.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/UIPlatformInitializer.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.modeler.ui;
+package org.apache.cayenne.modeler.platform;
 
 import org.apache.cayenne.modeler.Application;
 
diff --git 
a/modeler/cayenne-modeler-generic-ext/src/main/java/org/apache/cayenne/modeler/generic/GenericButtonUI.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/generic/GenericButtonUI.java
similarity index 98%
rename from 
modeler/cayenne-modeler-generic-ext/src/main/java/org/apache/cayenne/modeler/generic/GenericButtonUI.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/generic/GenericButtonUI.java
index 5fb9b5685..167028e39 100644
--- 
a/modeler/cayenne-modeler-generic-ext/src/main/java/org/apache/cayenne/modeler/generic/GenericButtonUI.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/generic/GenericButtonUI.java
@@ -17,7 +17,7 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.modeler.generic;
+package org.apache.cayenne.modeler.platform.generic;
 
 import java.awt.Color;
 import java.awt.Dimension;
diff --git 
a/modeler/cayenne-modeler-generic-ext/src/main/java/org/apache/cayenne/modeler/generic/GenericPlatformInitializer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/generic/GenericPlatformInitializer.java
similarity index 97%
rename from 
modeler/cayenne-modeler-generic-ext/src/main/java/org/apache/cayenne/modeler/generic/GenericPlatformInitializer.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/generic/GenericPlatformInitializer.java
index 5c52ab7b7..31488ef96 100644
--- 
a/modeler/cayenne-modeler-generic-ext/src/main/java/org/apache/cayenne/modeler/generic/GenericPlatformInitializer.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/generic/GenericPlatformInitializer.java
@@ -16,12 +16,12 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.modeler.generic;
+package org.apache.cayenne.modeler.platform.generic;
 
 import com.jgoodies.looks.plastic.PlasticLookAndFeel;
 import com.jgoodies.looks.plastic.PlasticTheme;
 import com.jgoodies.looks.plastic.PlasticXPLookAndFeel;
-import org.apache.cayenne.modeler.ui.UIPlatformInitializer;
+import org.apache.cayenne.modeler.platform.UIPlatformInitializer;
 import org.apache.cayenne.modeler.toolkit.icon.IconFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXPanelUI.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPanelUI.java
similarity index 97%
rename from 
modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXPanelUI.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPanelUI.java
index 93f0323f7..c8dd1ec16 100644
--- 
a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXPanelUI.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPanelUI.java
@@ -17,7 +17,7 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.modeler.osx;
+package org.apache.cayenne.modeler.platform.osx;
 
 import org.apache.cayenne.modeler.ui.SearchPanel;
 
diff --git 
a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXPlatformInitializer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPlatformInitializer.java
similarity index 98%
rename from 
modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXPlatformInitializer.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPlatformInitializer.java
index fb2af6e9d..56d7457ff 100644
--- 
a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXPlatformInitializer.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXPlatformInitializer.java
@@ -16,11 +16,11 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.modeler.osx;
+package org.apache.cayenne.modeler.platform.osx;
 
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.service.action.GlobalActions;
-import org.apache.cayenne.modeler.ui.UIPlatformInitializer;
+import org.apache.cayenne.modeler.platform.UIPlatformInitializer;
 import org.apache.cayenne.modeler.ui.action.AboutAction;
 import org.apache.cayenne.modeler.ui.action.ConfigurePreferencesAction;
 import org.apache.cayenne.modeler.ui.action.ExitAction;
diff --git 
a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXToolBarSeparatorUI.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXToolBarSeparatorUI.java
similarity index 98%
rename from 
modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXToolBarSeparatorUI.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXToolBarSeparatorUI.java
index 756069224..7aeda95a6 100644
--- 
a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXToolBarSeparatorUI.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXToolBarSeparatorUI.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.modeler.osx;
+package org.apache.cayenne.modeler.platform.osx;
 
 import java.awt.Dimension;
 import java.awt.Graphics;
diff --git 
a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXVersion.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXVersion.java
similarity index 98%
rename from 
modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXVersion.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXVersion.java
index 5d0c0c972..2af3a8c50 100644
--- 
a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXVersion.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/osx/OSXVersion.java
@@ -17,7 +17,7 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.modeler.osx;
+package org.apache.cayenne.modeler.platform.osx;
 
 /**
  * @since 4.2
diff --git 
a/modeler/cayenne-modeler-win-ext/src/main/java/org/apache/cayenne/modeler/win/WinCustomTextFieldUI.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/win/WinCustomTextFieldUI.java
similarity index 97%
rename from 
modeler/cayenne-modeler-win-ext/src/main/java/org/apache/cayenne/modeler/win/WinCustomTextFieldUI.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/win/WinCustomTextFieldUI.java
index 3f277cf26..09950a48f 100644
--- 
a/modeler/cayenne-modeler-win-ext/src/main/java/org/apache/cayenne/modeler/win/WinCustomTextFieldUI.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/win/WinCustomTextFieldUI.java
@@ -17,7 +17,7 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.modeler.win;
+package org.apache.cayenne.modeler.platform.win;
 
 import java.lang.reflect.Constructor;
 import javax.swing.JComponent;
diff --git 
a/modeler/cayenne-modeler-win-ext/src/main/java/org/apache/cayenne/modeler/win/WinPlatformInitializer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/win/WinPlatformInitializer.java
similarity index 97%
rename from 
modeler/cayenne-modeler-win-ext/src/main/java/org/apache/cayenne/modeler/win/WinPlatformInitializer.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/win/WinPlatformInitializer.java
index b995808d3..0b2cf863b 100644
--- 
a/modeler/cayenne-modeler-win-ext/src/main/java/org/apache/cayenne/modeler/win/WinPlatformInitializer.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/win/WinPlatformInitializer.java
@@ -16,10 +16,10 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.modeler.win;
+package org.apache.cayenne.modeler.platform.win;
 
 import com.jgoodies.looks.windows.WindowsLookAndFeel;
-import org.apache.cayenne.modeler.ui.UIPlatformInitializer;
+import org.apache.cayenne.modeler.platform.UIPlatformInitializer;
 import org.apache.cayenne.modeler.toolkit.icon.IconFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java
 
b/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java
index 269aa56ca..ef4452992 100644
--- 
a/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java
+++ 
b/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java
@@ -22,7 +22,7 @@ import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.dbsync.reverse.configuration.ToolsModule;
 import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.modeler.ui.UIPlatformInitializer;
+import org.apache.cayenne.modeler.platform.UIPlatformInitializer;
 import 
org.apache.cayenne.modeler.service.validator.ConfigurableProjectValidator;
 import org.apache.cayenne.project.Project;
 import org.apache.cayenne.project.ProjectLoader;
diff --git a/modeler/pom.xml b/modeler/pom.xml
index 04f8d5f7c..2db49f95b 100644
--- a/modeler/pom.xml
+++ b/modeler/pom.xml
@@ -36,12 +36,9 @@
                <module>cayenne-wocompat</module>
                <module>cayenne-modeler</module>
                <module>cayenne-modeler-generic</module>
-               <module>cayenne-modeler-generic-ext</module>
-               <module>cayenne-modeler-mac-ext</module>
                <module>cayenne-modeler-mac</module>
                <module>cayenne-modeler-win</module>
-        <module>cayenne-modeler-win-ext</module>
-    </modules>
+       </modules>
 
        <build>
                <plugins>

Reply via email to