You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2019/09/11 10:29:06 UTC

[cayenne] branch master updated (adf7e8e -> 90d1dfe)

This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git.


    from adf7e8e  Add license
     new 39bde7c  Update RAT check
     new 0ec693b  CAY-2615 Saving project throws IllegalArgumentException
     new 90d1dfe  CAY-2592 Modeler: make all datamaps selected in global cgen tab

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 build-tools/cayenne-checkers/pom.xml               | 49 ++++++++++++++++++-
 .../org/apache/cayenne/gen/CgenConfiguration.java  |  9 +++-
 .../apache/cayenne/gen/xml/CgenSaverDelegate.java  |  8 +--
 .../cayenne/modeler/editor/GeneratorsPanel.java    | 24 ++++-----
 .../cayenne/modeler/editor/GeneratorsTab.java      |  4 +-
 .../modeler/editor/GeneratorsTabController.java    | 57 ++++++++++++++++------
 .../modeler/editor/cgen/domain/CgenTab.java        |  3 +-
 .../editor/cgen/domain/CgenTabController.java      | 20 +++-----
 .../editor/dbimport/domain/DbImportTab.java        |  3 +-
 .../dbimport/domain/DbImportTabController.java     |  7 +--
 pom.xml                                            | 12 ++++-
 rat.sh                                             | 37 +++++++-------
 12 files changed, 161 insertions(+), 72 deletions(-)


[cayenne] 01/03: Update RAT check

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 39bde7c5bce57137c008bdedef11199961bdf6e2
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Tue Sep 10 15:57:18 2019 +0300

    Update RAT check
---
 build-tools/cayenne-checkers/pom.xml | 49 +++++++++++++++++++++++++++++++++++-
 pom.xml                              | 12 ++++++++-
 rat.sh                               | 37 ++++++++++++++-------------
 3 files changed, 78 insertions(+), 20 deletions(-)

diff --git a/build-tools/cayenne-checkers/pom.xml b/build-tools/cayenne-checkers/pom.xml
index 696d103..226118f 100644
--- a/build-tools/cayenne-checkers/pom.xml
+++ b/build-tools/cayenne-checkers/pom.xml
@@ -53,6 +53,43 @@
         <url>https://cayenne.apache.org/</url>
     </organization>
 
+    <repositories>
+        <repository>
+            <id>objectstyle</id>
+            <name>ObjectStyle Repository</name>
+            <url>https://maven.objectstyle.org/nexus/content/groups/cayenne-deps</url>
+            <layout>default</layout>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+        <repository>
+            <id>apache.snapshots</id>
+            <name>Apache Snapshot Repository</name>
+            <url>https://repository.apache.org/snapshots</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
+    </repositories>
+    <pluginRepositories>
+        <pluginRepository>
+            <id>objectstyle</id>
+            <name>ObjectStyle repository</name>
+            <url>https://maven.objectstyle.org/nexus/content/groups/cayenne-deps</url>
+            <layout>default</layout>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </pluginRepository>
+    </pluginRepositories>
+
     <build>
         <plugins>
             <plugin>
@@ -70,7 +107,17 @@
             <plugin>
                 <groupId>org.apache.rat</groupId>
                 <artifactId>apache-rat-plugin</artifactId>
-                <version>0.11</version>
+                <version>0.13</version>
+                <configuration>
+                    <licenses>
+                        <license implementation="org.apache.rat.analysis.license.ApacheSoftwareLicense20">
+                            <notes>Also allow the license url to be https.</notes>
+                            <patterns>
+                                <pattern>https://www.apache.org/licenses/LICENSE-2.0</pattern>
+                            </patterns>
+                        </license>
+                    </licenses>
+                </configuration>
             </plugin>
             <plugin>
                 <artifactId>maven-remote-resources-plugin</artifactId>
diff --git a/pom.xml b/pom.xml
index 7034f88..b27b9db 100644
--- a/pom.xml
+++ b/pom.xml
@@ -831,7 +831,17 @@
 				<plugin>
 					<groupId>org.apache.rat</groupId>
 					<artifactId>apache-rat-plugin</artifactId>
-					<version>0.11</version>
+					<version>0.13</version>
+					<configuration>
+						<licenses>
+							<license implementation="org.apache.rat.analysis.license.ApacheSoftwareLicense20">
+								<notes>Also allow the license url to be https.</notes>
+								<patterns>
+									<pattern>https://www.apache.org/licenses/LICENSE-2.0</pattern>
+								</patterns>
+							</license>
+						</licenses>
+					</configuration>
 				</plugin>
 				<plugin>
 					<groupId>org.objectstyle.japp</groupId>
diff --git a/rat.sh b/rat.sh
index 79d7ddc..93209d0 100755
--- a/rat.sh
+++ b/rat.sh
@@ -49,25 +49,26 @@ echo "Running rat, this may take a while..." 1>&2
 
 # TODO: read excludes from buildbot config at 'build-tools/rat-excludes'
 java -jar $RAT -d $DIR \
-	-e '.classpath' \
-	-e '.project' \
-	-e '.gitignore' \
-	-e '_*.java' \
-	-e '*.plist' \
-	-e 'index.eomodeld' \
-	-e '*.fspec' \
+	-e '\.classpath' \
+	-e '\.project' \
+	-e '\.gitignore' \
+	-e '\_.+\.java' \
+	-e '.+\.plist' \
+	-e 'index\.eomodeld' \
+	-e '.+\.fspec' \
 	-e 'DiagramLayout' \
-	-e 'excludes.txt' \
-	-e '*.map.xml' \
+	-e 'excludes\.txt' \
+	-e '.+\.map\.xml' \
 	-e 'cayenne-*.xml' \
-	-e 'cayenne.xml' \
-	-e '*.driver.xml' \
-	-e 'CLOVER.txt' \
-	-e '*.html' \
-	-e '*.css' \
-	-e '*.jceks' \
-	-e 'plain.txt' \
-	-e 'derby.log' \
-	-e '*.iml'
+	-e 'cayenne\.xml' \
+	-e '.+\.driver\.xml' \
+	-e 'CLOVER\.txt' \
+	-e '.+\.html' \
+	-e '.+\.css' \
+	-e '.+\.jceks' \
+	-e 'plain\.txt' \
+	-e 'derby\.log' \
+	-e '.+\.iml' \
+	-e 'report.txt'
 
 


[cayenne] 03/03: CAY-2592 Modeler: make all datamaps selected in global cgen tab

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 90d1dfe864521d6e2670d8ffb77c38bd4ffaa8f5
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed Sep 11 11:28:21 2019 +0300

    CAY-2592 Modeler: make all datamaps selected in global cgen tab
---
 .../cayenne/modeler/editor/GeneratorsPanel.java    | 24 ++++-----
 .../cayenne/modeler/editor/GeneratorsTab.java      |  4 +-
 .../modeler/editor/GeneratorsTabController.java    | 57 ++++++++++++++++------
 .../modeler/editor/cgen/domain/CgenTab.java        |  3 +-
 .../editor/cgen/domain/CgenTabController.java      | 20 +++-----
 .../editor/dbimport/domain/DbImportTab.java        |  3 +-
 .../dbimport/domain/DbImportTabController.java     |  7 +--
 7 files changed, 71 insertions(+), 47 deletions(-)

diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsPanel.java
index 4ec5ba9..6902772 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsPanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsPanel.java
@@ -35,30 +35,30 @@ import java.awt.BorderLayout;
 /**
  * @since 4.1
  */
-public class GeneratorsPanel extends JPanel {
+class GeneratorsPanel extends JPanel {
+
+    private final DataMap dataMap;
+    private final Class<?> type;
+    private final String icon;
 
     private JCheckBox checkConfig;
-    private JLabel dataMapLabel;
     private JButton toConfigButton;
-    private DataMap dataMap;
-    private Class type;
-    private String icon;
 
-    public GeneratorsPanel(DataMap dataMap, String icon, Class type) {
+    GeneratorsPanel(DataMap dataMap, String icon, Class<?> type) {
         this.type = type;
         this.icon = icon;
         this.dataMap = dataMap;
         initView();
     }
 
-    public void initView(){
+    private void initView(){
         setLayout(new BorderLayout());
         FormLayout layout = new FormLayout(
                 "left:pref, 4dlu, fill:70dlu, 3dlu, fill:120, 3dlu, fill:120", "");
         DefaultFormBuilder builder = new DefaultFormBuilder(layout);
         this.checkConfig = new JCheckBox();
-        this.dataMapLabel = new JLabel(dataMap.getName());
-        this.dataMapLabel.setToolTipText(dataMap.getName());
+        JLabel dataMapLabel = new JLabel(dataMap.getName());
+        dataMapLabel.setToolTipText(dataMap.getName());
         DataChannelMetaData metaData = Application.getInstance().getMetaData();
         this.toConfigButton = new JButton("Edit Config");
         if(metaData.get(dataMap, type) == null) {
@@ -71,15 +71,15 @@ public class GeneratorsPanel extends JPanel {
         this.add(builder.getPanel(), BorderLayout.CENTER);
     }
 
-    public JCheckBox getCheckConfig() {
+    JCheckBox getCheckConfig() {
         return checkConfig;
     }
 
-    public JButton getToConfigButton() {
+    JButton getToConfigButton() {
         return toConfigButton;
     }
 
-    public DataMap getDataMap() {
+    DataMap getDataMap() {
         return dataMap;
     }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTab.java
index 39a9458..f9ea641 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTab.java
@@ -40,11 +40,11 @@ import java.util.concurrent.ConcurrentMap;
 public class GeneratorsTab extends JPanel {
 
     protected ProjectController projectController;
-    private GeneratorsTabController additionalTabController;
+    private GeneratorsTabController<?> additionalTabController;
 
     private TopGeneratorPanel generationPanel;
 
-    public GeneratorsTab(ProjectController projectController, GeneratorsTabController additionalTabController, String icon, String text) {
+    public GeneratorsTab(ProjectController projectController, GeneratorsTabController<?> additionalTabController, String icon, String text) {
         this.projectController = projectController;
         this.additionalTabController = additionalTabController;
         this.generationPanel = new TopGeneratorPanel(icon);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTabController.java
index d3665cd..deea65d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTabController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTabController.java
@@ -27,10 +27,10 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
 import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.gen.CgenConfiguration;
+import org.apache.cayenne.configuration.event.DataMapEvent;
+import org.apache.cayenne.configuration.event.DataMapListener;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.dialog.ErrorDebugDialog;
 import org.apache.cayenne.project.Project;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,28 +38,34 @@ import org.slf4j.LoggerFactory;
 /**
  * @since 4.1
  */
-public abstract class GeneratorsTabController {
+public abstract class GeneratorsTabController<T> implements DataMapListener {
 
-    public static Logger logObj = LoggerFactory.getLogger(ErrorDebugDialog.class);
-    public ProjectController projectController;
-    public GeneratorsTab view;
-    private Class type;
+    protected final static Logger LOGGER = LoggerFactory.getLogger(GeneratorsTabController.class);
 
-    public ConcurrentMap<DataMap, GeneratorsPanel> generatorsPanels;
-    public Set<DataMap> selectedDataMaps;
+    private final ProjectController projectController;
+    private final ConcurrentMap<DataMap, GeneratorsPanel> generatorsPanels;
+    private final Set<DataMap> selectedDataMaps;
+    private final Class<T> type;
+    private final boolean selectAllByDefault;
 
-    public GeneratorsTabController(Class type, ProjectController projectController) {
-        this.type = type;
+    protected GeneratorsTab view;
+
+    public GeneratorsTabController(ProjectController projectController, Class<T> type, boolean selectAllByDefault) {
         this.generatorsPanels = new ConcurrentHashMap<>();
         this.selectedDataMaps = new HashSet<>();
+        this.type = type;
+        this.selectAllByDefault = selectAllByDefault;
         this.projectController = projectController;
+        this.projectController.addDataMapListener(this);
     }
 
-    public String icon;
+    private boolean isSelectAllChecked() {
+        return view.getGenerationPanel().getSelectAll().isSelected();
+    }
 
     public abstract void runGenerators(Set<DataMap> dataMaps);
 
-    public void createPanels(){
+    void createPanels(){
         Collection<DataMap> dataMaps = getDataMaps();
         refreshSelectedMaps(dataMaps);
         generatorsPanels.clear();
@@ -74,7 +80,7 @@ public abstract class GeneratorsTabController {
                 currPanel.getCheckConfig().setSelected(true);
             }
         });
-        if(selectedDataMaps.isEmpty() && type == CgenConfiguration.class) {
+        if(selectedDataMaps.isEmpty() && selectAllByDefault) {
             GeneratorsTab.TopGeneratorPanel topGeneratorPanel = view.getGenerationPanel();
             topGeneratorPanel.getSelectAll().setSelected(true);
             topGeneratorPanel.getGenerateAll().setEnabled(true);
@@ -122,7 +128,7 @@ public abstract class GeneratorsTabController {
     public abstract void showConfig(DataMap dataMap);
 
     private void setGenerateButtonDisabled() {
-        if(selectedDataMaps.size() == 0) {
+        if(selectedDataMaps.isEmpty()) {
             view.getGenerationPanel().getGenerateAll().setEnabled(false);
         } else {
             view.getGenerationPanel().getGenerateAll().setEnabled(true);
@@ -153,4 +159,25 @@ public abstract class GeneratorsTabController {
     private void refreshSelectedMaps(Collection<DataMap> dataMaps) {
         selectedDataMaps.removeIf(dataMap -> !dataMaps.contains(dataMap));
     }
+
+    @Override
+    public void dataMapAdded(DataMapEvent e) {
+        GeneratorsPanel generatorPanel = new GeneratorsPanel(e.getDataMap(), "icon-datamap.png", type);
+        initListenersForPanel(generatorPanel);
+        generatorsPanels.put(e.getDataMap(), generatorPanel);
+        if(isSelectAllChecked()) {
+            generatorPanel.getCheckConfig().setSelected(true);
+            selectedDataMaps.add(e.getDataMap());
+        }
+    }
+
+    @Override
+    public void dataMapRemoved(DataMapEvent e) {
+        selectedDataMaps.remove(e.getDataMap());
+        generatorsPanels.remove(e.getDataMap());
+    }
+
+    @Override
+    public void dataMapChanged(DataMapEvent e) {
+    }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
index f7d7dc4..7d185d3 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
@@ -19,6 +19,7 @@
 
 package org.apache.cayenne.modeler.editor.cgen.domain;
 
+import org.apache.cayenne.gen.CgenConfiguration;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.editor.GeneratorsTab;
 import org.apache.cayenne.modeler.editor.GeneratorsTabController;
@@ -30,7 +31,7 @@ import javax.swing.JOptionPane;
  */
 public class CgenTab extends GeneratorsTab {
 
-    public CgenTab(ProjectController projectController, GeneratorsTabController additionalTabController) {
+    public CgenTab(ProjectController projectController, GeneratorsTabController<CgenConfiguration> additionalTabController) {
         super(projectController, additionalTabController, "icon-gen_java.png", "Run class generation on selected datamaps.");
     }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
index 4fe28e0..f8dcaa3 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
@@ -45,10 +45,10 @@ import org.apache.cayenne.tools.CayenneToolsModuleProvider;
 /**
  * @since 4.1
  */
-public class CgenTabController extends GeneratorsTabController {
+public class CgenTabController extends GeneratorsTabController<CgenConfiguration> {
 
     public CgenTabController(ProjectController projectController) {
-        super(CgenConfiguration.class, projectController);
+        super(projectController, CgenConfiguration.class, true);
         this.view = new CgenTab(projectController, this);
     }
 
@@ -73,7 +73,7 @@ public class CgenTabController extends GeneratorsTabController {
                 classGenerationAction.prepareArtifacts();
                 classGenerationAction.execute();
             } catch (Exception e) {
-                logObj.error("Error generating classes", e);
+                LOGGER.error("Error generating classes", e);
                 generationFail = true;
                 ((CgenTab)view).showErrorMessage(e.getMessage());
             }
@@ -89,26 +89,19 @@ public class CgenTabController extends GeneratorsTabController {
         cgenConfiguration.setDataMap(dataMap);
         Path basePath = Paths.get(ModelerUtil.initOutputFolder());
 
-        // no destination folder
-        if (basePath == null) {
-            JOptionPane.showMessageDialog(this.getView(), "Select directory for source files.");
-            return null;
-        }
-
         // no such folder
         if (!Files.exists(basePath)) {
             try {
                 Files.createDirectories(basePath);
             } catch (IOException e) {
-                JOptionPane.showMessageDialog(this.getView(), "Can't create directory. " +
-                        ". Select a different one.");
+                JOptionPane.showMessageDialog(getView(), "Can't create directory. Select a different one.");
                 return null;
             }
         }
 
         // not a directory
         if (!Files.isDirectory(basePath)) {
-            JOptionPane.showMessageDialog(this.getView(), basePath + " is not a valid directory.");
+            JOptionPane.showMessageDialog(getView(), basePath + " is not a valid directory.");
             return null;
         }
 
@@ -124,7 +117,8 @@ public class CgenTabController extends GeneratorsTabController {
 
     public void showConfig(DataMap dataMap) {
         if (dataMap != null) {
-            projectController.fireDataMapDisplayEvent(new DataMapDisplayEvent(this.getView(), dataMap, dataMap.getDataChannelDescriptor()));
+            DataMapDisplayEvent event = new DataMapDisplayEvent(getView(), dataMap, dataMap.getDataChannelDescriptor());
+            getProjectController().fireDataMapDisplayEvent(event);
         }
     }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTab.java
index 3b86719..40f6aff 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTab.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.editor.dbimport.domain;
 
+import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.editor.GeneratorsTab;
 import org.apache.cayenne.modeler.editor.GeneratorsTabController;
@@ -27,7 +28,7 @@ import org.apache.cayenne.modeler.editor.GeneratorsTabController;
  */
 public class DbImportTab extends GeneratorsTab {
 
-    public DbImportTab(ProjectController projectController, GeneratorsTabController additionalTabController) {
+    public DbImportTab(ProjectController projectController, GeneratorsTabController<ReverseEngineering> additionalTabController) {
         super(projectController, additionalTabController, "icon-dbi-runImport.png", "Run reverse engineering on selected datamaps.");
     }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java
index b5b9530..a45ef70 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java
@@ -31,10 +31,10 @@ import org.apache.cayenne.modeler.event.DataMapDisplayEvent;
 /**
  * @since 4.1
  */
-public class DbImportTabController extends GeneratorsTabController {
+public class DbImportTabController extends GeneratorsTabController<ReverseEngineering> {
 
     public DbImportTabController(ProjectController projectController) {
-        super(ReverseEngineering.class, projectController);
+        super(projectController, ReverseEngineering.class, false);
         this.view = new DbImportTab(projectController, this);
     }
 
@@ -52,7 +52,8 @@ public class DbImportTabController extends GeneratorsTabController {
     @Override
     public void showConfig(DataMap dataMap) {
         if (dataMap != null) {
-            projectController.fireDataMapDisplayEvent(new DataMapDisplayEvent(this.getView(), dataMap, dataMap.getDataChannelDescriptor()));
+            DataMapDisplayEvent event = new DataMapDisplayEvent(getView(), dataMap, dataMap.getDataChannelDescriptor());
+            getProjectController().fireDataMapDisplayEvent(event);
         }
     }
 }


[cayenne] 02/03: CAY-2615 Saving project throws IllegalArgumentException

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 0ec693bf64dfd1c81868b3d5a974aeabc4895658
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed Sep 11 11:28:12 2019 +0300

    CAY-2615 Saving project throws IllegalArgumentException
---
 .../src/main/java/org/apache/cayenne/gen/CgenConfiguration.java  | 9 +++++++--
 .../main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java  | 8 +++++---
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java
index 71055f0..2f6e2e4 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java
@@ -166,8 +166,13 @@ public class CgenConfiguration implements Serializable, XMLSerializable {
         this.relPath = relPath;
     }
 
-    public void setRelPath(String path) {
-		this.relPath = rootPath != null ? rootPath.relativize(Paths.get(path)) : Paths.get(path);
+    public void setRelPath(String pathStr) {
+        Path path = Paths.get(pathStr);
+        if(path.isAbsolute() && rootPath != null) {
+            this.relPath = rootPath.relativize(path);
+        } else {
+            this.relPath = path;
+        }
 	}
 
     public boolean isOverwrite() {
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java
index fc75f06..b616b10 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java
@@ -55,7 +55,6 @@ public class CgenSaverDelegate extends BaseSaverDelegate{
         if(cgenConfiguration.getRootPath() == null) {
             return;
         }
-        Path prevPath = cgenConfiguration.buildPath();
         URL url = getBaseDirectory().getURL();
         if(url != null) {
             Path resourcePath;
@@ -68,9 +67,12 @@ public class CgenSaverDelegate extends BaseSaverDelegate{
                 resourcePath = resourcePath.getParent();
             }
             cgenConfiguration.setRootPath(resourcePath);
+            Path prevPath = cgenConfiguration.buildPath();
             if(prevPath != null) {
-                Path relPath = resourcePath.relativize(prevPath).normalize();
-                cgenConfiguration.setRelPath(relPath);
+                if(prevPath.isAbsolute()) {
+                    Path relPath = resourcePath.relativize(prevPath).normalize();
+                    cgenConfiguration.setRelPath(relPath);
+                }
                 Path templatePath = Paths.get(cgenConfiguration.getTemplate());
                 if(templatePath.isAbsolute()) {
                     cgenConfiguration.setTemplate(resourcePath.relativize(templatePath).normalize().toString());